@wrcb/cb-common 1.0.907 → 1.0.909

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.
@@ -0,0 +1,2 @@
1
+ export * from './mediaJobCompletedEvent';
2
+ export * from './mediaJobCompletedPublisher';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./mediaJobCompletedEvent"), exports);
18
+ __exportStar(require("./mediaJobCompletedPublisher"), exports);
@@ -0,0 +1,6 @@
1
+ import { MediaJobCompletedData } from '../../types/mediaGen';
2
+ import { Subjects } from '../subjects';
3
+ export interface MediaJobCompletedEvent {
4
+ subject: Subjects.MediaJobCompleted;
5
+ data: MediaJobCompletedData;
6
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,6 @@
1
+ import { Publisher } from '../basePublisher';
2
+ import { MediaJobCompletedEvent } from './mediaJobCompletedEvent';
3
+ import { Subjects } from '../subjects';
4
+ export declare class MediaJobCompletedPublisher extends Publisher<MediaJobCompletedEvent> {
5
+ subject: Subjects.MediaJobCompleted;
6
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MediaJobCompletedPublisher = void 0;
4
+ const basePublisher_1 = require("../basePublisher");
5
+ const subjects_1 = require("../subjects");
6
+ class MediaJobCompletedPublisher extends basePublisher_1.Publisher {
7
+ constructor() {
8
+ super(...arguments);
9
+ this.subject = subjects_1.Subjects.MediaJobCompleted;
10
+ }
11
+ }
12
+ exports.MediaJobCompletedPublisher = MediaJobCompletedPublisher;
@@ -79,5 +79,6 @@ export declare enum Subjects {
79
79
  ThoOrderPaid = "tho:order:paid",
80
80
  ThoOrderStatusUpdated = "tho:order:status-updated",
81
81
  ThoOrderWalletChargeRequested = "tho:order:wallet-charge-requested",
82
- ThoOrderSettled = "tho:order:settled"
82
+ ThoOrderSettled = "tho:order:settled",
83
+ MediaJobCompleted = "media-gen:job:completed"
83
84
  }
@@ -95,4 +95,6 @@ var Subjects;
95
95
  Subjects["ThoOrderStatusUpdated"] = "tho:order:status-updated";
96
96
  Subjects["ThoOrderWalletChargeRequested"] = "tho:order:wallet-charge-requested";
97
97
  Subjects["ThoOrderSettled"] = "tho:order:settled";
98
+ // media-gen
99
+ Subjects["MediaJobCompleted"] = "media-gen:job:completed";
98
100
  })(Subjects || (exports.Subjects = Subjects = {}));
package/build/index.d.ts CHANGED
@@ -61,12 +61,16 @@ export * from './types/crm';
61
61
  export * from './types/clinica';
62
62
  export * from './types/companion';
63
63
  export * from './types/telegram';
64
+ export * from './types/pixReceipt';
65
+ export * from './types/mediaGen';
66
+ export * from './types/influencerBook';
64
67
  export * from './events/subjects';
65
68
  export * from './events/baseListener';
66
69
  export * from './events/basePublisher';
67
70
  export * from './events/youtube-dark';
68
71
  export * from './events/social-media-automator';
69
72
  export * from './events/ai';
73
+ export * from './events/media-gen';
70
74
  export * from './events/notas-br';
71
75
  export * from './events/trabalho-home-office';
72
76
  export * from './services/TenantDataService';
package/build/index.js CHANGED
@@ -89,12 +89,16 @@ __exportStar(require("./types/crm"), exports);
89
89
  __exportStar(require("./types/clinica"), exports);
90
90
  __exportStar(require("./types/companion"), exports);
91
91
  __exportStar(require("./types/telegram"), exports);
92
+ __exportStar(require("./types/pixReceipt"), exports);
93
+ __exportStar(require("./types/mediaGen"), exports);
94
+ __exportStar(require("./types/influencerBook"), exports);
92
95
  __exportStar(require("./events/subjects"), exports);
93
96
  __exportStar(require("./events/baseListener"), exports);
94
97
  __exportStar(require("./events/basePublisher"), exports);
95
98
  __exportStar(require("./events/youtube-dark"), exports);
96
99
  __exportStar(require("./events/social-media-automator"), exports);
97
100
  __exportStar(require("./events/ai"), exports);
101
+ __exportStar(require("./events/media-gen"), exports);
98
102
  __exportStar(require("./events/notas-br"), exports);
99
103
  __exportStar(require("./events/trabalho-home-office"), exports);
100
104
  __exportStar(require("./services/TenantDataService"), exports);
@@ -1,4 +1,4 @@
1
- import type { CrmCadenceStep, CrmStageMessage } from './crm';
1
+ import type { CrmActor, CrmCadenceStep, CrmStageMessage } from './crm';
2
2
  export declare enum ClinicaAppointmentStatus {
3
3
  AwaitingDeposit = "AwaitingDeposit",
4
4
  Confirmed = "Confirmed",
@@ -441,6 +441,20 @@ export interface ClinicaScheduledInfo {
441
441
  items: ClinicaScheduledMessage[];
442
442
  followUpPaused: ClinicaFollowUpPause | null;
443
443
  }
444
+ /** Uma mudança de coluna do contato no funil. */
445
+ export interface ClinicaStageMove {
446
+ id: string;
447
+ at: string;
448
+ from: string | null;
449
+ to: string | null;
450
+ actor: CrmActor;
451
+ userName: string | null;
452
+ }
453
+ /** Uma página do histórico, da mudança mais recente para a mais antiga. */
454
+ export interface ClinicaStageHistory {
455
+ items: ClinicaStageMove[];
456
+ hasMore: boolean;
457
+ }
444
458
  export interface ClinicaCreateScheduledMessageInput {
445
459
  content: string;
446
460
  at: string;
@@ -39,6 +39,11 @@ export interface CompanionProfile {
39
39
  sheetUrl: string | null;
40
40
  /** O usuário vendedor que publica os posts dela na vitrine. */
41
41
  sellerId: string | null;
42
+ /**
43
+ * Quando alguém editou a ficha pelo painel. Com isto preenchido, o script de
44
+ * seed deixa a ficha e o prompt como estão (o painel passa a ser a fonte).
45
+ */
46
+ editedAt?: string | null;
42
47
  }
43
48
  /** O card público. Nunca leva o `systemPrompt` nem o `turnOns`. */
44
49
  export interface CompanionCard {
@@ -0,0 +1,142 @@
1
+ import { MediaJobStatus, MediaProviderName } from './mediaGen';
2
+ /** Idade mínima aceita para qualquer personagem. */
3
+ export declare const INFLUENCER_MIN_AGE = 25;
4
+ export declare enum InfluencerMediaKind {
5
+ Photo = "photo",
6
+ Video = "video"
7
+ }
8
+ export declare enum InfluencerMediaStatus {
9
+ /** Gerada, esperando o admin decidir se fica. */
10
+ Pending = "pending",
11
+ /** Aprovada: entra no book e pode ser enviada pelo bot. */
12
+ Approved = "approved"
13
+ }
14
+ export declare enum InfluencerLoraStatus {
15
+ None = "none",
16
+ Training = "training",
17
+ Ready = "ready",
18
+ Failed = "failed"
19
+ }
20
+ export interface InfluencerReferenceSheetDTO {
21
+ key: string;
22
+ url: string;
23
+ /** Vista pedida (frente, costas, rosto...). */
24
+ label: string;
25
+ approved: boolean;
26
+ }
27
+ export interface InfluencerProfileDTO {
28
+ userId: string;
29
+ /** Descrição física que vale para TODAS as imagens dela. */
30
+ visualPrompt: string;
31
+ age: number;
32
+ referencePrompt: string;
33
+ references: InfluencerReferenceSheetDTO[];
34
+ loraStatus: InfluencerLoraStatus;
35
+ }
36
+ export interface UpsertInfluencerProfileBody {
37
+ visualPrompt: string;
38
+ age: number;
39
+ }
40
+ export interface GenerateInfluencerReferenceBody {
41
+ /** Se vier, substitui o prompt de referência guardado. */
42
+ prompt?: string;
43
+ provider?: MediaProviderName;
44
+ }
45
+ export interface GenerateInfluencerBookBody {
46
+ /** Ex.: "no estacionamento usando saia estampada e blusinha preta". */
47
+ situation: string;
48
+ count: number;
49
+ provider?: MediaProviderName;
50
+ }
51
+ export interface ReviewInfluencerReferenceBody {
52
+ approveKeys: string[];
53
+ deleteKeys: string[];
54
+ }
55
+ export interface ReviewInfluencerMediaBody {
56
+ approveIds: string[];
57
+ deleteIds: string[];
58
+ }
59
+ export interface InfluencerMediaDTO {
60
+ id: string;
61
+ userId: string;
62
+ kind: InfluencerMediaKind;
63
+ status: InfluencerMediaStatus;
64
+ url: string;
65
+ situation: string;
66
+ caption: string;
67
+ tags: string[];
68
+ createdAt: string;
69
+ }
70
+ export interface InfluencerJobDTO {
71
+ id: string;
72
+ status: MediaJobStatus;
73
+ total: number;
74
+ done: number;
75
+ failed: number;
76
+ costUsd: number;
77
+ error: string | null;
78
+ }
79
+ /** Resposta de busca do book para o bot. */
80
+ export interface InfluencerBookHitDTO {
81
+ id: string;
82
+ kind: InfluencerMediaKind;
83
+ caption: string;
84
+ situation: string;
85
+ tags: string[];
86
+ /** URL assinada de vida curta, pronta para o canal baixar/enviar. */
87
+ url: string;
88
+ }
89
+ /**
90
+ * O que vai no `label` de cada prompt enviado ao cb-media-gen para o book: volta
91
+ * no evento de conclusão e vira legenda, situação e tags da foto.
92
+ */
93
+ export interface InfluencerBookLabel {
94
+ situation: string;
95
+ caption: string;
96
+ tags: string[];
97
+ }
98
+ /** Pedido de foto/vídeo do book que o bot extrai da resposta da personagem. */
99
+ export interface InfluencerBookRequest {
100
+ kind: InfluencerMediaKind;
101
+ query: string;
102
+ }
103
+ /**
104
+ * A personagem como o admin a vê: personalidade (vai para o prompt do bot) e a
105
+ * parte visual (vai para as imagens). Mora no cb-crm, junto do agente.
106
+ */
107
+ export interface InfluencerCharacterDTO {
108
+ userId: string;
109
+ agentId: string;
110
+ isCouple: boolean;
111
+ name: string;
112
+ gender: string;
113
+ /** Corpo, rosto e estilo, em português: como ela mesma diria. */
114
+ physical: string;
115
+ age: number;
116
+ /** A mesma descrição, em inglês e em termos visuais, para os modelos de imagem. */
117
+ visualPrompt: string;
118
+ city: string;
119
+ state: string;
120
+ occupation: string;
121
+ personality: string;
122
+ hobbies: string[];
123
+ speakingStyle: string;
124
+ turnOns: string;
125
+ headline: string;
126
+ bio: string;
127
+ }
128
+ /** Idade e descrição visual não entram: têm dono único, a aba Referência (gn-business). */
129
+ export type UpdateInfluencerCharacterBody = Omit<InfluencerCharacterDTO, 'userId' | 'agentId' | 'isCouple' | 'age' | 'visualPrompt'>;
130
+ /** gn-business → cb-crm: o que a aba Referência salvou e o bot também precisa saber. */
131
+ export interface SyncInfluencerVisualBody {
132
+ age: number;
133
+ visualPrompt: string;
134
+ }
135
+ /** Uma linha do arquivo que leva idade e descrição visual do cb-crm ao gn-business. */
136
+ export interface CompanionVisualExport {
137
+ sellerId: string;
138
+ slug: string;
139
+ name: string;
140
+ age: number;
141
+ visualPrompt: string;
142
+ }
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InfluencerLoraStatus = exports.InfluencerMediaStatus = exports.InfluencerMediaKind = exports.INFLUENCER_MIN_AGE = void 0;
4
+ // Perfil visual e "book" (álbum de fotos e vídeos) de cada influencer do
5
+ // PrivateShow. Vive no gn-business; o cb-crm consulta o book para o bot enviar a
6
+ // foto certa na conversa (site, Telegram ou qualquer canal futuro).
7
+ /** Idade mínima aceita para qualquer personagem. */
8
+ exports.INFLUENCER_MIN_AGE = 25;
9
+ var InfluencerMediaKind;
10
+ (function (InfluencerMediaKind) {
11
+ InfluencerMediaKind["Photo"] = "photo";
12
+ InfluencerMediaKind["Video"] = "video";
13
+ })(InfluencerMediaKind || (exports.InfluencerMediaKind = InfluencerMediaKind = {}));
14
+ var InfluencerMediaStatus;
15
+ (function (InfluencerMediaStatus) {
16
+ /** Gerada, esperando o admin decidir se fica. */
17
+ InfluencerMediaStatus["Pending"] = "pending";
18
+ /** Aprovada: entra no book e pode ser enviada pelo bot. */
19
+ InfluencerMediaStatus["Approved"] = "approved";
20
+ })(InfluencerMediaStatus || (exports.InfluencerMediaStatus = InfluencerMediaStatus = {}));
21
+ var InfluencerLoraStatus;
22
+ (function (InfluencerLoraStatus) {
23
+ InfluencerLoraStatus["None"] = "none";
24
+ InfluencerLoraStatus["Training"] = "training";
25
+ InfluencerLoraStatus["Ready"] = "ready";
26
+ InfluencerLoraStatus["Failed"] = "failed";
27
+ })(InfluencerLoraStatus || (exports.InfluencerLoraStatus = InfluencerLoraStatus = {}));
@@ -0,0 +1,100 @@
1
+ export declare enum MediaProviderName {
2
+ /** GPU alugada sob demanda no Vast.ai. */
3
+ VastAi = "vastai",
4
+ /** API paga por imagem da Runware. */
5
+ Runware = "runware"
6
+ }
7
+ export declare enum MediaJobKind {
8
+ Image = "image",
9
+ Video = "video",
10
+ LoraTraining = "lora_training"
11
+ }
12
+ export declare enum MediaJobStatus {
13
+ Queued = "queued",
14
+ Running = "running",
15
+ /** Todos os itens saíram. */
16
+ Completed = "completed",
17
+ /** Alguns itens saíram e outros falharam (ou foram recusados). */
18
+ PartiallyCompleted = "partially_completed",
19
+ Failed = "failed",
20
+ Cancelled = "cancelled"
21
+ }
22
+ export interface MediaLora {
23
+ /** URL (ou id do provedor) do arquivo de LoRA. */
24
+ ref: string;
25
+ /** Peso de 0 a 2; 1 é o padrão. */
26
+ weight: number;
27
+ }
28
+ export interface MediaPrompt {
29
+ prompt: string;
30
+ negativePrompt?: string;
31
+ seed?: number;
32
+ width?: number;
33
+ height?: number;
34
+ /** Texto livre do chamador, devolvido junto do arquivo (ex.: legenda). */
35
+ label?: string;
36
+ }
37
+ export interface MediaJobAsset {
38
+ /** Posição do prompt de origem em `prompts`. */
39
+ index: number;
40
+ key: string;
41
+ url: string;
42
+ contentType: string;
43
+ bytes: number;
44
+ prompt: string;
45
+ label?: string;
46
+ seed?: number;
47
+ }
48
+ export interface MediaJobFailure {
49
+ index: number;
50
+ reason: string;
51
+ }
52
+ export interface CreateMediaJobBody {
53
+ provider: MediaProviderName;
54
+ kind: MediaJobKind;
55
+ /** Serviço que pediu, para rastrear (ex.: "gn-business"). */
56
+ callerService: string;
57
+ /** Referência livre do chamador, devolvida no evento (ex.: "profile:123"). */
58
+ callerRef: string;
59
+ prompts: MediaPrompt[];
60
+ /** Imagens de referência do rosto/estilo (URLs). */
61
+ referenceImageUrls?: string[];
62
+ loras?: MediaLora[];
63
+ /** Pasta no bucket, sem barra inicial. */
64
+ folder: string;
65
+ /** Pasta com prefixo tmp- para o que pode ser apagado a qualquer momento. */
66
+ temporary?: boolean;
67
+ /** Só para treino de LoRA: imagens do dataset. */
68
+ trainingImageUrls?: string[];
69
+ /** Teto de gasto do job em dólares. */
70
+ maxCostUsd?: number;
71
+ }
72
+ export interface MediaJobDTO {
73
+ id: string;
74
+ provider: MediaProviderName;
75
+ kind: MediaJobKind;
76
+ status: MediaJobStatus;
77
+ callerService: string;
78
+ callerRef: string;
79
+ total: number;
80
+ done: number;
81
+ assets: MediaJobAsset[];
82
+ failures: MediaJobFailure[];
83
+ costUsd: number;
84
+ error: string | null;
85
+ /** Para treino de LoRA: chave do arquivo treinado, quando pronto. */
86
+ loraKey: string | null;
87
+ createdAt: string;
88
+ updatedAt: string;
89
+ }
90
+ export interface MediaJobCompletedData {
91
+ jobId: string;
92
+ callerService: string;
93
+ callerRef: string;
94
+ kind: MediaJobKind;
95
+ status: MediaJobStatus;
96
+ assets: MediaJobAsset[];
97
+ failures: MediaJobFailure[];
98
+ /** Para treino de LoRA: onde ficou o arquivo treinado. */
99
+ loraUrl?: string;
100
+ }
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ // Tipos do cb-media-gen: geração de imagem/vídeo e treino de LoRA, reutilizável
3
+ // por qualquer projeto. O serviço não conhece personagens: quem chama diz o que
4
+ // gerar e recebe os arquivos prontos.
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.MediaJobStatus = exports.MediaJobKind = exports.MediaProviderName = void 0;
7
+ var MediaProviderName;
8
+ (function (MediaProviderName) {
9
+ /** GPU alugada sob demanda no Vast.ai. */
10
+ MediaProviderName["VastAi"] = "vastai";
11
+ /** API paga por imagem da Runware. */
12
+ MediaProviderName["Runware"] = "runware";
13
+ })(MediaProviderName || (exports.MediaProviderName = MediaProviderName = {}));
14
+ var MediaJobKind;
15
+ (function (MediaJobKind) {
16
+ MediaJobKind["Image"] = "image";
17
+ MediaJobKind["Video"] = "video";
18
+ MediaJobKind["LoraTraining"] = "lora_training";
19
+ })(MediaJobKind || (exports.MediaJobKind = MediaJobKind = {}));
20
+ var MediaJobStatus;
21
+ (function (MediaJobStatus) {
22
+ MediaJobStatus["Queued"] = "queued";
23
+ MediaJobStatus["Running"] = "running";
24
+ /** Todos os itens saíram. */
25
+ MediaJobStatus["Completed"] = "completed";
26
+ /** Alguns itens saíram e outros falharam (ou foram recusados). */
27
+ MediaJobStatus["PartiallyCompleted"] = "partially_completed";
28
+ MediaJobStatus["Failed"] = "failed";
29
+ MediaJobStatus["Cancelled"] = "cancelled";
30
+ })(MediaJobStatus || (exports.MediaJobStatus = MediaJobStatus = {}));
@@ -0,0 +1,20 @@
1
+ /** O que o modelo leu no comprovante. Nada aqui é confiável até ser validado. */
2
+ export interface PixReceiptReading {
3
+ /** A imagem ou o PDF é mesmo um comprovante de Pix. */
4
+ isPixReceipt: boolean;
5
+ /** Valor pago, em centavos. */
6
+ amountCents: number | null;
7
+ /** Código da transação (ID da transação / E2E), 32 caracteres. */
8
+ endToEndId: string | null;
9
+ /** Nome de quem recebeu, como aparece no comprovante. */
10
+ recipient: string | null;
11
+ }
12
+ /** Por que um comprovante não liberou mensagens. */
13
+ export declare enum PixReceiptRejection {
14
+ NotAReceipt = "NotAReceipt",
15
+ Unreadable = "Unreadable",
16
+ AmountTooLow = "AmountTooLow",
17
+ WrongRecipient = "WrongRecipient",
18
+ Expired = "Expired",
19
+ AlreadyUsed = "AlreadyUsed"
20
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ // ============================================
3
+ // COMPROVANTE DE PIX (créditos de mensagens no Telegram)
4
+ // ============================================
5
+ //
6
+ // A pessoa paga a chave Pix e manda o comprovante (foto ou PDF) na conversa.
7
+ // Um modelo de visão lê o que está escrito; quem decide se vale é o código,
8
+ // que confere valor, recebedor, janela de tempo e se o comprovante já foi usado.
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.PixReceiptRejection = void 0;
11
+ /** Por que um comprovante não liberou mensagens. */
12
+ var PixReceiptRejection;
13
+ (function (PixReceiptRejection) {
14
+ PixReceiptRejection["NotAReceipt"] = "NotAReceipt";
15
+ PixReceiptRejection["Unreadable"] = "Unreadable";
16
+ PixReceiptRejection["AmountTooLow"] = "AmountTooLow";
17
+ PixReceiptRejection["WrongRecipient"] = "WrongRecipient";
18
+ PixReceiptRejection["Expired"] = "Expired";
19
+ PixReceiptRejection["AlreadyUsed"] = "AlreadyUsed";
20
+ })(PixReceiptRejection || (exports.PixReceiptRejection = PixReceiptRejection = {}));
@@ -26,6 +26,27 @@ export interface TelegramBusinessConnection {
26
26
  rights?: TelegramBusinessBotRights;
27
27
  is_enabled: boolean;
28
28
  }
29
+ /** Um tamanho de foto; a última da lista é a maior. */
30
+ export interface TelegramPhotoSize {
31
+ file_id: string;
32
+ file_unique_id: string;
33
+ width: number;
34
+ height: number;
35
+ file_size?: number;
36
+ }
37
+ export interface TelegramDocument {
38
+ file_id: string;
39
+ file_unique_id: string;
40
+ file_name?: string;
41
+ mime_type?: string;
42
+ file_size?: number;
43
+ }
44
+ /** Resposta do `getFile`: o caminho para baixar o arquivo. */
45
+ export interface TelegramFile {
46
+ file_id: string;
47
+ file_path?: string;
48
+ file_size?: number;
49
+ }
29
50
  export interface TelegramMessage {
30
51
  message_id: number;
31
52
  date: number;
@@ -36,13 +57,13 @@ export interface TelegramMessage {
36
57
  sender_business_bot?: TelegramUser;
37
58
  text?: string;
38
59
  caption?: string;
39
- photo?: unknown[];
60
+ photo?: TelegramPhotoSize[];
40
61
  video?: unknown;
41
62
  video_note?: unknown;
42
63
  voice?: unknown;
43
64
  audio?: unknown;
44
65
  sticker?: unknown;
45
- document?: unknown;
66
+ document?: TelegramDocument;
46
67
  }
47
68
  export interface TelegramUpdate {
48
69
  update_id: number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wrcb/cb-common",
3
- "version": "1.0.907",
3
+ "version": "1.0.909",
4
4
  "description": "Common resources between services",
5
5
  "main": "./build/index.js",
6
6
  "types": "./build/index.d.ts",