@fayz-ai/core 0.15.0 → 0.16.0
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/app/app-config.d.ts +101 -0
- package/dist/app/app-config.d.ts.map +1 -0
- package/dist/app/service-client.d.ts +69 -0
- package/dist/app/service-client.d.ts.map +1 -0
- package/dist/{chunk-NBKFYGVD.js → chunk-2ZAUJVYP.js} +18 -3
- package/dist/chunk-2ZAUJVYP.js.map +1 -0
- package/dist/{chunk-ZYHS7T5T.js → chunk-ZIB6Y7TE.js} +31 -4
- package/dist/chunk-ZIB6Y7TE.js.map +1 -0
- package/dist/data/index.d.ts +1 -0
- package/dist/data/index.d.ts.map +1 -1
- package/dist/data/index.js +1 -1
- package/dist/data/missing-objects.d.ts +14 -0
- package/dist/data/missing-objects.d.ts.map +1 -0
- package/dist/events/envelope.d.ts.map +1 -1
- package/dist/i18n/index.d.ts.map +1 -1
- package/dist/i18n/index.js +1 -1
- package/dist/i18n/shell-translations.en.d.ts.map +1 -1
- package/dist/i18n/shell-translations.pt-br.d.ts.map +1 -1
- package/dist/index.d.ts +8 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +468 -12
- package/dist/index.js.map +1 -1
- package/dist/lib/debug.d.ts +12 -0
- package/dist/lib/debug.d.ts.map +1 -0
- package/dist/messaging/index.d.ts +5 -2
- package/dist/messaging/index.d.ts.map +1 -1
- package/dist/messaging/phone.d.ts +32 -0
- package/dist/messaging/phone.d.ts.map +1 -0
- package/dist/messaging/provider-template.d.ts +122 -0
- package/dist/messaging/provider-template.d.ts.map +1 -0
- package/dist/messaging/registry.d.ts +12 -1
- package/dist/messaging/registry.d.ts.map +1 -1
- package/dist/messaging/types.d.ts +32 -0
- package/dist/messaging/types.d.ts.map +1 -1
- package/dist/search/engine.d.ts.map +1 -1
- package/dist/{shell-translations.pt-br-MHKHD3IX.js → shell-translations.pt-br-HD4F3QKU.js} +20 -3
- package/dist/shell-translations.pt-br-HD4F3QKU.js.map +1 -0
- package/dist/types/analytics.d.ts +15 -0
- package/dist/types/analytics.d.ts.map +1 -1
- package/dist/types/crud.d.ts +16 -0
- package/dist/types/crud.d.ts.map +1 -1
- package/dist/types/plugins.d.ts +73 -0
- package/dist/types/plugins.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-NBKFYGVD.js.map +0 -1
- package/dist/chunk-ZYHS7T5T.js.map +0 -1
- package/dist/shell-translations.pt-br-MHKHD3IX.js.map +0 -1
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
type LogFn = (message: string, ...data: unknown[]) => void;
|
|
2
|
+
export interface DebugLogger extends LogFn {
|
|
3
|
+
/** Amber, for the recoverable: a fallback taken, a retry scheduled. */
|
|
4
|
+
warn: LogFn;
|
|
5
|
+
/** Red, for the broken: a refused write, a dead letter, a bad contract. */
|
|
6
|
+
error: LogFn;
|
|
7
|
+
/** True when this scope currently prints — guard expensive payload builds. */
|
|
8
|
+
readonly enabled: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare function createDebug(scope: string): DebugLogger;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=debug.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../src/lib/debug.ts"],"names":[],"mappings":"AAmBA,KAAK,KAAK,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAA;AAE1D,MAAM,WAAW,WAAY,SAAQ,KAAK;IACxC,uEAAuE;IACvE,IAAI,EAAE,KAAK,CAAA;IACX,2EAA2E;IAC3E,KAAK,EAAE,KAAK,CAAA;IACZ,8EAA8E;IAC9E,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CAC1B;AA4CD,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAetD"}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
-
export type { MessageChannel, MessageKind, MessageDefault, MessageDefaultsDef, MessageTemplate, UpsertMessageTemplateInput, ResolvedMessage, } from './types';
|
|
2
|
-
export { registerMessageDefaults, getMessageDefaults, clearMessageDefaults, renderMessageTemplate, resolveMessages, resolveMessage, getEventsWithoutMessages, loadMessageOverrides, MESSAGE_TEMPLATES_TABLE, } from './registry';
|
|
1
|
+
export type { MessageChannel, MessageKind, MessageDefault, MessageDefaultsDef, MessageTemplate, UpsertMessageTemplateInput, ResolvedMessage, MessageAction, MessageActionId, MessageActionKind, } from './types';
|
|
2
|
+
export { registerMessageDefaults, getMessageDefaults, clearMessageDefaults, renderMessageTemplate, resolveMessages, resolveMessage, getEventsWithoutMessages, loadMessageOverrides, MESSAGE_TEMPLATES_TABLE, normalizeMessageActions, } from './registry';
|
|
3
|
+
export type { ProviderTemplateCategory, ProviderTemplateComponent, CompiledProviderTemplate, CompileProviderTemplateInput, CompileProviderTemplateResult, ProviderTemplateErrorCode, } from './provider-template';
|
|
4
|
+
export { compileProviderTemplate, providerTemplateName, positionalVariables, placementRuleApplies, shortHash, PROVIDER_TEMPLATE_LANGUAGE, MAX_QUICK_REPLY_BUTTONS, MAX_TEMPLATE_VARIABLES, DEFAULT_LEAD_PADDING, DEFAULT_TRAIL_PADDING, } from './provider-template';
|
|
5
|
+
export { normalizeBrPhoneToE164, brNationalNumber, brPhoneSuffixKey, BR_COUNTRY_CALLING_CODE, BR_MATCH_SUFFIX_LENGTH, } from './phone';
|
|
3
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/messaging/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,kBAAkB,EAC/D,eAAe,EAAE,0BAA0B,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/messaging/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,kBAAkB,EAC/D,eAAe,EAAE,0BAA0B,EAAE,eAAe,EAC5D,aAAa,EAAE,eAAe,EAAE,iBAAiB,GAClD,MAAM,SAAS,CAAA;AAChB,OAAO,EACL,uBAAuB,EAAE,kBAAkB,EAAE,oBAAoB,EACjE,qBAAqB,EAAE,eAAe,EAAE,cAAc,EACtD,wBAAwB,EAAE,oBAAoB,EAAE,uBAAuB,EACvE,uBAAuB,GACxB,MAAM,YAAY,CAAA;AACnB,YAAY,EACV,wBAAwB,EAAE,yBAAyB,EAAE,wBAAwB,EAC7E,4BAA4B,EAAE,6BAA6B,EAAE,yBAAyB,GACvF,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,uBAAuB,EAAE,oBAAoB,EAAE,mBAAmB,EAClE,oBAAoB,EAAE,SAAS,EAC/B,0BAA0B,EAAE,uBAAuB,EAAE,sBAAsB,EAC3E,oBAAoB,EAAE,qBAAqB,GAC5C,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,sBAAsB,EAAE,gBAAgB,EAAE,gBAAgB,EAC1D,uBAAuB,EAAE,sBAAsB,GAChD,MAAM,SAAS,CAAA"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/** Brazil. The only country code this module knows how to repair. */
|
|
2
|
+
export declare const BR_COUNTRY_CALLING_CODE = "55";
|
|
3
|
+
/**
|
|
4
|
+
* How many trailing digits identify a line no matter how it was written.
|
|
5
|
+
*
|
|
6
|
+
* Eight, because that is what survives every variation above: the area code can
|
|
7
|
+
* be missing, the country code can be missing, and the mobile 9 can be missing,
|
|
8
|
+
* but the last eight digits of a Brazilian line are the same in all four
|
|
9
|
+
* spellings. Nine would break on exactly the ambiguity this exists to bridge.
|
|
10
|
+
*/
|
|
11
|
+
export declare const BR_MATCH_SUFFIX_LENGTH = 8;
|
|
12
|
+
/**
|
|
13
|
+
* The number as `+55DDDNNNNNNNNN`, or `null` when the input cannot be one.
|
|
14
|
+
*
|
|
15
|
+
* `null` and not a throw, and not a best-effort string: the caller's next move
|
|
16
|
+
* is to refuse the send with the number named, and a function that returns
|
|
17
|
+
* something plausible for `'a combinar'` would send a booking confirmation into
|
|
18
|
+
* the void and report success.
|
|
19
|
+
*
|
|
20
|
+
* A number that already carries a DIFFERENT country code passes through
|
|
21
|
+
* untouched when it is a valid E.164 — a foreign customer's line is not a
|
|
22
|
+
* malformed Brazilian one, and "repairing" it would be the worst kind of wrong.
|
|
23
|
+
*/
|
|
24
|
+
export declare function normalizeBrPhoneToE164(input: string | null | undefined): string | null;
|
|
25
|
+
/** The national part of a normalized number — what the structured recipient wants. */
|
|
26
|
+
export declare function brNationalNumber(e164: string | null | undefined): string | null;
|
|
27
|
+
/**
|
|
28
|
+
* The key two spellings of one line agree on. For matching a stored contact
|
|
29
|
+
* against the number an inbound message arrived from — never for sending.
|
|
30
|
+
*/
|
|
31
|
+
export declare function brPhoneSuffixKey(input: string | null | undefined): string | null;
|
|
32
|
+
//# sourceMappingURL=phone.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phone.d.ts","sourceRoot":"","sources":["../../src/messaging/phone.ts"],"names":[],"mappings":"AAyBA,qEAAqE;AACrE,eAAO,MAAM,uBAAuB,OAAO,CAAA;AAE3C;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,IAAI,CAAA;AAoBvC;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAqCtF;AAED,sFAAsF;AACtF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAK/E;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAGhF"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import type { EventField } from '../events/types';
|
|
2
|
+
import type { MessageAction, MessageChannel } from './types';
|
|
3
|
+
/** Meta's three, and the only three Tyxter accepts. */
|
|
4
|
+
export type ProviderTemplateCategory = 'marketing' | 'utility' | 'authentication';
|
|
5
|
+
/** The one language this product writes in. A second one is a second template. */
|
|
6
|
+
export declare const PROVIDER_TEMPLATE_LANGUAGE = "pt_BR";
|
|
7
|
+
/** Meta renders at most three reply buttons; the fourth is silently dropped. */
|
|
8
|
+
export declare const MAX_QUICK_REPLY_BUTTONS = 3;
|
|
9
|
+
/**
|
|
10
|
+
* What goes in front of a body that opens on a variable, and behind one that
|
|
11
|
+
* closes on it.
|
|
12
|
+
*
|
|
13
|
+
* Padding rather than refusing, because the text is the tenant's and the rule
|
|
14
|
+
* is Meta's: a body ending `— {{business_name}}` is good copy that Meta will
|
|
15
|
+
* not take. A period is the smallest edit that keeps the sentence intact; a
|
|
16
|
+
* greeting is the smallest one that can open a message without changing tone.
|
|
17
|
+
*/
|
|
18
|
+
export declare const DEFAULT_LEAD_PADDING = "Ol\u00E1! ";
|
|
19
|
+
export declare const DEFAULT_TRAIL_PADDING = " At\u00E9 breve!";
|
|
20
|
+
export interface CompileProviderTemplateInput {
|
|
21
|
+
/** Domain event this text reacts to, e.g. `agenda.booking_created`. */
|
|
22
|
+
eventKey: string;
|
|
23
|
+
channel: MessageChannel;
|
|
24
|
+
/** The catalog body, with NAMED merge fields. */
|
|
25
|
+
body: string;
|
|
26
|
+
/** The event's own field descriptors — where each variable's example comes from. */
|
|
27
|
+
fields?: EventField[];
|
|
28
|
+
/** Channel-neutral actions; reply actions become QUICK_REPLY buttons. */
|
|
29
|
+
actions?: MessageAction[];
|
|
30
|
+
/**
|
|
31
|
+
* `marketing` templates are a different Meta category with different pacing
|
|
32
|
+
* and consent rules. Filing one as `utility` is what gets a WABA's quality
|
|
33
|
+
* rating cut, so the kind decides the category rather than a constant.
|
|
34
|
+
*/
|
|
35
|
+
kind?: 'transactional' | 'marketing';
|
|
36
|
+
/** Set for a tenant's own version of a product template; absent = the product default. */
|
|
37
|
+
tenantId?: string;
|
|
38
|
+
leadPadding?: string;
|
|
39
|
+
trailPadding?: string;
|
|
40
|
+
}
|
|
41
|
+
export interface ProviderTemplateComponent {
|
|
42
|
+
type: 'BODY' | 'BUTTONS';
|
|
43
|
+
text?: string;
|
|
44
|
+
example?: {
|
|
45
|
+
body_text: string[][];
|
|
46
|
+
};
|
|
47
|
+
buttons?: {
|
|
48
|
+
type: 'QUICK_REPLY';
|
|
49
|
+
text: string;
|
|
50
|
+
}[];
|
|
51
|
+
}
|
|
52
|
+
export interface CompiledProviderTemplate {
|
|
53
|
+
/** `^[a-z0-9_]+$`, unique per (name, language) inside the Tyxter environment. */
|
|
54
|
+
name: string;
|
|
55
|
+
language: typeof PROVIDER_TEMPLATE_LANGUAGE;
|
|
56
|
+
category: ProviderTemplateCategory;
|
|
57
|
+
components: ProviderTemplateComponent[];
|
|
58
|
+
/**
|
|
59
|
+
* Ordered field names: index 0 is `{{1}}`. This is what a send needs to turn
|
|
60
|
+
* `{customer_name: 'Maria'}` into `{'1': 'Maria'}`, and it is stored beside
|
|
61
|
+
* the approved template because an approved template is immutable — the map
|
|
62
|
+
* that produced it can never be recomputed from a body that has since moved.
|
|
63
|
+
*/
|
|
64
|
+
variableMap: string[];
|
|
65
|
+
/** Which button index carries which action. Index is Meta's, zero-based. */
|
|
66
|
+
actionsMap: {
|
|
67
|
+
index: number;
|
|
68
|
+
id: MessageAction['id'];
|
|
69
|
+
kind: MessageAction['kind'];
|
|
70
|
+
}[];
|
|
71
|
+
/** The positional body exactly as submitted — what a diff compares against. */
|
|
72
|
+
bodySnapshot: string;
|
|
73
|
+
/** True when Meta's placement rule forced copy in that was not written by hand. */
|
|
74
|
+
padded: {
|
|
75
|
+
lead: boolean;
|
|
76
|
+
trail: boolean;
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
export type CompileProviderTemplateResult = {
|
|
80
|
+
ok: true;
|
|
81
|
+
template: CompiledProviderTemplate;
|
|
82
|
+
} | {
|
|
83
|
+
ok: false;
|
|
84
|
+
code: ProviderTemplateErrorCode;
|
|
85
|
+
message: string;
|
|
86
|
+
detail?: string;
|
|
87
|
+
};
|
|
88
|
+
export type ProviderTemplateErrorCode = 'empty_body' | 'unknown_variable' | 'named_placeholder_left' | 'too_many_variables';
|
|
89
|
+
/** Meta's ceiling on body variables. Past it the template is rejected on review. */
|
|
90
|
+
export declare const MAX_TEMPLATE_VARIABLES = 10;
|
|
91
|
+
/**
|
|
92
|
+
* A Tyxter-legal template name for this (event × channel × owner).
|
|
93
|
+
*
|
|
94
|
+
* `^[a-z0-9_]+$` is the pattern the API enforces, so the dot in
|
|
95
|
+
* `agenda.booking_created` cannot survive. The tenant suffix is a hash and not
|
|
96
|
+
* the uuid because the uuid does not fit the 512-char name next to anything
|
|
97
|
+
* else and, more to the point, a template name is visible in Meta's Business
|
|
98
|
+
* Manager — a tenant id there is an internal identifier on someone else's
|
|
99
|
+
* screen.
|
|
100
|
+
*/
|
|
101
|
+
export declare function providerTemplateName(eventKey: string, tenantId?: string): string;
|
|
102
|
+
/**
|
|
103
|
+
* FNV-1a, 32-bit, base36. Not a cryptographic hash and not asked to be: it only
|
|
104
|
+
* has to keep two tenants' names apart inside one project, and it has to be the
|
|
105
|
+
* same in a browser, in Deno and in a test without importing anything.
|
|
106
|
+
*/
|
|
107
|
+
export declare function shortHash(value: string): string;
|
|
108
|
+
/** Whether Meta's "no variable at either edge" rule applies to this category. */
|
|
109
|
+
export declare function placementRuleApplies(category: ProviderTemplateCategory): boolean;
|
|
110
|
+
export declare function compileProviderTemplate(input: CompileProviderTemplateInput): CompileProviderTemplateResult;
|
|
111
|
+
/**
|
|
112
|
+
* Values for a send, keyed the way `POST /v1/messages` wants them.
|
|
113
|
+
*
|
|
114
|
+
* The map is read from the APPROVED template's stored `variable_map`, never
|
|
115
|
+
* recomputed from today's body: the template Meta approved is immutable, and a
|
|
116
|
+
* body edited since would silently renumber the variables of a message already
|
|
117
|
+
* in flight. A field the caller did not send becomes an empty string rather
|
|
118
|
+
* than a missing key — Meta refuses a send whose parameter count does not match
|
|
119
|
+
* the template, so a hole has to be a value.
|
|
120
|
+
*/
|
|
121
|
+
export declare function positionalVariables(variableMap: string[], values: Record<string, string | number | null | undefined>): Record<string, string>;
|
|
122
|
+
//# sourceMappingURL=provider-template.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-template.d.ts","sourceRoot":"","sources":["../../src/messaging/provider-template.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,19 @@
|
|
|
1
|
-
import type { MessageChannel, MessageDefaultsDef, MessageTemplate, ResolvedMessage } from './types';
|
|
1
|
+
import type { MessageAction, MessageChannel, MessageDefaultsDef, MessageTemplate, ResolvedMessage } from './types';
|
|
2
2
|
import type { ResolvedDomainEvent } from '../types/plugins';
|
|
3
3
|
export declare function registerMessageDefaults(defs: MessageDefaultsDef[]): void;
|
|
4
4
|
export declare function getMessageDefaults(): MessageDefaultsDef[];
|
|
5
5
|
export declare function clearMessageDefaults(): void;
|
|
6
|
+
/**
|
|
7
|
+
* Actions out of whatever a jsonb column holds.
|
|
8
|
+
*
|
|
9
|
+
* `null` and a malformed value are two different answers: null means "no row
|
|
10
|
+
* said anything, use the catalog", while a row holding junk means somebody
|
|
11
|
+
* customised it into a shape nothing can render — and rendering a button whose
|
|
12
|
+
* id is not in the closed set would send a payload the reply handler cannot
|
|
13
|
+
* match to any action, which reads to the customer as a button that does
|
|
14
|
+
* nothing. So junk collapses to an empty list, not to the default.
|
|
15
|
+
*/
|
|
16
|
+
export declare function normalizeMessageActions(value: unknown): MessageAction[] | null;
|
|
6
17
|
/**
|
|
7
18
|
* Substitutes the merge fields. Lives beside the catalog because PREVIEW and
|
|
8
19
|
* SEND must agree: a screen doing its own `replace` approves one text and
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/messaging/registry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EAAE,kBAAkB,EAAE,eAAe,EAAE,eAAe,EACrE,MAAM,SAAS,CAAA;AAChB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAY3D,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAExE;AAED,wBAAgB,kBAAkB,IAAI,kBAAkB,EAAE,CAEzD;AAED,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAE1F;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,eAAe,EAAE,EAC5B,MAAM,EAAE,mBAAmB,EAAE,GAC5B,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/messaging/registry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EAAE,kBAAkB,EAAE,eAAe,EAAE,eAAe,EACrE,MAAM,SAAS,CAAA;AAChB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAY3D,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAExE;AAED,wBAAgB,kBAAkB,IAAI,kBAAkB,EAAE,CAEzD;AAED,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C;AAKD;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,EAAE,GAAG,IAAI,CAc9E;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAE1F;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,eAAe,EAAE,EAC5B,MAAM,EAAE,mBAAmB,EAAE,GAC5B,eAAe,EAAE,CAkCnB;AAED,2EAA2E;AAC3E,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,eAAe,EAAE,EAC5B,MAAM,EAAE,mBAAmB,EAAE,GAC5B,eAAe,GAAG,IAAI,CAGxB;AAED;2CAC2C;AAC3C,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,mBAAmB,EAAE,GAAG,mBAAmB,EAAE,CAE7F;AAUD,eAAO,MAAM,uBAAuB,8BAA8B,CAAA;AAElE;oEACoE;AACpE,wBAAsB,oBAAoB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAyBxF"}
|
|
@@ -6,10 +6,37 @@ export type MessageChannel = 'email' | 'whatsapp' | 'sms' | 'push' | 'webchat';
|
|
|
6
6
|
* initiative — the distinction that decides whether sending needs consent.
|
|
7
7
|
*/
|
|
8
8
|
export type MessageKind = 'transactional' | 'marketing';
|
|
9
|
+
/**
|
|
10
|
+
* What the person can DO with the message, beyond reading it.
|
|
11
|
+
*
|
|
12
|
+
* Channel-neutral by construction: an id, a label and what kind of answer it
|
|
13
|
+
* produces. No provider vocabulary — WhatsApp renders these as QUICK_REPLY
|
|
14
|
+
* buttons (packages/core/src/messaging/provider-template.ts), a future channel
|
|
15
|
+
* may render them as links, and neither fact belongs in the catalog.
|
|
16
|
+
*
|
|
17
|
+
* The id is what comes BACK. It is carried in the button payload with the
|
|
18
|
+
* subject it acts on, which is what lets a reply update the right booking
|
|
19
|
+
* instead of guessing from the words the customer typed.
|
|
20
|
+
*/
|
|
21
|
+
export type MessageActionId = 'confirm' | 'cancel' | 'pay';
|
|
22
|
+
/** `reply` answers the message; `payment` asks for money and needs a rail behind it. */
|
|
23
|
+
export type MessageActionKind = 'reply' | 'payment';
|
|
24
|
+
export interface MessageAction {
|
|
25
|
+
id: MessageActionId;
|
|
26
|
+
/** What the button says. pt-BR, ≤ 20 characters — Meta truncates past that. */
|
|
27
|
+
label: string;
|
|
28
|
+
kind: MessageActionKind;
|
|
29
|
+
}
|
|
9
30
|
export interface MessageDefault {
|
|
10
31
|
/** Only meaningful on channels with a subject (email). */
|
|
11
32
|
subject?: string;
|
|
12
33
|
body: string;
|
|
34
|
+
/**
|
|
35
|
+
* Declared per CHANNEL and not per event: e-mail has no buttons, and an event
|
|
36
|
+
* that offers Confirmar on WhatsApp must not grow a dangling action on a
|
|
37
|
+
* channel that cannot render one.
|
|
38
|
+
*/
|
|
39
|
+
actions?: MessageAction[];
|
|
13
40
|
}
|
|
14
41
|
/**
|
|
15
42
|
* The default text a module suggests for an event. Registered separately from
|
|
@@ -40,6 +67,8 @@ export interface MessageTemplate {
|
|
|
40
67
|
body: string | null;
|
|
41
68
|
/** Name given when duplicating. Null = the event's title. */
|
|
42
69
|
name: string | null;
|
|
70
|
+
/** Null = use the catalog default. An empty array is a CHOICE: no buttons. */
|
|
71
|
+
actions: MessageAction[] | null;
|
|
43
72
|
updatedAt: string;
|
|
44
73
|
}
|
|
45
74
|
export interface UpsertMessageTemplateInput {
|
|
@@ -49,6 +78,7 @@ export interface UpsertMessageTemplateInput {
|
|
|
49
78
|
subject?: string | null;
|
|
50
79
|
body?: string | null;
|
|
51
80
|
name?: string | null;
|
|
81
|
+
actions?: MessageAction[] | null;
|
|
52
82
|
}
|
|
53
83
|
/** Event + channel + text, resolved — what the screen shows. */
|
|
54
84
|
export interface ResolvedMessage {
|
|
@@ -59,6 +89,8 @@ export interface ResolvedMessage {
|
|
|
59
89
|
enabled: boolean;
|
|
60
90
|
subject: string;
|
|
61
91
|
body: string;
|
|
92
|
+
/** The buttons this message goes out with. Empty = none. */
|
|
93
|
+
actions: MessageAction[];
|
|
62
94
|
/** true when the text was rewritten — the list flags it. */
|
|
63
95
|
customized: boolean;
|
|
64
96
|
/** Merge fields, derived from the event payload. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/messaging/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAc3D,0DAA0D;AAC1D,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAAA;AAE9E;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG,WAAW,CAAA;AAEvD,MAAM,WAAW,cAAc;IAC7B,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/messaging/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAc3D,0DAA0D;AAC1D,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAAA;AAE9E;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG,WAAW,CAAA;AAEvD;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,QAAQ,GAAG,KAAK,CAAA;AAE1D,wFAAwF;AACxF,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,SAAS,CAAA;AAEnD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,eAAe,CAAA;IACnB,+EAA+E;IAC/E,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,iBAAiB,CAAA;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ;;;;OAIG;IACH,OAAO,CAAC,EAAE,aAAa,EAAE,CAAA;CAC1B;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,WAAW,CAAA;IACjB,yCAAyC;IACzC,QAAQ,EAAE,cAAc,EAAE,CAAA;IAC1B,iFAAiF;IACjF,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC,CAAA;IACzD,sDAAsD;IACtD,cAAc,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAA;CAC1D;AAED,8DAA8D;AAC9D,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,cAAc,CAAA;IACvB,iDAAiD;IACjD,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;IACvB,sCAAsC;IACtC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,6DAA6D;IAC7D,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,8EAA8E;IAC9E,OAAO,EAAE,aAAa,EAAE,GAAG,IAAI,CAAA;IAC/B,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,cAAc,CAAA;IACvB,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IACxB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,OAAO,CAAC,EAAE,aAAa,EAAE,GAAG,IAAI,CAAA;CACjC;AAED,gEAAgE;AAChE,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,mBAAmB,CAAA;IAC1B,IAAI,EAAE,WAAW,CAAA;IACjB,OAAO,EAAE,cAAc,CAAA;IACvB,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAA;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,4DAA4D;IAC5D,OAAO,EAAE,aAAa,EAAE,CAAA;IACxB,4DAA4D;IAC5D,UAAU,EAAE,OAAO,CAAA;IACnB,oDAAoD;IACpD,YAAY,EAAE,MAAM,EAAE,CAAA;CACvB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/search/engine.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACV,kBAAkB,EAGlB,aAAa,EAGd,MAAM,SAAS,CAAA;AAQhB,6CAA6C;AAC7C,eAAO,MAAM,gBAAgB,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/search/engine.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACV,kBAAkB,EAGlB,aAAa,EAGd,MAAM,SAAS,CAAA;AAQhB,6CAA6C;AAC7C,eAAO,MAAM,gBAAgB,IAAI,CAAA;AA0BjC,mCAAmC;AACnC,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI,CAEnE;AAED,wBAAgB,sBAAsB,IAAI,OAAO,GAAG,IAAI,CAEvD;AAyOD,wEAAwE;AACxE,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AA8MD;uEACuE;AACvE,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,kBAAkB,CAAC,CAkF7B"}
|
|
@@ -15,6 +15,9 @@ var shellTranslationsPtBr = {
|
|
|
15
15
|
"common.error": "Algo deu errado",
|
|
16
16
|
"common.noResults": "Nenhum resultado encontrado.",
|
|
17
17
|
"common.search": "Buscar",
|
|
18
|
+
"common.new": "Novo",
|
|
19
|
+
"common.settings": "Configura\xE7\xF5es",
|
|
20
|
+
"common.actionsMenu": "Mais a\xE7\xF5es",
|
|
18
21
|
"common.actions": "A\xE7\xF5es",
|
|
19
22
|
"common.continue": "Continuar",
|
|
20
23
|
"common.done": "Pronto",
|
|
@@ -85,6 +88,7 @@ var shellTranslationsPtBr = {
|
|
|
85
88
|
"auth.email": "E-mail",
|
|
86
89
|
"auth.password": "Senha",
|
|
87
90
|
"auth.forgotPassword": "Esqueceu a Senha?",
|
|
91
|
+
"crud.list.emptyGeneric": "Nenhum registro ainda",
|
|
88
92
|
"crud.list.empty": "Nenhum(a) {{entities}} ainda",
|
|
89
93
|
"crud.list.addFirst": "Adicione seu(sua) primeiro(a) {{entity}}",
|
|
90
94
|
"crud.list.totalCount": "{{count}} {{entities}} no total",
|
|
@@ -95,8 +99,11 @@ var shellTranslationsPtBr = {
|
|
|
95
99
|
"crud.list.pageOf": "{{page}} / {{pages}}",
|
|
96
100
|
"crud.list.prevPage": "P\xE1gina anterior",
|
|
97
101
|
"crud.list.nextPage": "Pr\xF3xima p\xE1gina",
|
|
102
|
+
"crud.list.emptyFilteredGeneric": "Nenhum resultado para esta busca",
|
|
98
103
|
"crud.list.emptyFiltered": "Nenhum resultado em {{entities}} para esta busca",
|
|
104
|
+
"crud.list.emptyHintGeneric": "O que voc\xEA cadastrar aparece aqui.",
|
|
99
105
|
"crud.list.emptyHint": "Os seus {{entities}} aparecem aqui depois de cadastrados.",
|
|
106
|
+
"crud.list.loadFailedGeneric": "N\xE3o foi poss\xEDvel carregar",
|
|
100
107
|
"crud.list.loadFailed": "N\xE3o foi poss\xEDvel carregar os {{entities}}",
|
|
101
108
|
"crud.list.refresh": "Atualizar",
|
|
102
109
|
"crud.list.refreshCached": "Dados locais (cache) \u2014 clique para atualizar da rede",
|
|
@@ -126,6 +133,7 @@ var shellTranslationsPtBr = {
|
|
|
126
133
|
"crud.detail.updatedAt": "\xDAltima edi\xE7\xE3o {{date}}",
|
|
127
134
|
"crud.form.addTitle": "Adicionar {{entity}}",
|
|
128
135
|
"crud.form.requiredField": "Preencha {{field}}",
|
|
136
|
+
"crud.form.requiredFields": "Preencha: {{fields}}",
|
|
129
137
|
"crud.form.editTitle": "Editar {{entity}}",
|
|
130
138
|
"crud.form.createSubtitle": "Criar um(a) novo(a) {{entity}}.",
|
|
131
139
|
"crud.form.editSubtitle": "Atualizar detalhes de {{entity}}.",
|
|
@@ -373,10 +381,12 @@ var shellTranslationsPtBr = {
|
|
|
373
381
|
"crud.form.showAllFields": "Preencher mais campos",
|
|
374
382
|
"crud.form.showEssentialFields": "Mostrar s\xF3 o essencial",
|
|
375
383
|
"crud.form.select": "Selecione {{field}}...",
|
|
376
|
-
"crud.list.
|
|
384
|
+
"crud.list.records": "registros",
|
|
385
|
+
"crud.list.addEntity": "Adicionar {{entity}}",
|
|
377
386
|
"crud.list.aiHint": "Descreva e eu cadastro para voc\xEA.",
|
|
378
387
|
"crud.list.aiPlaceholder": "Descreva o que cadastrar\u2026",
|
|
379
388
|
"crud.list.newHint": "Preencher um cadastro \xE0 m\xE3o",
|
|
389
|
+
"crud.list.searchGeneric": "Buscar...",
|
|
380
390
|
"crud.list.search": "Buscar {{entities}}...",
|
|
381
391
|
"crud.import.action": "Importar",
|
|
382
392
|
"crud.import.hint": "Trazer v\xE1rios de uma planilha CSV",
|
|
@@ -477,6 +487,7 @@ var shellTranslationsPtBr = {
|
|
|
477
487
|
"organization.permissions.previewingAs": "Visualizando como",
|
|
478
488
|
"organization.permissions.exitPreview": "Sair da Visualiza\xE7\xE3o",
|
|
479
489
|
"organization.permissions.searchFeatures": "Buscar recursos...",
|
|
490
|
+
"organization.permissions.profile": "Perfil",
|
|
480
491
|
"organization.permissions.profileName": "Nome do Perfil",
|
|
481
492
|
"organization.permissions.profileNamePlaceholder": "ex.: Fun\xE7\xE3o Personalizada",
|
|
482
493
|
"organization.permissions.subtitle": "Gerencie fun\xE7\xF5es e suas permiss\xF5es.",
|
|
@@ -490,6 +501,7 @@ var shellTranslationsPtBr = {
|
|
|
490
501
|
"organization.team.memberCount": "{{count}} membro{{plural}} nesta organiza\xE7\xE3o.",
|
|
491
502
|
"organization.team.pendingInvites": "Convites Pendentes",
|
|
492
503
|
"organization.team.removeMember": "Remover membro",
|
|
504
|
+
"organization.team.unitAccess": "Acessos por unidade",
|
|
493
505
|
"organization.team.resend": "Reenviar",
|
|
494
506
|
"organization.team.revoke": "Revogar",
|
|
495
507
|
"organization.team.inviteResent": "Convite reenviado",
|
|
@@ -591,6 +603,9 @@ var shellTranslationsPtBr = {
|
|
|
591
603
|
"chat.tool.sendMessage": "Enviar mensagem",
|
|
592
604
|
"chat.tool.seatGuests": "Acomodar clientes",
|
|
593
605
|
"chat.tool.toggleMenuItemAvailability": "Alterar disponibilidade do item",
|
|
606
|
+
"chat.tool.createShopOrder": "Criar pedido da loja",
|
|
607
|
+
"chat.tool.chargeShopOrder": "Gerar cobran\xE7a do pedido",
|
|
608
|
+
"chat.tool.setShopOrderAddress": "Anotar endere\xE7o de entrega",
|
|
594
609
|
"chat.autoApprovals.title": "A\xE7\xF5es liberadas",
|
|
595
610
|
"chat.autoApprovals.revoke": "Voltar a perguntar",
|
|
596
611
|
"chat.autoApprovals.revokeAll": "Perguntar sempre",
|
|
@@ -818,6 +833,7 @@ var shellTranslationsPtBr = {
|
|
|
818
833
|
"crud.archetype.activity.description": "Veja um registro cronol\xF3gico de todas as a\xE7\xF5es, altera\xE7\xF5es e eventos relacionados a esta pessoa.",
|
|
819
834
|
"crud.archetype.documents.title": "Documentos",
|
|
820
835
|
"crud.archetype.documents.description": "Anexe e gerencie arquivos, contratos, certifica\xE7\xF5es e outros documentos desta pessoa.",
|
|
836
|
+
"crud.archetype.addresses.title": "Endere\xE7os",
|
|
821
837
|
"crud.archetype.addresses.add": "Adicionar endere\xE7o",
|
|
822
838
|
"crud.archetype.addresses.addTitle": "Novo endere\xE7o",
|
|
823
839
|
"crud.archetype.addresses.editTitle": "Editar endere\xE7o",
|
|
@@ -1031,6 +1047,7 @@ var shellTranslationsPtBr = {
|
|
|
1031
1047
|
"tasks.detail.chatWithAi.prompt": "Assuma esta tarefa e me ajude a resolver agora, usando suas ferramentas quando precisar:",
|
|
1032
1048
|
"tasks.detail.addSubtask": "Adicionar subtarefa...",
|
|
1033
1049
|
"tasks.detail.back": "Voltar \xE0 lista",
|
|
1050
|
+
"tasks.detail.title": "Tarefa",
|
|
1034
1051
|
"tasks.summary.overdue": "atrasadas",
|
|
1035
1052
|
"tasks.summary.dueToday": "vencem hoje",
|
|
1036
1053
|
"tasks.empty": "Nenhuma tarefa ainda",
|
|
@@ -1039,5 +1056,5 @@ var shellTranslationsPtBr = {
|
|
|
1039
1056
|
};
|
|
1040
1057
|
|
|
1041
1058
|
export { shellTranslationsPtBr };
|
|
1042
|
-
//# sourceMappingURL=shell-translations.pt-br-
|
|
1043
|
-
//# sourceMappingURL=shell-translations.pt-br-
|
|
1059
|
+
//# sourceMappingURL=shell-translations.pt-br-HD4F3QKU.js.map
|
|
1060
|
+
//# sourceMappingURL=shell-translations.pt-br-HD4F3QKU.js.map
|