evo360-types 1.3.750 → 1.3.752
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/apps/evo-csq/zod-schemas.d.ts +2 -2
- package/dist/apps/evo-hub-ia/v1/zod-schemas.d.ts +140 -47
- package/dist/apps/evo-hub-ia/v1/zod-schemas.js +40 -13
- package/dist/apps/evo-hub-ia/v1/zod-schemas.ts +44 -12
- package/dist/apps/evo-people/zod-schemas.d.ts +270 -0
- package/dist/apps/evo-people/zod-schemas.js +9 -1
- package/dist/apps/evo-people/zod-schemas.ts +9 -0
- package/dist/types/evo-people/index.d.ts +20 -0
- package/dist/types/evo-people/index.ts +17 -0
- package/dist/types/evo-reports/index.d.ts +3 -2
- package/dist/types/evo-reports/index.ts +3 -2
- package/package.json +1 -1
|
@@ -13127,6 +13127,7 @@ export declare const zCsqDryRunResultSchema: z.ZodObject<{
|
|
|
13127
13127
|
duration_ms: z.ZodNumber;
|
|
13128
13128
|
}, "strip", z.ZodTypeAny, {
|
|
13129
13129
|
duration_ms: number;
|
|
13130
|
+
model: string | null;
|
|
13130
13131
|
lead_id: string | null;
|
|
13131
13132
|
outcome: string;
|
|
13132
13133
|
channel_id: string;
|
|
@@ -13235,7 +13236,6 @@ export declare const zCsqDryRunResultSchema: z.ZodObject<{
|
|
|
13235
13236
|
error: z.ZodOptional<z.ZodString>;
|
|
13236
13237
|
}, z.ZodTypeAny, "passthrough"> | null;
|
|
13237
13238
|
evaluation_id: string | null;
|
|
13238
|
-
model: string | null;
|
|
13239
13239
|
cost_usd_est: number | null;
|
|
13240
13240
|
llm_provider: string | null;
|
|
13241
13241
|
llm_connection_id: string | null;
|
|
@@ -13245,6 +13245,7 @@ export declare const zCsqDryRunResultSchema: z.ZodObject<{
|
|
|
13245
13245
|
triage_mode: "skip_llm" | "full_review" | null;
|
|
13246
13246
|
}, {
|
|
13247
13247
|
duration_ms: number;
|
|
13248
|
+
model: string | null;
|
|
13248
13249
|
lead_id: string | null;
|
|
13249
13250
|
outcome: string;
|
|
13250
13251
|
channel_id: string;
|
|
@@ -13353,7 +13354,6 @@ export declare const zCsqDryRunResultSchema: z.ZodObject<{
|
|
|
13353
13354
|
error: z.ZodOptional<z.ZodString>;
|
|
13354
13355
|
}, z.ZodTypeAny, "passthrough"> | null;
|
|
13355
13356
|
evaluation_id: string | null;
|
|
13356
|
-
model: string | null;
|
|
13357
13357
|
cost_usd_est: number | null;
|
|
13358
13358
|
llm_provider: string | null;
|
|
13359
13359
|
llm_connection_id: string | null;
|
|
@@ -1628,16 +1628,15 @@ export declare const HUBIA_VOICE_REPLY_ELEVENLABS_SPEED: {
|
|
|
1628
1628
|
readonly min: 0.7;
|
|
1629
1629
|
readonly max: 1.2;
|
|
1630
1630
|
};
|
|
1631
|
-
/**
|
|
1632
|
-
*
|
|
1633
|
-
export declare const
|
|
1634
|
-
|
|
1635
|
-
/** Ausente = `openai` (bindings gravados antes da F1.1). */
|
|
1631
|
+
/** feat-303 F2.1: perfil de voz (fica no departamento, `voice_profile`). Sem `.default()`:
|
|
1632
|
+
* ler um departamento não pode "ganhar" uma voz que ninguém configurou. */
|
|
1633
|
+
export declare const zHubiaVoiceProfileSchema: z.ZodObject<{
|
|
1634
|
+
/** Ausente = `openai` quando há `voice`; sem provider nem voice = padrão da plataforma. */
|
|
1636
1635
|
provider: z.ZodOptional<z.ZodEnum<["openai", "elevenlabs"]>>;
|
|
1637
1636
|
/** Ausente = `HUBIA_VOICE_REPLY_DEFAULT_MODEL[provider]`. */
|
|
1638
1637
|
model: z.ZodOptional<z.ZodString>;
|
|
1639
1638
|
/** OpenAI: nome da voz (`coral`). ElevenLabs: `voice_id` (`RGymW84CSmfVugnA5tvA`). */
|
|
1640
|
-
voice: z.
|
|
1639
|
+
voice: z.ZodOptional<z.ZodString>;
|
|
1641
1640
|
/** Tom/estilo da fala ("cordial, ritmo calmo"). Só a OpenAI usa. */
|
|
1642
1641
|
instructions: z.ZodOptional<z.ZodString>;
|
|
1643
1642
|
/** 1.0 = normal. Na ElevenLabs o runtime limita a 0.7–1.2. */
|
|
@@ -1656,30 +1655,118 @@ export declare const zHubiaVoiceReplySchema: z.ZodObject<{
|
|
|
1656
1655
|
similarity_boost?: number | undefined;
|
|
1657
1656
|
style?: number | undefined;
|
|
1658
1657
|
}>>;
|
|
1658
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
1659
|
+
/** Ausente = `openai` quando há `voice`; sem provider nem voice = padrão da plataforma. */
|
|
1660
|
+
provider: z.ZodOptional<z.ZodEnum<["openai", "elevenlabs"]>>;
|
|
1661
|
+
/** Ausente = `HUBIA_VOICE_REPLY_DEFAULT_MODEL[provider]`. */
|
|
1662
|
+
model: z.ZodOptional<z.ZodString>;
|
|
1663
|
+
/** OpenAI: nome da voz (`coral`). ElevenLabs: `voice_id` (`RGymW84CSmfVugnA5tvA`). */
|
|
1664
|
+
voice: z.ZodOptional<z.ZodString>;
|
|
1665
|
+
/** Tom/estilo da fala ("cordial, ritmo calmo"). Só a OpenAI usa. */
|
|
1666
|
+
instructions: z.ZodOptional<z.ZodString>;
|
|
1667
|
+
/** 1.0 = normal. Na ElevenLabs o runtime limita a 0.7–1.2. */
|
|
1668
|
+
speed: z.ZodOptional<z.ZodNumber>;
|
|
1669
|
+
/** Ajustes da voz na ElevenLabs (`voice_settings`). Ausente = os da voz. */
|
|
1670
|
+
elevenlabs: z.ZodOptional<z.ZodObject<{
|
|
1671
|
+
stability: z.ZodOptional<z.ZodNumber>;
|
|
1672
|
+
similarity_boost: z.ZodOptional<z.ZodNumber>;
|
|
1673
|
+
style: z.ZodOptional<z.ZodNumber>;
|
|
1674
|
+
}, "strip", z.ZodTypeAny, {
|
|
1675
|
+
stability?: number | undefined;
|
|
1676
|
+
similarity_boost?: number | undefined;
|
|
1677
|
+
style?: number | undefined;
|
|
1678
|
+
}, {
|
|
1679
|
+
stability?: number | undefined;
|
|
1680
|
+
similarity_boost?: number | undefined;
|
|
1681
|
+
style?: number | undefined;
|
|
1682
|
+
}>>;
|
|
1683
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
1684
|
+
/** Ausente = `openai` quando há `voice`; sem provider nem voice = padrão da plataforma. */
|
|
1685
|
+
provider: z.ZodOptional<z.ZodEnum<["openai", "elevenlabs"]>>;
|
|
1686
|
+
/** Ausente = `HUBIA_VOICE_REPLY_DEFAULT_MODEL[provider]`. */
|
|
1687
|
+
model: z.ZodOptional<z.ZodString>;
|
|
1688
|
+
/** OpenAI: nome da voz (`coral`). ElevenLabs: `voice_id` (`RGymW84CSmfVugnA5tvA`). */
|
|
1689
|
+
voice: z.ZodOptional<z.ZodString>;
|
|
1690
|
+
/** Tom/estilo da fala ("cordial, ritmo calmo"). Só a OpenAI usa. */
|
|
1691
|
+
instructions: z.ZodOptional<z.ZodString>;
|
|
1692
|
+
/** 1.0 = normal. Na ElevenLabs o runtime limita a 0.7–1.2. */
|
|
1693
|
+
speed: z.ZodOptional<z.ZodNumber>;
|
|
1694
|
+
/** Ajustes da voz na ElevenLabs (`voice_settings`). Ausente = os da voz. */
|
|
1695
|
+
elevenlabs: z.ZodOptional<z.ZodObject<{
|
|
1696
|
+
stability: z.ZodOptional<z.ZodNumber>;
|
|
1697
|
+
similarity_boost: z.ZodOptional<z.ZodNumber>;
|
|
1698
|
+
style: z.ZodOptional<z.ZodNumber>;
|
|
1699
|
+
}, "strip", z.ZodTypeAny, {
|
|
1700
|
+
stability?: number | undefined;
|
|
1701
|
+
similarity_boost?: number | undefined;
|
|
1702
|
+
style?: number | undefined;
|
|
1703
|
+
}, {
|
|
1704
|
+
stability?: number | undefined;
|
|
1705
|
+
similarity_boost?: number | undefined;
|
|
1706
|
+
style?: number | undefined;
|
|
1707
|
+
}>>;
|
|
1708
|
+
}, z.ZodTypeAny, "passthrough">>;
|
|
1709
|
+
export type IHubiaVoiceProfile = z.infer<typeof zHubiaVoiceProfileSchema>;
|
|
1710
|
+
/** Q16: voz padrão da plataforma (Roberta), quando nem o departamento nem o binding legado definem voz. */
|
|
1711
|
+
export declare const HUBIA_VOICE_PLATFORM_DEFAULT_PROFILE: {
|
|
1712
|
+
readonly provider: "elevenlabs";
|
|
1713
|
+
readonly voice: "RGymW84CSmfVugnA5tvA";
|
|
1714
|
+
readonly model: "eleven_v4";
|
|
1715
|
+
};
|
|
1716
|
+
/** Teto do "Enviar como áudio" do atendente (3 pedaços × 1.500). */
|
|
1717
|
+
export declare const HUBIA_HUMAN_TTS_MAX_CHARS = 4500;
|
|
1718
|
+
/** Liga a resposta em áudio da HubIA no binding. QUANDO usar áudio é regra do prompt do
|
|
1719
|
+
* binding (o LLM decide por turno). A voz vem do departamento (`voice_profile`). */
|
|
1720
|
+
export declare const zHubiaVoiceReplySchema: z.ZodObject<{
|
|
1721
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
1722
|
+
/** @deprecated F2.1: a voz vem do departamento (`voice_profile`); lido só como legado. */
|
|
1723
|
+
provider: z.ZodOptional<z.ZodEnum<["openai", "elevenlabs"]>>;
|
|
1724
|
+
/** @deprecated F2.1: ver `provider`. */
|
|
1725
|
+
model: z.ZodOptional<z.ZodString>;
|
|
1726
|
+
/** @deprecated F2.1: ver `provider`. */
|
|
1727
|
+
voice: z.ZodOptional<z.ZodString>;
|
|
1728
|
+
/** @deprecated F2.1: ver `provider`. */
|
|
1729
|
+
instructions: z.ZodOptional<z.ZodString>;
|
|
1730
|
+
/** @deprecated F2.1: ver `provider`. */
|
|
1731
|
+
speed: z.ZodOptional<z.ZodNumber>;
|
|
1732
|
+
/** @deprecated F2.1: ver `provider`. */
|
|
1733
|
+
elevenlabs: z.ZodOptional<z.ZodObject<{
|
|
1734
|
+
stability: z.ZodOptional<z.ZodNumber>;
|
|
1735
|
+
similarity_boost: z.ZodOptional<z.ZodNumber>;
|
|
1736
|
+
style: z.ZodOptional<z.ZodNumber>;
|
|
1737
|
+
}, "strip", z.ZodTypeAny, {
|
|
1738
|
+
stability?: number | undefined;
|
|
1739
|
+
similarity_boost?: number | undefined;
|
|
1740
|
+
style?: number | undefined;
|
|
1741
|
+
}, {
|
|
1742
|
+
stability?: number | undefined;
|
|
1743
|
+
similarity_boost?: number | undefined;
|
|
1744
|
+
style?: number | undefined;
|
|
1745
|
+
}>>;
|
|
1659
1746
|
}, "strip", z.ZodTypeAny, {
|
|
1660
1747
|
enabled: boolean;
|
|
1661
|
-
voice: string;
|
|
1662
1748
|
provider?: "openai" | "elevenlabs" | undefined;
|
|
1663
|
-
model?: string | undefined;
|
|
1664
1749
|
elevenlabs?: {
|
|
1665
1750
|
stability?: number | undefined;
|
|
1666
1751
|
similarity_boost?: number | undefined;
|
|
1667
1752
|
style?: number | undefined;
|
|
1668
1753
|
} | undefined;
|
|
1754
|
+
model?: string | undefined;
|
|
1755
|
+
voice?: string | undefined;
|
|
1669
1756
|
instructions?: string | undefined;
|
|
1670
1757
|
speed?: number | undefined;
|
|
1671
1758
|
}, {
|
|
1672
|
-
enabled?: boolean | undefined;
|
|
1673
1759
|
provider?: "openai" | "elevenlabs" | undefined;
|
|
1674
|
-
model?: string | undefined;
|
|
1675
|
-
voice?: string | undefined;
|
|
1676
1760
|
elevenlabs?: {
|
|
1677
1761
|
stability?: number | undefined;
|
|
1678
1762
|
similarity_boost?: number | undefined;
|
|
1679
1763
|
style?: number | undefined;
|
|
1680
1764
|
} | undefined;
|
|
1765
|
+
model?: string | undefined;
|
|
1766
|
+
voice?: string | undefined;
|
|
1681
1767
|
instructions?: string | undefined;
|
|
1682
1768
|
speed?: number | undefined;
|
|
1769
|
+
enabled?: boolean | undefined;
|
|
1683
1770
|
}>;
|
|
1684
1771
|
export type IHubiaVoiceReply = z.infer<typeof zHubiaVoiceReplySchema>;
|
|
1685
1772
|
export declare const zHubiaResponseModeSchema: z.ZodEnum<["text", "audio"]>;
|
|
@@ -1752,6 +1839,8 @@ export declare const zHubiaSuggestionOutcomeSchema: z.ZodObject<{
|
|
|
1752
1839
|
export type IHubiaSuggestionOutcome = z.infer<typeof zHubiaSuggestionOutcomeSchema>;
|
|
1753
1840
|
/** Metadados da nota de voz gerada pela HubIA, gravados na mensagem. */
|
|
1754
1841
|
export declare const zHubiaTtsMessageMetaSchema: z.ZodObject<{
|
|
1842
|
+
/** F2.1: quem pediu a síntese. Ausente = `hubia`. */
|
|
1843
|
+
origin: z.ZodOptional<z.ZodEnum<["hubia", "human"]>>;
|
|
1755
1844
|
/** F1.1. Ausente nas mensagens gravadas antes = `openai`. */
|
|
1756
1845
|
provider: z.ZodOptional<z.ZodEnum<["openai", "elevenlabs"]>>;
|
|
1757
1846
|
model: z.ZodString;
|
|
@@ -1761,6 +1850,8 @@ export declare const zHubiaTtsMessageMetaSchema: z.ZodObject<{
|
|
|
1761
1850
|
duration_seconds: z.ZodNullable<z.ZodNumber>;
|
|
1762
1851
|
execution_id: z.ZodOptional<z.ZodString>;
|
|
1763
1852
|
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
1853
|
+
/** F2.1: quem pediu a síntese. Ausente = `hubia`. */
|
|
1854
|
+
origin: z.ZodOptional<z.ZodEnum<["hubia", "human"]>>;
|
|
1764
1855
|
/** F1.1. Ausente nas mensagens gravadas antes = `openai`. */
|
|
1765
1856
|
provider: z.ZodOptional<z.ZodEnum<["openai", "elevenlabs"]>>;
|
|
1766
1857
|
model: z.ZodString;
|
|
@@ -1770,6 +1861,8 @@ export declare const zHubiaTtsMessageMetaSchema: z.ZodObject<{
|
|
|
1770
1861
|
duration_seconds: z.ZodNullable<z.ZodNumber>;
|
|
1771
1862
|
execution_id: z.ZodOptional<z.ZodString>;
|
|
1772
1863
|
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
1864
|
+
/** F2.1: quem pediu a síntese. Ausente = `hubia`. */
|
|
1865
|
+
origin: z.ZodOptional<z.ZodEnum<["hubia", "human"]>>;
|
|
1773
1866
|
/** F1.1. Ausente nas mensagens gravadas antes = `openai`. */
|
|
1774
1867
|
provider: z.ZodOptional<z.ZodEnum<["openai", "elevenlabs"]>>;
|
|
1775
1868
|
model: z.ZodString;
|
|
@@ -2550,17 +2643,17 @@ export declare const zAiBindingSchema: z.ZodObject<{
|
|
|
2550
2643
|
* estruturado (`respond_to_contact`) ligado no canal. */
|
|
2551
2644
|
voice_reply: z.ZodOptional<z.ZodObject<{
|
|
2552
2645
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
2553
|
-
/**
|
|
2646
|
+
/** @deprecated F2.1: a voz vem do departamento (`voice_profile`); lido só como legado. */
|
|
2554
2647
|
provider: z.ZodOptional<z.ZodEnum<["openai", "elevenlabs"]>>;
|
|
2555
|
-
/**
|
|
2648
|
+
/** @deprecated F2.1: ver `provider`. */
|
|
2556
2649
|
model: z.ZodOptional<z.ZodString>;
|
|
2557
|
-
/**
|
|
2558
|
-
voice: z.
|
|
2559
|
-
/**
|
|
2650
|
+
/** @deprecated F2.1: ver `provider`. */
|
|
2651
|
+
voice: z.ZodOptional<z.ZodString>;
|
|
2652
|
+
/** @deprecated F2.1: ver `provider`. */
|
|
2560
2653
|
instructions: z.ZodOptional<z.ZodString>;
|
|
2561
|
-
/**
|
|
2654
|
+
/** @deprecated F2.1: ver `provider`. */
|
|
2562
2655
|
speed: z.ZodOptional<z.ZodNumber>;
|
|
2563
|
-
/**
|
|
2656
|
+
/** @deprecated F2.1: ver `provider`. */
|
|
2564
2657
|
elevenlabs: z.ZodOptional<z.ZodObject<{
|
|
2565
2658
|
stability: z.ZodOptional<z.ZodNumber>;
|
|
2566
2659
|
similarity_boost: z.ZodOptional<z.ZodNumber>;
|
|
@@ -2576,28 +2669,28 @@ export declare const zAiBindingSchema: z.ZodObject<{
|
|
|
2576
2669
|
}>>;
|
|
2577
2670
|
}, "strip", z.ZodTypeAny, {
|
|
2578
2671
|
enabled: boolean;
|
|
2579
|
-
voice: string;
|
|
2580
2672
|
provider?: "openai" | "elevenlabs" | undefined;
|
|
2581
|
-
model?: string | undefined;
|
|
2582
2673
|
elevenlabs?: {
|
|
2583
2674
|
stability?: number | undefined;
|
|
2584
2675
|
similarity_boost?: number | undefined;
|
|
2585
2676
|
style?: number | undefined;
|
|
2586
2677
|
} | undefined;
|
|
2678
|
+
model?: string | undefined;
|
|
2679
|
+
voice?: string | undefined;
|
|
2587
2680
|
instructions?: string | undefined;
|
|
2588
2681
|
speed?: number | undefined;
|
|
2589
2682
|
}, {
|
|
2590
|
-
enabled?: boolean | undefined;
|
|
2591
2683
|
provider?: "openai" | "elevenlabs" | undefined;
|
|
2592
|
-
model?: string | undefined;
|
|
2593
|
-
voice?: string | undefined;
|
|
2594
2684
|
elevenlabs?: {
|
|
2595
2685
|
stability?: number | undefined;
|
|
2596
2686
|
similarity_boost?: number | undefined;
|
|
2597
2687
|
style?: number | undefined;
|
|
2598
2688
|
} | undefined;
|
|
2689
|
+
model?: string | undefined;
|
|
2690
|
+
voice?: string | undefined;
|
|
2599
2691
|
instructions?: string | undefined;
|
|
2600
2692
|
speed?: number | undefined;
|
|
2693
|
+
enabled?: boolean | undefined;
|
|
2601
2694
|
}>>;
|
|
2602
2695
|
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
2603
2696
|
id: z.ZodString;
|
|
@@ -3369,17 +3462,17 @@ export declare const zAiBindingSchema: z.ZodObject<{
|
|
|
3369
3462
|
* estruturado (`respond_to_contact`) ligado no canal. */
|
|
3370
3463
|
voice_reply: z.ZodOptional<z.ZodObject<{
|
|
3371
3464
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
3372
|
-
/**
|
|
3465
|
+
/** @deprecated F2.1: a voz vem do departamento (`voice_profile`); lido só como legado. */
|
|
3373
3466
|
provider: z.ZodOptional<z.ZodEnum<["openai", "elevenlabs"]>>;
|
|
3374
|
-
/**
|
|
3467
|
+
/** @deprecated F2.1: ver `provider`. */
|
|
3375
3468
|
model: z.ZodOptional<z.ZodString>;
|
|
3376
|
-
/**
|
|
3377
|
-
voice: z.
|
|
3378
|
-
/**
|
|
3469
|
+
/** @deprecated F2.1: ver `provider`. */
|
|
3470
|
+
voice: z.ZodOptional<z.ZodString>;
|
|
3471
|
+
/** @deprecated F2.1: ver `provider`. */
|
|
3379
3472
|
instructions: z.ZodOptional<z.ZodString>;
|
|
3380
|
-
/**
|
|
3473
|
+
/** @deprecated F2.1: ver `provider`. */
|
|
3381
3474
|
speed: z.ZodOptional<z.ZodNumber>;
|
|
3382
|
-
/**
|
|
3475
|
+
/** @deprecated F2.1: ver `provider`. */
|
|
3383
3476
|
elevenlabs: z.ZodOptional<z.ZodObject<{
|
|
3384
3477
|
stability: z.ZodOptional<z.ZodNumber>;
|
|
3385
3478
|
similarity_boost: z.ZodOptional<z.ZodNumber>;
|
|
@@ -3395,28 +3488,28 @@ export declare const zAiBindingSchema: z.ZodObject<{
|
|
|
3395
3488
|
}>>;
|
|
3396
3489
|
}, "strip", z.ZodTypeAny, {
|
|
3397
3490
|
enabled: boolean;
|
|
3398
|
-
voice: string;
|
|
3399
3491
|
provider?: "openai" | "elevenlabs" | undefined;
|
|
3400
|
-
model?: string | undefined;
|
|
3401
3492
|
elevenlabs?: {
|
|
3402
3493
|
stability?: number | undefined;
|
|
3403
3494
|
similarity_boost?: number | undefined;
|
|
3404
3495
|
style?: number | undefined;
|
|
3405
3496
|
} | undefined;
|
|
3497
|
+
model?: string | undefined;
|
|
3498
|
+
voice?: string | undefined;
|
|
3406
3499
|
instructions?: string | undefined;
|
|
3407
3500
|
speed?: number | undefined;
|
|
3408
3501
|
}, {
|
|
3409
|
-
enabled?: boolean | undefined;
|
|
3410
3502
|
provider?: "openai" | "elevenlabs" | undefined;
|
|
3411
|
-
model?: string | undefined;
|
|
3412
|
-
voice?: string | undefined;
|
|
3413
3503
|
elevenlabs?: {
|
|
3414
3504
|
stability?: number | undefined;
|
|
3415
3505
|
similarity_boost?: number | undefined;
|
|
3416
3506
|
style?: number | undefined;
|
|
3417
3507
|
} | undefined;
|
|
3508
|
+
model?: string | undefined;
|
|
3509
|
+
voice?: string | undefined;
|
|
3418
3510
|
instructions?: string | undefined;
|
|
3419
3511
|
speed?: number | undefined;
|
|
3512
|
+
enabled?: boolean | undefined;
|
|
3420
3513
|
}>>;
|
|
3421
3514
|
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
3422
3515
|
id: z.ZodString;
|
|
@@ -4188,17 +4281,17 @@ export declare const zAiBindingSchema: z.ZodObject<{
|
|
|
4188
4281
|
* estruturado (`respond_to_contact`) ligado no canal. */
|
|
4189
4282
|
voice_reply: z.ZodOptional<z.ZodObject<{
|
|
4190
4283
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
4191
|
-
/**
|
|
4284
|
+
/** @deprecated F2.1: a voz vem do departamento (`voice_profile`); lido só como legado. */
|
|
4192
4285
|
provider: z.ZodOptional<z.ZodEnum<["openai", "elevenlabs"]>>;
|
|
4193
|
-
/**
|
|
4286
|
+
/** @deprecated F2.1: ver `provider`. */
|
|
4194
4287
|
model: z.ZodOptional<z.ZodString>;
|
|
4195
|
-
/**
|
|
4196
|
-
voice: z.
|
|
4197
|
-
/**
|
|
4288
|
+
/** @deprecated F2.1: ver `provider`. */
|
|
4289
|
+
voice: z.ZodOptional<z.ZodString>;
|
|
4290
|
+
/** @deprecated F2.1: ver `provider`. */
|
|
4198
4291
|
instructions: z.ZodOptional<z.ZodString>;
|
|
4199
|
-
/**
|
|
4292
|
+
/** @deprecated F2.1: ver `provider`. */
|
|
4200
4293
|
speed: z.ZodOptional<z.ZodNumber>;
|
|
4201
|
-
/**
|
|
4294
|
+
/** @deprecated F2.1: ver `provider`. */
|
|
4202
4295
|
elevenlabs: z.ZodOptional<z.ZodObject<{
|
|
4203
4296
|
stability: z.ZodOptional<z.ZodNumber>;
|
|
4204
4297
|
similarity_boost: z.ZodOptional<z.ZodNumber>;
|
|
@@ -4214,28 +4307,28 @@ export declare const zAiBindingSchema: z.ZodObject<{
|
|
|
4214
4307
|
}>>;
|
|
4215
4308
|
}, "strip", z.ZodTypeAny, {
|
|
4216
4309
|
enabled: boolean;
|
|
4217
|
-
voice: string;
|
|
4218
4310
|
provider?: "openai" | "elevenlabs" | undefined;
|
|
4219
|
-
model?: string | undefined;
|
|
4220
4311
|
elevenlabs?: {
|
|
4221
4312
|
stability?: number | undefined;
|
|
4222
4313
|
similarity_boost?: number | undefined;
|
|
4223
4314
|
style?: number | undefined;
|
|
4224
4315
|
} | undefined;
|
|
4316
|
+
model?: string | undefined;
|
|
4317
|
+
voice?: string | undefined;
|
|
4225
4318
|
instructions?: string | undefined;
|
|
4226
4319
|
speed?: number | undefined;
|
|
4227
4320
|
}, {
|
|
4228
|
-
enabled?: boolean | undefined;
|
|
4229
4321
|
provider?: "openai" | "elevenlabs" | undefined;
|
|
4230
|
-
model?: string | undefined;
|
|
4231
|
-
voice?: string | undefined;
|
|
4232
4322
|
elevenlabs?: {
|
|
4233
4323
|
stability?: number | undefined;
|
|
4234
4324
|
similarity_boost?: number | undefined;
|
|
4235
4325
|
style?: number | undefined;
|
|
4236
4326
|
} | undefined;
|
|
4327
|
+
model?: string | undefined;
|
|
4328
|
+
voice?: string | undefined;
|
|
4237
4329
|
instructions?: string | undefined;
|
|
4238
4330
|
speed?: number | undefined;
|
|
4331
|
+
enabled?: boolean | undefined;
|
|
4239
4332
|
}>>;
|
|
4240
4333
|
}, z.ZodTypeAny, "passthrough">>;
|
|
4241
4334
|
export type IAiBinding = z.infer<typeof zAiBindingSchema>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.zHubiaTicketClosedEventSchema = exports.zHubiaTicketClosedCloseSchema = exports.zAiBindingSchema = exports.zHubiaTtsMessageMetaSchema = exports.zHubiaSuggestionOutcomeSchema = exports.zHubiaSuggestionMessageRefSchema = exports.zHubiaPendingSuggestionSchema = exports.zHubiaResponseModeSchema = exports.zHubiaVoiceReplySchema = exports.HUBIA_VOICE_REPLY_ELEVENLABS_SPEED = exports.HUBIA_VOICE_REPLY_ELEVENLABS_MODELS = exports.HUBIA_VOICE_REPLY_DEFAULT_MODEL = exports.zHubiaVoiceProviderSchema = exports.HUBIA_VOICE_REPLY_PROVIDERS = exports.HUBIA_VOICE_REPLY_DEFAULT_VOICE = exports.HUBIA_VOICE_REPLY_OPENAI_VOICES = exports.zHubiaRuleSchema = exports.zHubiaRulesModeSchema = exports.zSendQuickReplyActionInputSchema = exports.zCreateTaskActionInputSchema = exports.zHubiaRuleActionSchema = exports.zHubiaRuleScopeSchema = exports.zHubiaConditionGroupSchema = exports.zHubiaConditionSchema = exports.zHubiaScheduleSchema = exports.zHubiaScheduleWindowSchema = exports.zHubiaConditionOpSchema = exports.zHubiaOutboundSourceSchema = exports.zHubiaRuleAppliesToSchema = exports.zHubiaRuleOutcomeSchema = exports.zHubiaRuleTriggerSchema = exports.zHubiaRulePhaseSchema = exports.zHubiaConversationModeSchema = exports.zHubiaConversationMessageSchema = exports.zHubiaV1ChannelConfigSchema = exports.zHubiaAttendanceModeSchema = void 0;
|
|
3
|
+
exports.zHubiaTicketClosedEventSchema = exports.zHubiaTicketClosedCloseSchema = exports.zAiBindingSchema = exports.zHubiaTtsMessageMetaSchema = exports.zHubiaSuggestionOutcomeSchema = exports.zHubiaSuggestionMessageRefSchema = exports.zHubiaPendingSuggestionSchema = exports.zHubiaResponseModeSchema = exports.zHubiaVoiceReplySchema = exports.HUBIA_HUMAN_TTS_MAX_CHARS = exports.HUBIA_VOICE_PLATFORM_DEFAULT_PROFILE = exports.zHubiaVoiceProfileSchema = exports.HUBIA_VOICE_REPLY_ELEVENLABS_SPEED = exports.HUBIA_VOICE_REPLY_ELEVENLABS_MODELS = exports.HUBIA_VOICE_REPLY_DEFAULT_MODEL = exports.zHubiaVoiceProviderSchema = exports.HUBIA_VOICE_REPLY_PROVIDERS = exports.HUBIA_VOICE_REPLY_DEFAULT_VOICE = exports.HUBIA_VOICE_REPLY_OPENAI_VOICES = exports.zHubiaRuleSchema = exports.zHubiaRulesModeSchema = exports.zSendQuickReplyActionInputSchema = exports.zCreateTaskActionInputSchema = exports.zHubiaRuleActionSchema = exports.zHubiaRuleScopeSchema = exports.zHubiaConditionGroupSchema = exports.zHubiaConditionSchema = exports.zHubiaScheduleSchema = exports.zHubiaScheduleWindowSchema = exports.zHubiaConditionOpSchema = exports.zHubiaOutboundSourceSchema = exports.zHubiaRuleAppliesToSchema = exports.zHubiaRuleOutcomeSchema = exports.zHubiaRuleTriggerSchema = exports.zHubiaRulePhaseSchema = exports.zHubiaConversationModeSchema = exports.zHubiaConversationMessageSchema = exports.zHubiaV1ChannelConfigSchema = exports.zHubiaAttendanceModeSchema = void 0;
|
|
4
4
|
const zod_1 = require("zod");
|
|
5
5
|
const zod_schemas_1 = require("../../shared/zod-schemas");
|
|
6
6
|
const zod_schemas_2 = require("../../evo-csq/zod-schemas");
|
|
@@ -372,26 +372,51 @@ exports.HUBIA_VOICE_REPLY_ELEVENLABS_MODELS = [
|
|
|
372
372
|
];
|
|
373
373
|
/** Faixa de `speed` aceita pela ElevenLabs; o runtime limita a ela. */
|
|
374
374
|
exports.HUBIA_VOICE_REPLY_ELEVENLABS_SPEED = { min: 0.7, max: 1.2 };
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
375
|
+
const zHubiaElevenLabsSettingsSchema = zod_1.z.object({
|
|
376
|
+
stability: zod_1.z.number().min(0).max(1).optional(),
|
|
377
|
+
similarity_boost: zod_1.z.number().min(0).max(1).optional(),
|
|
378
|
+
style: zod_1.z.number().min(0).max(1).optional(),
|
|
379
|
+
});
|
|
380
|
+
/** feat-303 F2.1: perfil de voz (fica no departamento, `voice_profile`). Sem `.default()`:
|
|
381
|
+
* ler um departamento não pode "ganhar" uma voz que ninguém configurou. */
|
|
382
|
+
exports.zHubiaVoiceProfileSchema = zod_1.z.object({
|
|
383
|
+
/** Ausente = `openai` quando há `voice`; sem provider nem voice = padrão da plataforma. */
|
|
380
384
|
provider: exports.zHubiaVoiceProviderSchema.optional(),
|
|
381
385
|
/** Ausente = `HUBIA_VOICE_REPLY_DEFAULT_MODEL[provider]`. */
|
|
382
386
|
model: zod_1.z.string().min(1).max(60).optional(),
|
|
383
387
|
/** OpenAI: nome da voz (`coral`). ElevenLabs: `voice_id` (`RGymW84CSmfVugnA5tvA`). */
|
|
384
|
-
voice: zod_1.z.string().min(1).max(40).
|
|
388
|
+
voice: zod_1.z.string().min(1).max(40).optional(),
|
|
385
389
|
/** Tom/estilo da fala ("cordial, ritmo calmo"). Só a OpenAI usa. */
|
|
386
390
|
instructions: zod_1.z.string().max(1000).optional(),
|
|
387
391
|
/** 1.0 = normal. Na ElevenLabs o runtime limita a 0.7–1.2. */
|
|
388
|
-
speed: zod_1.z.number().min(0.
|
|
392
|
+
speed: zod_1.z.number().min(0.7).max(1.5).optional(),
|
|
389
393
|
/** Ajustes da voz na ElevenLabs (`voice_settings`). Ausente = os da voz. */
|
|
390
|
-
elevenlabs:
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
394
|
+
elevenlabs: zHubiaElevenLabsSettingsSchema.optional(),
|
|
395
|
+
}).passthrough();
|
|
396
|
+
/** Q16: voz padrão da plataforma (Roberta), quando nem o departamento nem o binding legado definem voz. */
|
|
397
|
+
exports.HUBIA_VOICE_PLATFORM_DEFAULT_PROFILE = {
|
|
398
|
+
provider: 'elevenlabs',
|
|
399
|
+
voice: 'RGymW84CSmfVugnA5tvA',
|
|
400
|
+
model: 'eleven_v4',
|
|
401
|
+
};
|
|
402
|
+
/** Teto do "Enviar como áudio" do atendente (3 pedaços × 1.500). */
|
|
403
|
+
exports.HUBIA_HUMAN_TTS_MAX_CHARS = 4500;
|
|
404
|
+
/** Liga a resposta em áudio da HubIA no binding. QUANDO usar áudio é regra do prompt do
|
|
405
|
+
* binding (o LLM decide por turno). A voz vem do departamento (`voice_profile`). */
|
|
406
|
+
exports.zHubiaVoiceReplySchema = zod_1.z.object({
|
|
407
|
+
enabled: zod_1.z.boolean().default(false),
|
|
408
|
+
/** @deprecated F2.1: a voz vem do departamento (`voice_profile`); lido só como legado. */
|
|
409
|
+
provider: exports.zHubiaVoiceProviderSchema.optional(),
|
|
410
|
+
/** @deprecated F2.1: ver `provider`. */
|
|
411
|
+
model: zod_1.z.string().min(1).max(60).optional(),
|
|
412
|
+
/** @deprecated F2.1: ver `provider`. */
|
|
413
|
+
voice: zod_1.z.string().min(1).max(40).optional(),
|
|
414
|
+
/** @deprecated F2.1: ver `provider`. */
|
|
415
|
+
instructions: zod_1.z.string().max(1000).optional(),
|
|
416
|
+
/** @deprecated F2.1: ver `provider`. */
|
|
417
|
+
speed: zod_1.z.number().min(0.75).max(1.5).optional(),
|
|
418
|
+
/** @deprecated F2.1: ver `provider`. */
|
|
419
|
+
elevenlabs: zHubiaElevenLabsSettingsSchema.optional(),
|
|
395
420
|
});
|
|
396
421
|
exports.zHubiaResponseModeSchema = zod_1.z.enum(['text', 'audio']);
|
|
397
422
|
/** `conversations/{id}.pending_suggestion` (modo hybrid_assist). */
|
|
@@ -421,6 +446,8 @@ exports.zHubiaSuggestionOutcomeSchema = zod_1.z.object({
|
|
|
421
446
|
}).passthrough();
|
|
422
447
|
/** Metadados da nota de voz gerada pela HubIA, gravados na mensagem. */
|
|
423
448
|
exports.zHubiaTtsMessageMetaSchema = zod_1.z.object({
|
|
449
|
+
/** F2.1: quem pediu a síntese. Ausente = `hubia`. */
|
|
450
|
+
origin: zod_1.z.enum(['hubia', 'human']).optional(),
|
|
424
451
|
/** F1.1. Ausente nas mensagens gravadas antes = `openai`. */
|
|
425
452
|
provider: exports.zHubiaVoiceProviderSchema.optional(),
|
|
426
453
|
model: zod_1.z.string(),
|
|
@@ -427,26 +427,56 @@ export const HUBIA_VOICE_REPLY_ELEVENLABS_MODELS = [
|
|
|
427
427
|
/** Faixa de `speed` aceita pela ElevenLabs; o runtime limita a ela. */
|
|
428
428
|
export const HUBIA_VOICE_REPLY_ELEVENLABS_SPEED = { min: 0.7, max: 1.2 } as const;
|
|
429
429
|
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
430
|
+
const zHubiaElevenLabsSettingsSchema = z.object({
|
|
431
|
+
stability: z.number().min(0).max(1).optional(),
|
|
432
|
+
similarity_boost: z.number().min(0).max(1).optional(),
|
|
433
|
+
style: z.number().min(0).max(1).optional(),
|
|
434
|
+
});
|
|
435
|
+
|
|
436
|
+
/** feat-303 F2.1: perfil de voz (fica no departamento, `voice_profile`). Sem `.default()`:
|
|
437
|
+
* ler um departamento não pode "ganhar" uma voz que ninguém configurou. */
|
|
438
|
+
export const zHubiaVoiceProfileSchema = z.object({
|
|
439
|
+
/** Ausente = `openai` quando há `voice`; sem provider nem voice = padrão da plataforma. */
|
|
435
440
|
provider: zHubiaVoiceProviderSchema.optional(),
|
|
436
441
|
/** Ausente = `HUBIA_VOICE_REPLY_DEFAULT_MODEL[provider]`. */
|
|
437
442
|
model: z.string().min(1).max(60).optional(),
|
|
438
443
|
/** OpenAI: nome da voz (`coral`). ElevenLabs: `voice_id` (`RGymW84CSmfVugnA5tvA`). */
|
|
439
|
-
voice: z.string().min(1).max(40).
|
|
444
|
+
voice: z.string().min(1).max(40).optional(),
|
|
440
445
|
/** Tom/estilo da fala ("cordial, ritmo calmo"). Só a OpenAI usa. */
|
|
441
446
|
instructions: z.string().max(1000).optional(),
|
|
442
447
|
/** 1.0 = normal. Na ElevenLabs o runtime limita a 0.7–1.2. */
|
|
443
|
-
speed: z.number().min(0.
|
|
448
|
+
speed: z.number().min(0.7).max(1.5).optional(),
|
|
444
449
|
/** Ajustes da voz na ElevenLabs (`voice_settings`). Ausente = os da voz. */
|
|
445
|
-
elevenlabs:
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
+
elevenlabs: zHubiaElevenLabsSettingsSchema.optional(),
|
|
451
|
+
}).passthrough();
|
|
452
|
+
export type IHubiaVoiceProfile = z.infer<typeof zHubiaVoiceProfileSchema>;
|
|
453
|
+
|
|
454
|
+
/** Q16: voz padrão da plataforma (Roberta), quando nem o departamento nem o binding legado definem voz. */
|
|
455
|
+
export const HUBIA_VOICE_PLATFORM_DEFAULT_PROFILE = {
|
|
456
|
+
provider: 'elevenlabs',
|
|
457
|
+
voice: 'RGymW84CSmfVugnA5tvA',
|
|
458
|
+
model: 'eleven_v4',
|
|
459
|
+
} as const satisfies IHubiaVoiceProfile;
|
|
460
|
+
|
|
461
|
+
/** Teto do "Enviar como áudio" do atendente (3 pedaços × 1.500). */
|
|
462
|
+
export const HUBIA_HUMAN_TTS_MAX_CHARS = 4500;
|
|
463
|
+
|
|
464
|
+
/** Liga a resposta em áudio da HubIA no binding. QUANDO usar áudio é regra do prompt do
|
|
465
|
+
* binding (o LLM decide por turno). A voz vem do departamento (`voice_profile`). */
|
|
466
|
+
export const zHubiaVoiceReplySchema = z.object({
|
|
467
|
+
enabled: z.boolean().default(false),
|
|
468
|
+
/** @deprecated F2.1: a voz vem do departamento (`voice_profile`); lido só como legado. */
|
|
469
|
+
provider: zHubiaVoiceProviderSchema.optional(),
|
|
470
|
+
/** @deprecated F2.1: ver `provider`. */
|
|
471
|
+
model: z.string().min(1).max(60).optional(),
|
|
472
|
+
/** @deprecated F2.1: ver `provider`. */
|
|
473
|
+
voice: z.string().min(1).max(40).optional(),
|
|
474
|
+
/** @deprecated F2.1: ver `provider`. */
|
|
475
|
+
instructions: z.string().max(1000).optional(),
|
|
476
|
+
/** @deprecated F2.1: ver `provider`. */
|
|
477
|
+
speed: z.number().min(0.75).max(1.5).optional(),
|
|
478
|
+
/** @deprecated F2.1: ver `provider`. */
|
|
479
|
+
elevenlabs: zHubiaElevenLabsSettingsSchema.optional(),
|
|
450
480
|
});
|
|
451
481
|
export type IHubiaVoiceReply = z.infer<typeof zHubiaVoiceReplySchema>;
|
|
452
482
|
|
|
@@ -486,6 +516,8 @@ export type IHubiaSuggestionOutcome = z.infer<typeof zHubiaSuggestionOutcomeSche
|
|
|
486
516
|
|
|
487
517
|
/** Metadados da nota de voz gerada pela HubIA, gravados na mensagem. */
|
|
488
518
|
export const zHubiaTtsMessageMetaSchema = z.object({
|
|
519
|
+
/** F2.1: quem pediu a síntese. Ausente = `hubia`. */
|
|
520
|
+
origin: z.enum(['hubia', 'human']).optional(),
|
|
489
521
|
/** F1.1. Ausente nas mensagens gravadas antes = `openai`. */
|
|
490
522
|
provider: zHubiaVoiceProviderSchema.optional(),
|
|
491
523
|
model: z.string(),
|
|
@@ -1,4 +1,73 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
/** feat-303 F2.1: "Voz do departamento" — usada pelo "Enviar como áudio" do atendente e
|
|
3
|
+
* herdada pela resposta em áudio da HubIA (binding `voice_reply.enabled`). */
|
|
4
|
+
export declare const zDepartmentVoiceProfileSchema: z.ZodObject<{
|
|
5
|
+
provider: z.ZodOptional<z.ZodEnum<["openai", "elevenlabs"]>>;
|
|
6
|
+
model: z.ZodOptional<z.ZodString>;
|
|
7
|
+
voice: z.ZodOptional<z.ZodString>;
|
|
8
|
+
instructions: z.ZodOptional<z.ZodString>;
|
|
9
|
+
speed: z.ZodOptional<z.ZodNumber>;
|
|
10
|
+
elevenlabs: z.ZodOptional<z.ZodObject<{
|
|
11
|
+
stability: z.ZodOptional<z.ZodNumber>;
|
|
12
|
+
similarity_boost: z.ZodOptional<z.ZodNumber>;
|
|
13
|
+
style: z.ZodOptional<z.ZodNumber>;
|
|
14
|
+
}, "strip", z.ZodTypeAny, {
|
|
15
|
+
stability?: number | undefined;
|
|
16
|
+
similarity_boost?: number | undefined;
|
|
17
|
+
style?: number | undefined;
|
|
18
|
+
}, {
|
|
19
|
+
stability?: number | undefined;
|
|
20
|
+
similarity_boost?: number | undefined;
|
|
21
|
+
style?: number | undefined;
|
|
22
|
+
}>>;
|
|
23
|
+
} & {
|
|
24
|
+
/** "Habilitar TTS em resposta humana". Ausente = desligado. */
|
|
25
|
+
human_tts_enabled: z.ZodOptional<z.ZodBoolean>;
|
|
26
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
27
|
+
provider: z.ZodOptional<z.ZodEnum<["openai", "elevenlabs"]>>;
|
|
28
|
+
model: z.ZodOptional<z.ZodString>;
|
|
29
|
+
voice: z.ZodOptional<z.ZodString>;
|
|
30
|
+
instructions: z.ZodOptional<z.ZodString>;
|
|
31
|
+
speed: z.ZodOptional<z.ZodNumber>;
|
|
32
|
+
elevenlabs: z.ZodOptional<z.ZodObject<{
|
|
33
|
+
stability: z.ZodOptional<z.ZodNumber>;
|
|
34
|
+
similarity_boost: z.ZodOptional<z.ZodNumber>;
|
|
35
|
+
style: z.ZodOptional<z.ZodNumber>;
|
|
36
|
+
}, "strip", z.ZodTypeAny, {
|
|
37
|
+
stability?: number | undefined;
|
|
38
|
+
similarity_boost?: number | undefined;
|
|
39
|
+
style?: number | undefined;
|
|
40
|
+
}, {
|
|
41
|
+
stability?: number | undefined;
|
|
42
|
+
similarity_boost?: number | undefined;
|
|
43
|
+
style?: number | undefined;
|
|
44
|
+
}>>;
|
|
45
|
+
} & {
|
|
46
|
+
/** "Habilitar TTS em resposta humana". Ausente = desligado. */
|
|
47
|
+
human_tts_enabled: z.ZodOptional<z.ZodBoolean>;
|
|
48
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
49
|
+
provider: z.ZodOptional<z.ZodEnum<["openai", "elevenlabs"]>>;
|
|
50
|
+
model: z.ZodOptional<z.ZodString>;
|
|
51
|
+
voice: z.ZodOptional<z.ZodString>;
|
|
52
|
+
instructions: z.ZodOptional<z.ZodString>;
|
|
53
|
+
speed: z.ZodOptional<z.ZodNumber>;
|
|
54
|
+
elevenlabs: z.ZodOptional<z.ZodObject<{
|
|
55
|
+
stability: z.ZodOptional<z.ZodNumber>;
|
|
56
|
+
similarity_boost: z.ZodOptional<z.ZodNumber>;
|
|
57
|
+
style: z.ZodOptional<z.ZodNumber>;
|
|
58
|
+
}, "strip", z.ZodTypeAny, {
|
|
59
|
+
stability?: number | undefined;
|
|
60
|
+
similarity_boost?: number | undefined;
|
|
61
|
+
style?: number | undefined;
|
|
62
|
+
}, {
|
|
63
|
+
stability?: number | undefined;
|
|
64
|
+
similarity_boost?: number | undefined;
|
|
65
|
+
style?: number | undefined;
|
|
66
|
+
}>>;
|
|
67
|
+
} & {
|
|
68
|
+
/** "Habilitar TTS em resposta humana". Ausente = desligado. */
|
|
69
|
+
human_tts_enabled: z.ZodOptional<z.ZodBoolean>;
|
|
70
|
+
}, z.ZodTypeAny, "passthrough">>;
|
|
2
71
|
export declare const zPeopleActionSchema: z.ZodEnum<["CREATE_COMPANY", "DELETE_COMPANY", "UPDATE_COMPANY", "UPDATE_COMPANY_LEAD", "UPDATE_COMPANY_NAME", "CREATE_OFFICE", "DELETE_OFFICE", "UPDATE_OFFICE", "UPDATE_OFFICE_NAME", "UPDATE_OFFICE_TIMEZONE", "UPDATE_OFFICE_COMPANY", "UPDATE_OFFICE_LEAD", "CREATE_DEPARTMENT", "DELETE_DEPARTMENT", "UPDATE_DEPARTMENT", "UPDATE_DEPARTMENT_PARENT_DEPARTMENT", "UPDATE_DEPARTMENT_LEAD", "UPDATE_DEPARTMENT_NAME", "CREATE_EMPLOYEE", "DELETE_EMPLOYEE", "UPDATE_EMPLOYEE", "UPDATE_EMPLOYEE_PHOTO", "UPDATE_PROFILE", "UPDATE_PHOTO", "UPDATE_PASSWORD", "UPDATE_EMPLOYEE_REPORT_TO", "UPDATE_EMPLOYEE_DEPARTMENT", "UPDATE_EMPLOYEE_OFFICE", "UPDATE_EMPLOYEE_COMPANY", "UPDATE_EMPLOYEE_JOB_TITLE", "UPDATE_EMPLOYEE_WORK_EMAIL", "UPDATE_EMPLOYEE_STATUS"]>;
|
|
3
72
|
export declare const zProfileSchema: z.ZodObject<{
|
|
4
73
|
id: z.ZodString;
|
|
@@ -247,6 +316,73 @@ export declare const zDepartmentSchema: z.ZodObject<{
|
|
|
247
316
|
}>, "many">>>;
|
|
248
317
|
chat_enabled: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
249
318
|
chat_color: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
319
|
+
voice_profile: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
320
|
+
provider: z.ZodOptional<z.ZodEnum<["openai", "elevenlabs"]>>;
|
|
321
|
+
model: z.ZodOptional<z.ZodString>;
|
|
322
|
+
voice: z.ZodOptional<z.ZodString>;
|
|
323
|
+
instructions: z.ZodOptional<z.ZodString>;
|
|
324
|
+
speed: z.ZodOptional<z.ZodNumber>;
|
|
325
|
+
elevenlabs: z.ZodOptional<z.ZodObject<{
|
|
326
|
+
stability: z.ZodOptional<z.ZodNumber>;
|
|
327
|
+
similarity_boost: z.ZodOptional<z.ZodNumber>;
|
|
328
|
+
style: z.ZodOptional<z.ZodNumber>;
|
|
329
|
+
}, "strip", z.ZodTypeAny, {
|
|
330
|
+
stability?: number | undefined;
|
|
331
|
+
similarity_boost?: number | undefined;
|
|
332
|
+
style?: number | undefined;
|
|
333
|
+
}, {
|
|
334
|
+
stability?: number | undefined;
|
|
335
|
+
similarity_boost?: number | undefined;
|
|
336
|
+
style?: number | undefined;
|
|
337
|
+
}>>;
|
|
338
|
+
} & {
|
|
339
|
+
/** "Habilitar TTS em resposta humana". Ausente = desligado. */
|
|
340
|
+
human_tts_enabled: z.ZodOptional<z.ZodBoolean>;
|
|
341
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
342
|
+
provider: z.ZodOptional<z.ZodEnum<["openai", "elevenlabs"]>>;
|
|
343
|
+
model: z.ZodOptional<z.ZodString>;
|
|
344
|
+
voice: z.ZodOptional<z.ZodString>;
|
|
345
|
+
instructions: z.ZodOptional<z.ZodString>;
|
|
346
|
+
speed: z.ZodOptional<z.ZodNumber>;
|
|
347
|
+
elevenlabs: z.ZodOptional<z.ZodObject<{
|
|
348
|
+
stability: z.ZodOptional<z.ZodNumber>;
|
|
349
|
+
similarity_boost: z.ZodOptional<z.ZodNumber>;
|
|
350
|
+
style: z.ZodOptional<z.ZodNumber>;
|
|
351
|
+
}, "strip", z.ZodTypeAny, {
|
|
352
|
+
stability?: number | undefined;
|
|
353
|
+
similarity_boost?: number | undefined;
|
|
354
|
+
style?: number | undefined;
|
|
355
|
+
}, {
|
|
356
|
+
stability?: number | undefined;
|
|
357
|
+
similarity_boost?: number | undefined;
|
|
358
|
+
style?: number | undefined;
|
|
359
|
+
}>>;
|
|
360
|
+
} & {
|
|
361
|
+
/** "Habilitar TTS em resposta humana". Ausente = desligado. */
|
|
362
|
+
human_tts_enabled: z.ZodOptional<z.ZodBoolean>;
|
|
363
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
364
|
+
provider: z.ZodOptional<z.ZodEnum<["openai", "elevenlabs"]>>;
|
|
365
|
+
model: z.ZodOptional<z.ZodString>;
|
|
366
|
+
voice: z.ZodOptional<z.ZodString>;
|
|
367
|
+
instructions: z.ZodOptional<z.ZodString>;
|
|
368
|
+
speed: z.ZodOptional<z.ZodNumber>;
|
|
369
|
+
elevenlabs: z.ZodOptional<z.ZodObject<{
|
|
370
|
+
stability: z.ZodOptional<z.ZodNumber>;
|
|
371
|
+
similarity_boost: z.ZodOptional<z.ZodNumber>;
|
|
372
|
+
style: z.ZodOptional<z.ZodNumber>;
|
|
373
|
+
}, "strip", z.ZodTypeAny, {
|
|
374
|
+
stability?: number | undefined;
|
|
375
|
+
similarity_boost?: number | undefined;
|
|
376
|
+
style?: number | undefined;
|
|
377
|
+
}, {
|
|
378
|
+
stability?: number | undefined;
|
|
379
|
+
similarity_boost?: number | undefined;
|
|
380
|
+
style?: number | undefined;
|
|
381
|
+
}>>;
|
|
382
|
+
} & {
|
|
383
|
+
/** "Habilitar TTS em resposta humana". Ausente = desligado. */
|
|
384
|
+
human_tts_enabled: z.ZodOptional<z.ZodBoolean>;
|
|
385
|
+
}, z.ZodTypeAny, "passthrough">>>>;
|
|
250
386
|
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
251
387
|
id: z.ZodString;
|
|
252
388
|
ref: z.ZodAny;
|
|
@@ -284,6 +420,73 @@ export declare const zDepartmentSchema: z.ZodObject<{
|
|
|
284
420
|
}>, "many">>>;
|
|
285
421
|
chat_enabled: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
286
422
|
chat_color: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
423
|
+
voice_profile: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
424
|
+
provider: z.ZodOptional<z.ZodEnum<["openai", "elevenlabs"]>>;
|
|
425
|
+
model: z.ZodOptional<z.ZodString>;
|
|
426
|
+
voice: z.ZodOptional<z.ZodString>;
|
|
427
|
+
instructions: z.ZodOptional<z.ZodString>;
|
|
428
|
+
speed: z.ZodOptional<z.ZodNumber>;
|
|
429
|
+
elevenlabs: z.ZodOptional<z.ZodObject<{
|
|
430
|
+
stability: z.ZodOptional<z.ZodNumber>;
|
|
431
|
+
similarity_boost: z.ZodOptional<z.ZodNumber>;
|
|
432
|
+
style: z.ZodOptional<z.ZodNumber>;
|
|
433
|
+
}, "strip", z.ZodTypeAny, {
|
|
434
|
+
stability?: number | undefined;
|
|
435
|
+
similarity_boost?: number | undefined;
|
|
436
|
+
style?: number | undefined;
|
|
437
|
+
}, {
|
|
438
|
+
stability?: number | undefined;
|
|
439
|
+
similarity_boost?: number | undefined;
|
|
440
|
+
style?: number | undefined;
|
|
441
|
+
}>>;
|
|
442
|
+
} & {
|
|
443
|
+
/** "Habilitar TTS em resposta humana". Ausente = desligado. */
|
|
444
|
+
human_tts_enabled: z.ZodOptional<z.ZodBoolean>;
|
|
445
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
446
|
+
provider: z.ZodOptional<z.ZodEnum<["openai", "elevenlabs"]>>;
|
|
447
|
+
model: z.ZodOptional<z.ZodString>;
|
|
448
|
+
voice: z.ZodOptional<z.ZodString>;
|
|
449
|
+
instructions: z.ZodOptional<z.ZodString>;
|
|
450
|
+
speed: z.ZodOptional<z.ZodNumber>;
|
|
451
|
+
elevenlabs: z.ZodOptional<z.ZodObject<{
|
|
452
|
+
stability: z.ZodOptional<z.ZodNumber>;
|
|
453
|
+
similarity_boost: z.ZodOptional<z.ZodNumber>;
|
|
454
|
+
style: z.ZodOptional<z.ZodNumber>;
|
|
455
|
+
}, "strip", z.ZodTypeAny, {
|
|
456
|
+
stability?: number | undefined;
|
|
457
|
+
similarity_boost?: number | undefined;
|
|
458
|
+
style?: number | undefined;
|
|
459
|
+
}, {
|
|
460
|
+
stability?: number | undefined;
|
|
461
|
+
similarity_boost?: number | undefined;
|
|
462
|
+
style?: number | undefined;
|
|
463
|
+
}>>;
|
|
464
|
+
} & {
|
|
465
|
+
/** "Habilitar TTS em resposta humana". Ausente = desligado. */
|
|
466
|
+
human_tts_enabled: z.ZodOptional<z.ZodBoolean>;
|
|
467
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
468
|
+
provider: z.ZodOptional<z.ZodEnum<["openai", "elevenlabs"]>>;
|
|
469
|
+
model: z.ZodOptional<z.ZodString>;
|
|
470
|
+
voice: z.ZodOptional<z.ZodString>;
|
|
471
|
+
instructions: z.ZodOptional<z.ZodString>;
|
|
472
|
+
speed: z.ZodOptional<z.ZodNumber>;
|
|
473
|
+
elevenlabs: z.ZodOptional<z.ZodObject<{
|
|
474
|
+
stability: z.ZodOptional<z.ZodNumber>;
|
|
475
|
+
similarity_boost: z.ZodOptional<z.ZodNumber>;
|
|
476
|
+
style: z.ZodOptional<z.ZodNumber>;
|
|
477
|
+
}, "strip", z.ZodTypeAny, {
|
|
478
|
+
stability?: number | undefined;
|
|
479
|
+
similarity_boost?: number | undefined;
|
|
480
|
+
style?: number | undefined;
|
|
481
|
+
}, {
|
|
482
|
+
stability?: number | undefined;
|
|
483
|
+
similarity_boost?: number | undefined;
|
|
484
|
+
style?: number | undefined;
|
|
485
|
+
}>>;
|
|
486
|
+
} & {
|
|
487
|
+
/** "Habilitar TTS em resposta humana". Ausente = desligado. */
|
|
488
|
+
human_tts_enabled: z.ZodOptional<z.ZodBoolean>;
|
|
489
|
+
}, z.ZodTypeAny, "passthrough">>>>;
|
|
287
490
|
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
288
491
|
id: z.ZodString;
|
|
289
492
|
ref: z.ZodAny;
|
|
@@ -321,6 +524,73 @@ export declare const zDepartmentSchema: z.ZodObject<{
|
|
|
321
524
|
}>, "many">>>;
|
|
322
525
|
chat_enabled: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
323
526
|
chat_color: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
527
|
+
voice_profile: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
528
|
+
provider: z.ZodOptional<z.ZodEnum<["openai", "elevenlabs"]>>;
|
|
529
|
+
model: z.ZodOptional<z.ZodString>;
|
|
530
|
+
voice: z.ZodOptional<z.ZodString>;
|
|
531
|
+
instructions: z.ZodOptional<z.ZodString>;
|
|
532
|
+
speed: z.ZodOptional<z.ZodNumber>;
|
|
533
|
+
elevenlabs: z.ZodOptional<z.ZodObject<{
|
|
534
|
+
stability: z.ZodOptional<z.ZodNumber>;
|
|
535
|
+
similarity_boost: z.ZodOptional<z.ZodNumber>;
|
|
536
|
+
style: z.ZodOptional<z.ZodNumber>;
|
|
537
|
+
}, "strip", z.ZodTypeAny, {
|
|
538
|
+
stability?: number | undefined;
|
|
539
|
+
similarity_boost?: number | undefined;
|
|
540
|
+
style?: number | undefined;
|
|
541
|
+
}, {
|
|
542
|
+
stability?: number | undefined;
|
|
543
|
+
similarity_boost?: number | undefined;
|
|
544
|
+
style?: number | undefined;
|
|
545
|
+
}>>;
|
|
546
|
+
} & {
|
|
547
|
+
/** "Habilitar TTS em resposta humana". Ausente = desligado. */
|
|
548
|
+
human_tts_enabled: z.ZodOptional<z.ZodBoolean>;
|
|
549
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
550
|
+
provider: z.ZodOptional<z.ZodEnum<["openai", "elevenlabs"]>>;
|
|
551
|
+
model: z.ZodOptional<z.ZodString>;
|
|
552
|
+
voice: z.ZodOptional<z.ZodString>;
|
|
553
|
+
instructions: z.ZodOptional<z.ZodString>;
|
|
554
|
+
speed: z.ZodOptional<z.ZodNumber>;
|
|
555
|
+
elevenlabs: z.ZodOptional<z.ZodObject<{
|
|
556
|
+
stability: z.ZodOptional<z.ZodNumber>;
|
|
557
|
+
similarity_boost: z.ZodOptional<z.ZodNumber>;
|
|
558
|
+
style: z.ZodOptional<z.ZodNumber>;
|
|
559
|
+
}, "strip", z.ZodTypeAny, {
|
|
560
|
+
stability?: number | undefined;
|
|
561
|
+
similarity_boost?: number | undefined;
|
|
562
|
+
style?: number | undefined;
|
|
563
|
+
}, {
|
|
564
|
+
stability?: number | undefined;
|
|
565
|
+
similarity_boost?: number | undefined;
|
|
566
|
+
style?: number | undefined;
|
|
567
|
+
}>>;
|
|
568
|
+
} & {
|
|
569
|
+
/** "Habilitar TTS em resposta humana". Ausente = desligado. */
|
|
570
|
+
human_tts_enabled: z.ZodOptional<z.ZodBoolean>;
|
|
571
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
572
|
+
provider: z.ZodOptional<z.ZodEnum<["openai", "elevenlabs"]>>;
|
|
573
|
+
model: z.ZodOptional<z.ZodString>;
|
|
574
|
+
voice: z.ZodOptional<z.ZodString>;
|
|
575
|
+
instructions: z.ZodOptional<z.ZodString>;
|
|
576
|
+
speed: z.ZodOptional<z.ZodNumber>;
|
|
577
|
+
elevenlabs: z.ZodOptional<z.ZodObject<{
|
|
578
|
+
stability: z.ZodOptional<z.ZodNumber>;
|
|
579
|
+
similarity_boost: z.ZodOptional<z.ZodNumber>;
|
|
580
|
+
style: z.ZodOptional<z.ZodNumber>;
|
|
581
|
+
}, "strip", z.ZodTypeAny, {
|
|
582
|
+
stability?: number | undefined;
|
|
583
|
+
similarity_boost?: number | undefined;
|
|
584
|
+
style?: number | undefined;
|
|
585
|
+
}, {
|
|
586
|
+
stability?: number | undefined;
|
|
587
|
+
similarity_boost?: number | undefined;
|
|
588
|
+
style?: number | undefined;
|
|
589
|
+
}>>;
|
|
590
|
+
} & {
|
|
591
|
+
/** "Habilitar TTS em resposta humana". Ausente = desligado. */
|
|
592
|
+
human_tts_enabled: z.ZodOptional<z.ZodBoolean>;
|
|
593
|
+
}, z.ZodTypeAny, "passthrough">>>>;
|
|
324
594
|
}, z.ZodTypeAny, "passthrough">>;
|
|
325
595
|
export declare const zOfficeSchema: z.ZodObject<{
|
|
326
596
|
id: z.ZodString;
|
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.zCompanySchema = exports.zOfficeSchema = exports.zDepartmentSchema = exports.zEmployeeSchema = exports.zEmployeeStatusSchema = exports.zProfileSchema = exports.zPeopleActionSchema = void 0;
|
|
3
|
+
exports.zCompanySchema = exports.zOfficeSchema = exports.zDepartmentSchema = exports.zEmployeeSchema = exports.zEmployeeStatusSchema = exports.zProfileSchema = exports.zPeopleActionSchema = exports.zDepartmentVoiceProfileSchema = void 0;
|
|
4
4
|
const zod_1 = require("zod");
|
|
5
5
|
const zod_schemas_1 = require("../shared/zod-schemas");
|
|
6
|
+
const zod_schemas_2 = require("../evo-hub-ia/v1/zod-schemas");
|
|
7
|
+
/** feat-303 F2.1: "Voz do departamento" — usada pelo "Enviar como áudio" do atendente e
|
|
8
|
+
* herdada pela resposta em áudio da HubIA (binding `voice_reply.enabled`). */
|
|
9
|
+
exports.zDepartmentVoiceProfileSchema = zod_schemas_2.zHubiaVoiceProfileSchema.extend({
|
|
10
|
+
/** "Habilitar TTS em resposta humana". Ausente = desligado. */
|
|
11
|
+
human_tts_enabled: zod_1.z.boolean().optional(),
|
|
12
|
+
});
|
|
6
13
|
exports.zPeopleActionSchema = zod_1.z.enum([
|
|
7
14
|
"CREATE_COMPANY",
|
|
8
15
|
"DELETE_COMPANY",
|
|
@@ -88,6 +95,7 @@ exports.zDepartmentSchema = zod_schemas_1.zFireDocSchema // Extend from FireDocS
|
|
|
88
95
|
tags: zod_1.z.array(zod_schemas_1.zTagSchema).nullable().optional(),
|
|
89
96
|
chat_enabled: zod_1.z.boolean().nullable().optional(),
|
|
90
97
|
chat_color: zod_1.z.string().nullable().optional(),
|
|
98
|
+
voice_profile: exports.zDepartmentVoiceProfileSchema.nullable().optional(),
|
|
91
99
|
})
|
|
92
100
|
.passthrough();
|
|
93
101
|
exports.zOfficeSchema = zod_schemas_1.zFireDocSchema // Extend from FireDocSchema
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { zFireDocSchema, zTagSchema } from "../shared/zod-schemas";
|
|
3
|
+
import { zHubiaVoiceProfileSchema } from "../evo-hub-ia/v1/zod-schemas";
|
|
4
|
+
|
|
5
|
+
/** feat-303 F2.1: "Voz do departamento" — usada pelo "Enviar como áudio" do atendente e
|
|
6
|
+
* herdada pela resposta em áudio da HubIA (binding `voice_reply.enabled`). */
|
|
7
|
+
export const zDepartmentVoiceProfileSchema = zHubiaVoiceProfileSchema.extend({
|
|
8
|
+
/** "Habilitar TTS em resposta humana". Ausente = desligado. */
|
|
9
|
+
human_tts_enabled: z.boolean().optional(),
|
|
10
|
+
});
|
|
3
11
|
|
|
4
12
|
export const zPeopleActionSchema = z.enum([
|
|
5
13
|
"CREATE_COMPANY",
|
|
@@ -90,6 +98,7 @@ export const zDepartmentSchema = zFireDocSchema // Extend from FireDocSchema
|
|
|
90
98
|
tags: z.array(zTagSchema).nullable().optional(),
|
|
91
99
|
chat_enabled: z.boolean().nullable().optional(),
|
|
92
100
|
chat_color: z.string().nullable().optional(),
|
|
101
|
+
voice_profile: zDepartmentVoiceProfileSchema.nullable().optional(),
|
|
93
102
|
})
|
|
94
103
|
.passthrough();
|
|
95
104
|
|
|
@@ -123,6 +123,26 @@ export interface IDepartment extends IFireDoc {
|
|
|
123
123
|
chat_enabled?: boolean | null;
|
|
124
124
|
/** Color for UI rendering in hub-omni (e.g., '#4CAF50'). */
|
|
125
125
|
chat_color?: string | null;
|
|
126
|
+
/** feat-303 F2.1: "Voz do departamento" (TTS do atendente e voz herdada pela HubIA). */
|
|
127
|
+
voice_profile?: IDepartmentVoiceProfile | null;
|
|
128
|
+
}
|
|
129
|
+
/** feat-303 F2.1: perfil de voz do departamento. Sem provider nem voice = padrão da plataforma (Roberta). */
|
|
130
|
+
export interface IDepartmentVoiceProfile {
|
|
131
|
+
provider?: "openai" | "elevenlabs";
|
|
132
|
+
model?: string;
|
|
133
|
+
/** OpenAI: nome da voz. ElevenLabs: `voice_id`. */
|
|
134
|
+
voice?: string;
|
|
135
|
+
/** Só OpenAI. */
|
|
136
|
+
instructions?: string;
|
|
137
|
+
speed?: number;
|
|
138
|
+
elevenlabs?: {
|
|
139
|
+
stability?: number;
|
|
140
|
+
similarity_boost?: number;
|
|
141
|
+
style?: number;
|
|
142
|
+
};
|
|
143
|
+
/** "Habilitar TTS em resposta humana" (botão "Enviar como áudio" no compositor). */
|
|
144
|
+
human_tts_enabled?: boolean;
|
|
145
|
+
[key: string]: unknown;
|
|
126
146
|
}
|
|
127
147
|
export interface IOffice extends IFireDoc {
|
|
128
148
|
code: string;
|
|
@@ -188,6 +188,23 @@ export interface IDepartment extends IFireDoc {
|
|
|
188
188
|
chat_enabled?: boolean | null;
|
|
189
189
|
/** Color for UI rendering in hub-omni (e.g., '#4CAF50'). */
|
|
190
190
|
chat_color?: string | null;
|
|
191
|
+
/** feat-303 F2.1: "Voz do departamento" (TTS do atendente e voz herdada pela HubIA). */
|
|
192
|
+
voice_profile?: IDepartmentVoiceProfile | null;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/** feat-303 F2.1: perfil de voz do departamento. Sem provider nem voice = padrão da plataforma (Roberta). */
|
|
196
|
+
export interface IDepartmentVoiceProfile {
|
|
197
|
+
provider?: "openai" | "elevenlabs";
|
|
198
|
+
model?: string;
|
|
199
|
+
/** OpenAI: nome da voz. ElevenLabs: `voice_id`. */
|
|
200
|
+
voice?: string;
|
|
201
|
+
/** Só OpenAI. */
|
|
202
|
+
instructions?: string;
|
|
203
|
+
speed?: number;
|
|
204
|
+
elevenlabs?: { stability?: number; similarity_boost?: number; style?: number };
|
|
205
|
+
/** "Habilitar TTS em resposta humana" (botão "Enviar como áudio" no compositor). */
|
|
206
|
+
human_tts_enabled?: boolean;
|
|
207
|
+
[key: string]: unknown;
|
|
191
208
|
}
|
|
192
209
|
|
|
193
210
|
export interface IOffice extends IFireDoc {
|
|
@@ -122,9 +122,10 @@ export interface IUsageLlm {
|
|
|
122
122
|
* `AiUsageCategory` do `@evo/hubia`, sem as internas como `csq_judge`).
|
|
123
123
|
* - `hubia`: atendimento (turnos do LLM, reativação, busca de família).
|
|
124
124
|
* - `attachment_analysis`: leitura de foto/PDF pelo classificador de anexos.
|
|
125
|
-
* - `audio_synthesis`:
|
|
125
|
+
* - `audio_synthesis`: nota de voz gerada pela HubIA (feat-303).
|
|
126
|
+
* - `human_audio_synthesis`: "Enviar como áudio" do atendente (TTS; 1 linha por áudio enviado).
|
|
126
127
|
*/
|
|
127
|
-
export type UsageAiCategory = "hubia" | "attachment_analysis" | "audio_synthesis";
|
|
128
|
+
export type UsageAiCategory = "hubia" | "attachment_analysis" | "audio_synthesis" | "human_audio_synthesis";
|
|
128
129
|
export interface IUsageLlmCategory {
|
|
129
130
|
/** Chamadas ao LLM nesta categoria (execuções/análises, dedup por evento). */
|
|
130
131
|
turnos: number;
|
|
@@ -143,9 +143,10 @@ export interface IUsageLlm {
|
|
|
143
143
|
* `AiUsageCategory` do `@evo/hubia`, sem as internas como `csq_judge`).
|
|
144
144
|
* - `hubia`: atendimento (turnos do LLM, reativação, busca de família).
|
|
145
145
|
* - `attachment_analysis`: leitura de foto/PDF pelo classificador de anexos.
|
|
146
|
-
* - `audio_synthesis`:
|
|
146
|
+
* - `audio_synthesis`: nota de voz gerada pela HubIA (feat-303).
|
|
147
|
+
* - `human_audio_synthesis`: "Enviar como áudio" do atendente (TTS; 1 linha por áudio enviado).
|
|
147
148
|
*/
|
|
148
|
-
export type UsageAiCategory = "hubia" | "attachment_analysis" | "audio_synthesis";
|
|
149
|
+
export type UsageAiCategory = "hubia" | "attachment_analysis" | "audio_synthesis" | "human_audio_synthesis";
|
|
149
150
|
|
|
150
151
|
export interface IUsageLlmCategory {
|
|
151
152
|
/** Chamadas ao LLM nesta categoria (execuções/análises, dedup por evento). */
|