@fayz-ai/core 0.15.0 → 0.17.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-ZYHS7T5T.js → chunk-2VY5IJW7.js} +39 -5
- package/dist/chunk-2VY5IJW7.js.map +1 -0
- package/dist/{chunk-NBKFYGVD.js → chunk-2ZAUJVYP.js} +18 -3
- package/dist/chunk-2ZAUJVYP.js.map +1 -0
- package/dist/{chunk-UMIZDILP.js → chunk-AOIYRUTF.js} +16 -3
- package/dist/chunk-AOIYRUTF.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 +9 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +470 -14
- 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/plugin/index.js +1 -1
- package/dist/plugin/runtime.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-ZSSVWG6H.js} +28 -3
- package/dist/shell-translations.pt-br-ZSSVWG6H.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/onboarding.d.ts +206 -0
- package/dist/types/onboarding.d.ts.map +1 -0
- package/dist/types/org.d.ts +6 -0
- package/dist/types/org.d.ts.map +1 -1
- package/dist/types/plugins.d.ts +84 -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-UMIZDILP.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,101 @@
|
|
|
1
|
+
import type { TenantPluginBinding } from '../types/plugins';
|
|
2
|
+
/** One activation row: a plugin, or one facet of it. */
|
|
3
|
+
export interface AppConfigPlugin {
|
|
4
|
+
plugin: string;
|
|
5
|
+
/** null for the plugin itself; a name for one of its parts. */
|
|
6
|
+
facet: string | null;
|
|
7
|
+
status: 'active' | 'disabled';
|
|
8
|
+
/** Who turned it on — manual, plan, trial, agent, default. */
|
|
9
|
+
source: string;
|
|
10
|
+
config: Record<string, unknown>;
|
|
11
|
+
/** When a trial or courtesy ends; null is forever. */
|
|
12
|
+
expires_at: string | null;
|
|
13
|
+
}
|
|
14
|
+
/** The tenant's difference over the menu the plugins offer. */
|
|
15
|
+
export interface AppConfigNavEntry {
|
|
16
|
+
key: string;
|
|
17
|
+
hidden: boolean;
|
|
18
|
+
label: string | null;
|
|
19
|
+
section: 'main' | 'secondary' | 'settings' | null;
|
|
20
|
+
position: number | null;
|
|
21
|
+
}
|
|
22
|
+
export interface AppConfig {
|
|
23
|
+
tenant_id: string | null;
|
|
24
|
+
branding?: Record<string, unknown>;
|
|
25
|
+
settings?: Record<string, unknown>;
|
|
26
|
+
plugins: AppConfigPlugin[];
|
|
27
|
+
nav: AppConfigNavEntry[];
|
|
28
|
+
permissions?: string[];
|
|
29
|
+
generated_at?: string;
|
|
30
|
+
}
|
|
31
|
+
/** What a caller with no resolvable tenant gets: nothing, legibly. */
|
|
32
|
+
export declare const EMPTY_APP_CONFIG: AppConfig;
|
|
33
|
+
/**
|
|
34
|
+
* Reads the whole configuration in one round trip.
|
|
35
|
+
*
|
|
36
|
+
* Never throws: a shell that cannot render because the configuration call
|
|
37
|
+
* failed is worse than a shell that renders the defaults. The failure is
|
|
38
|
+
* returned as an empty configuration, which is the same thing the RPC returns
|
|
39
|
+
* for a caller with no tenant — and both are visible in one place rather than
|
|
40
|
+
* as a blank screen.
|
|
41
|
+
*/
|
|
42
|
+
export declare function fetchAppConfig(client: unknown, options?: {
|
|
43
|
+
tenantId?: string;
|
|
44
|
+
force?: boolean;
|
|
45
|
+
}): Promise<AppConfig>;
|
|
46
|
+
/** Drops what is cached — called after any write through the config RPCs. */
|
|
47
|
+
export declare function invalidateAppConfig(tenantId?: string): void;
|
|
48
|
+
export declare function normalizeAppConfig(raw: Partial<AppConfig>): AppConfig;
|
|
49
|
+
/**
|
|
50
|
+
* The activation rows as the plugin runtime already understands them.
|
|
51
|
+
*
|
|
52
|
+
* `resolvePluginRuntime` has accepted `tenantPlugins: TenantPluginBinding[]`
|
|
53
|
+
* since it was written and nothing ever supplied them from anywhere but a file.
|
|
54
|
+
* This is that supply — facet rows are folded into their plugin's config under
|
|
55
|
+
* `facets`, because a facet is a part of a plugin and not a plugin.
|
|
56
|
+
*/
|
|
57
|
+
export declare function toTenantPluginBindings(config: AppConfig): TenantPluginBinding[];
|
|
58
|
+
/**
|
|
59
|
+
* Applies the tenant's menu composition to what the plugins offer.
|
|
60
|
+
*
|
|
61
|
+
* Only the difference is stored, so an entry with no row here keeps exactly the
|
|
62
|
+
* position and label its plugin gave it — which is what lets a plugin ship a new
|
|
63
|
+
* entry and have it reach every tenant.
|
|
64
|
+
*/
|
|
65
|
+
export declare function applyNavComposition<T extends {
|
|
66
|
+
key: string;
|
|
67
|
+
label?: string;
|
|
68
|
+
section?: string;
|
|
69
|
+
position?: number;
|
|
70
|
+
}>(entries: T[], nav: AppConfigNavEntry[]): T[];
|
|
71
|
+
/** The keys a generated app must NOT ship in a file: they are per-tenant. */
|
|
72
|
+
export declare const TENANT_OWNED_MANIFEST_KEYS: readonly ["theme", "branding", "locale"];
|
|
73
|
+
export interface ManifestLike {
|
|
74
|
+
[key: string]: unknown;
|
|
75
|
+
theme?: Record<string, unknown>;
|
|
76
|
+
branding?: Record<string, unknown>;
|
|
77
|
+
locale?: Record<string, unknown>;
|
|
78
|
+
surfaces?: Record<string, {
|
|
79
|
+
plugins?: Array<{
|
|
80
|
+
id: string;
|
|
81
|
+
config?: Record<string, unknown>;
|
|
82
|
+
}>;
|
|
83
|
+
} & Record<string, unknown>>;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Folds the tenant's configuration over the bundle's manifest.
|
|
87
|
+
*
|
|
88
|
+
* What stays the manifest's: the surfaces, their scaffolds, and which plugin
|
|
89
|
+
* ids the bundle can load at all — an import-graph fact that no database row can
|
|
90
|
+
* change, because the code either shipped or it did not.
|
|
91
|
+
*
|
|
92
|
+
* What the database decides: branding, locale, and whether each of those
|
|
93
|
+
* plugins is on for this tenant, with its settings. That is the whole point of
|
|
94
|
+
* ADR 0023 — eleven customers stop needing eleven repositories, and turning a
|
|
95
|
+
* feature on stops being a deploy.
|
|
96
|
+
*
|
|
97
|
+
* An empty config changes nothing, so a pool that has not run migration 150 yet
|
|
98
|
+
* renders exactly what it rendered before.
|
|
99
|
+
*/
|
|
100
|
+
export declare function applyAppConfigToManifest<T extends ManifestLike>(manifest: T, config: AppConfig): T;
|
|
101
|
+
//# sourceMappingURL=app-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-config.d.ts","sourceRoot":"","sources":["../../src/app/app-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/** Why a call did not produce a value. Each one has a different right answer. */
|
|
2
|
+
export type ServiceRefusal =
|
|
3
|
+
/** The service is not registered, or was turned off. */
|
|
4
|
+
'unknown_service'
|
|
5
|
+
/** No tenant in scope — a caller that cannot be placed. */
|
|
6
|
+
| 'no_tenant'
|
|
7
|
+
/** The caller lacks the permission the service requires. */
|
|
8
|
+
| 'forbidden'
|
|
9
|
+
/** The tenant has not contracted it: an upsell, not an error. */
|
|
10
|
+
| 'not_contracted'
|
|
11
|
+
/** It did not answer in time. */
|
|
12
|
+
| 'timeout'
|
|
13
|
+
/** It answered with a failure. */
|
|
14
|
+
| 'failed'
|
|
15
|
+
/** There is nothing to call through (no client, no session). */
|
|
16
|
+
| 'unavailable';
|
|
17
|
+
export interface ServiceSuccess<T> {
|
|
18
|
+
ok: true;
|
|
19
|
+
data: T;
|
|
20
|
+
durationMs: number;
|
|
21
|
+
}
|
|
22
|
+
export interface ServiceFailure {
|
|
23
|
+
ok: false;
|
|
24
|
+
reason: ServiceRefusal;
|
|
25
|
+
/** What the user can still do, as the service itself declared it. */
|
|
26
|
+
manualFallback?: string;
|
|
27
|
+
/** For `not_contracted`: what to offer. */
|
|
28
|
+
entitlement?: string;
|
|
29
|
+
plugin?: string;
|
|
30
|
+
/** For `forbidden`: what would be needed. */
|
|
31
|
+
permission?: string;
|
|
32
|
+
message?: string;
|
|
33
|
+
}
|
|
34
|
+
export type ServiceResult<T> = ServiceSuccess<T> | ServiceFailure;
|
|
35
|
+
export interface CallServiceOptions {
|
|
36
|
+
/** Overrides the timeout the registry declares for this service. */
|
|
37
|
+
timeoutMs?: number;
|
|
38
|
+
/** The edge function that performs the HTTP leg. Defaults to 'service-router'. */
|
|
39
|
+
router?: string;
|
|
40
|
+
/**
|
|
41
|
+
* Calls on behalf of a tenant with no session — the event consumer's 2am
|
|
42
|
+
* reaction (#278). Requires a service-role client; a browser client passing
|
|
43
|
+
* this is refused by the router, not by trust.
|
|
44
|
+
*/
|
|
45
|
+
tenantId?: string;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Calls a service by name.
|
|
49
|
+
*
|
|
50
|
+
* Two round trips by design. The first asks the database whether the call is
|
|
51
|
+
* allowed — which costs nothing and answers the same way everywhere, so a
|
|
52
|
+
* refusal never leaves the cluster and an unentitled tenant never reaches the
|
|
53
|
+
* service at all. Only an allowed call makes the second.
|
|
54
|
+
*/
|
|
55
|
+
export declare function callService<T = unknown>(client: unknown, name: string, payload?: Record<string, unknown>, options?: CallServiceOptions): Promise<ServiceResult<T>>;
|
|
56
|
+
/**
|
|
57
|
+
* Calls a service for a tenant with no user present — the worker draining the
|
|
58
|
+
* event log (#277) reacting to a fact at 2am (#278).
|
|
59
|
+
*
|
|
60
|
+
* Same door, same refusals, same never-throws contract. What differs is who is
|
|
61
|
+
* asking: there is no person, so there is no permission to check, and the
|
|
62
|
+
* entitlement rule carries the whole decision because a tenant's contract is a
|
|
63
|
+
* property of the tenant rather than of who is looking.
|
|
64
|
+
*
|
|
65
|
+
* The client must hold the service role. A browser client that passes a tenant
|
|
66
|
+
* is refused by the router, which checks rather than trusts.
|
|
67
|
+
*/
|
|
68
|
+
export declare function callServiceForTenant<T = unknown>(client: unknown, tenantId: string, name: string, payload?: Record<string, unknown>, options?: Omit<CallServiceOptions, 'tenantId'>): Promise<ServiceResult<T>>;
|
|
69
|
+
//# sourceMappingURL=service-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-client.d.ts","sourceRoot":"","sources":["../../src/app/service-client.ts"],"names":[],"mappings":"AAgBA,iFAAiF;AACjF,MAAM,MAAM,cAAc;AACxB,wDAAwD;AACtD,iBAAiB;AACnB,2DAA2D;GACzD,WAAW;AACb,4DAA4D;GAC1D,WAAW;AACb,iEAAiE;GAC/D,gBAAgB;AAClB,iCAAiC;GAC/B,SAAS;AACX,kCAAkC;GAChC,QAAQ;AACV,gEAAgE;GAC9D,aAAa,CAAA;AAEjB,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,EAAE,EAAE,IAAI,CAAA;IACR,IAAI,EAAE,CAAC,CAAA;IACP,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,KAAK,CAAA;IACT,MAAM,EAAE,cAAc,CAAA;IACtB,qEAAqE;IACrE,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,2CAA2C;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,GAAG,cAAc,CAAA;AAajE,MAAM,WAAW,kBAAkB;IACjC,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,kFAAkF;IAClF,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,CAAC,GAAG,OAAO,EAC3C,MAAM,EAAE,OAAO,EACf,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACrC,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CA6D3B;AA2CD;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,GAAG,OAAO,EAC9C,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACrC,OAAO,GAAE,IAAI,CAAC,kBAAkB,EAAE,UAAU,CAAM,GACjD,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAE3B"}
|
|
@@ -19,6 +19,9 @@ var shellTranslationsEn = {
|
|
|
19
19
|
"common.error": "Something went wrong",
|
|
20
20
|
"common.noResults": "No results found.",
|
|
21
21
|
"common.search": "Search",
|
|
22
|
+
"common.new": "New",
|
|
23
|
+
"common.settings": "Settings",
|
|
24
|
+
"common.actionsMenu": "More actions",
|
|
22
25
|
"common.actions": "Actions",
|
|
23
26
|
"common.continue": "Continue",
|
|
24
27
|
"common.done": "Done",
|
|
@@ -89,6 +92,7 @@ var shellTranslationsEn = {
|
|
|
89
92
|
"auth.email": "Email",
|
|
90
93
|
"auth.password": "Password",
|
|
91
94
|
"auth.forgotPassword": "Forgot Password?",
|
|
95
|
+
"crud.list.emptyGeneric": "Nothing here yet",
|
|
92
96
|
"crud.list.empty": "No {{entities}} yet",
|
|
93
97
|
"crud.list.addFirst": "Add your first {{entity}}",
|
|
94
98
|
"crud.list.totalCount": "{{count}} total {{entities}}",
|
|
@@ -99,8 +103,11 @@ var shellTranslationsEn = {
|
|
|
99
103
|
"crud.list.pageOf": "{{page}} / {{pages}}",
|
|
100
104
|
"crud.list.prevPage": "Previous page",
|
|
101
105
|
"crud.list.nextPage": "Next page",
|
|
106
|
+
"crud.list.emptyFilteredGeneric": "No results for this search",
|
|
102
107
|
"crud.list.emptyFiltered": "No {{entities}} match this search",
|
|
108
|
+
"crud.list.emptyHintGeneric": "What you add shows up here.",
|
|
103
109
|
"crud.list.emptyHint": "Your {{entities}} will show up here once you add them.",
|
|
110
|
+
"crud.list.loadFailedGeneric": "Could not load",
|
|
104
111
|
"crud.list.loadFailed": "Could not load the {{entities}}",
|
|
105
112
|
"crud.list.refresh": "Refresh",
|
|
106
113
|
"crud.list.refreshCached": "Local (cached) data \u2014 click to refresh from network",
|
|
@@ -130,6 +137,7 @@ var shellTranslationsEn = {
|
|
|
130
137
|
"crud.detail.updatedAt": "Last edited {{date}}",
|
|
131
138
|
"crud.form.addTitle": "Add {{entity}}",
|
|
132
139
|
"crud.form.requiredField": "{{field}} is required",
|
|
140
|
+
"crud.form.requiredFields": "These are required: {{fields}}",
|
|
133
141
|
"crud.form.editTitle": "Edit {{entity}}",
|
|
134
142
|
"crud.form.createSubtitle": "Create a new {{entity}}.",
|
|
135
143
|
"crud.form.editSubtitle": "Update {{entity}} details.",
|
|
@@ -374,7 +382,14 @@ var shellTranslationsEn = {
|
|
|
374
382
|
"limit.label.content_posts_month": "monthly content posts",
|
|
375
383
|
"limit.label.blog_posts": "blog posts",
|
|
376
384
|
"limit.reached": "Voc\xEA atingiu o limite de {label} do plano {plan}.",
|
|
377
|
-
"banner.overLimit": "
|
|
385
|
+
"banner.overLimit": "You have exceeded your plan's {label} limit \u2014 upgrade to keep growing.",
|
|
386
|
+
"banner.overLimit.title": "You have used all your {resource}",
|
|
387
|
+
"banner.overLimit.planLabel": "{plan} plan",
|
|
388
|
+
"banner.overLimit.unlock": "Nothing is blocked. {plan} lifts this cap and keeps it out of your way.",
|
|
389
|
+
"banner.overLimit.body": "Nothing is blocked \u2014 but this is the ceiling of your plan.",
|
|
390
|
+
"banner.overLimit.ctaPriced": "Get {plan} \u2014 {price}/mo",
|
|
391
|
+
"banner.overLimit.compare": "Compare plans",
|
|
392
|
+
"banner.overLimit.more": "+{count} other limit(s) at the ceiling.",
|
|
378
393
|
"settings.team": "Team",
|
|
379
394
|
"settings.permissions": "Permissions",
|
|
380
395
|
"settings.locations": "Locations",
|
|
@@ -538,6 +553,9 @@ var shellTranslationsEn = {
|
|
|
538
553
|
"chat.tool.sendMessage": "Send message",
|
|
539
554
|
"chat.tool.seatGuests": "Seat guests",
|
|
540
555
|
"chat.tool.toggleMenuItemAvailability": "Change item availability",
|
|
556
|
+
"chat.tool.createShopOrder": "Place shop order",
|
|
557
|
+
"chat.tool.chargeShopOrder": "Charge the order",
|
|
558
|
+
"chat.tool.setShopOrderAddress": "Set delivery address",
|
|
541
559
|
"chat.autoApprovals.title": "Auto-approved actions",
|
|
542
560
|
"chat.autoApprovals.revoke": "Ask me again",
|
|
543
561
|
"chat.autoApprovals.revokeAll": "Ask for everything",
|
|
@@ -605,10 +623,12 @@ var shellTranslationsEn = {
|
|
|
605
623
|
"crud.form.showAllFields": "Fill in more fields",
|
|
606
624
|
"crud.form.showEssentialFields": "Show only the essentials",
|
|
607
625
|
"crud.form.select": "Select {{field}}...",
|
|
608
|
-
"crud.list.
|
|
626
|
+
"crud.list.records": "records",
|
|
627
|
+
"crud.list.addEntity": "Add {{entity}}",
|
|
609
628
|
"crud.list.aiHint": "Describe it and I create it for you.",
|
|
610
629
|
"crud.list.aiPlaceholder": "Describe what to create\u2026",
|
|
611
630
|
"crud.list.newHint": "Fill in one record by hand",
|
|
631
|
+
"crud.list.searchGeneric": "Search...",
|
|
612
632
|
"crud.list.search": "Search {{entities}}...",
|
|
613
633
|
"layout.bottomNav.chat": "Chat",
|
|
614
634
|
"layout.commandPalette.commandCount": "{{count}} command{{plural}}",
|
|
@@ -665,6 +685,7 @@ var shellTranslationsEn = {
|
|
|
665
685
|
"organization.permissions.previewingAs": "Previewing as",
|
|
666
686
|
"organization.permissions.exitPreview": "Exit Preview",
|
|
667
687
|
"organization.permissions.searchFeatures": "Search features...",
|
|
688
|
+
"organization.permissions.profile": "Profile",
|
|
668
689
|
"organization.permissions.profileName": "Profile Name",
|
|
669
690
|
"organization.permissions.profileNamePlaceholder": "e.g. Custom Role",
|
|
670
691
|
"organization.permissions.subtitle": "Manage roles and their permissions.",
|
|
@@ -678,6 +699,7 @@ var shellTranslationsEn = {
|
|
|
678
699
|
"organization.team.memberCount": "{{count}} member{{plural}} in this organization.",
|
|
679
700
|
"organization.team.pendingInvites": "Pending Invites",
|
|
680
701
|
"organization.team.removeMember": "Remove member",
|
|
702
|
+
"organization.team.unitAccess": "Access by unit",
|
|
681
703
|
"organization.team.resend": "Resend",
|
|
682
704
|
"organization.team.revoke": "Revoke",
|
|
683
705
|
"organization.team.inviteResent": "Invite resent",
|
|
@@ -824,6 +846,7 @@ var shellTranslationsEn = {
|
|
|
824
846
|
"crud.archetype.activity.description": "View a chronological log of all actions, changes, and events related to this person.",
|
|
825
847
|
"crud.archetype.documents.title": "Documents",
|
|
826
848
|
"crud.archetype.documents.description": "Attach and manage files, contracts, certifications, and other documents for this person.",
|
|
849
|
+
"crud.archetype.addresses.title": "Addresses",
|
|
827
850
|
"crud.archetype.addresses.add": "Add address",
|
|
828
851
|
"crud.archetype.addresses.addTitle": "New address",
|
|
829
852
|
"crud.archetype.addresses.editTitle": "Edit address",
|
|
@@ -1040,6 +1063,7 @@ var shellTranslationsEn = {
|
|
|
1040
1063
|
"tasks.detail.chatWithAi.prompt": "Take over this task and help me resolve it now, using your tools when needed:",
|
|
1041
1064
|
"tasks.detail.addSubtask": "Add subtask...",
|
|
1042
1065
|
"tasks.detail.back": "Back to list",
|
|
1066
|
+
"tasks.detail.title": "Task",
|
|
1043
1067
|
"tasks.summary.overdue": "overdue",
|
|
1044
1068
|
"tasks.summary.dueToday": "due today",
|
|
1045
1069
|
"tasks.empty": "No tasks yet",
|
|
@@ -1344,6 +1368,12 @@ var coreTranslations = {
|
|
|
1344
1368
|
"connectors.noOrg": "No organization",
|
|
1345
1369
|
"connectors.noOrgBody": "Pick an organization to see its connections.",
|
|
1346
1370
|
"connectors.credentials.held": "The key goes to Fayz, encrypted. It is never stored in this app\u2019s database.",
|
|
1371
|
+
// Where a credential is CHANGED, not only first entered.
|
|
1372
|
+
"connectors.credentials.section": "Credentials",
|
|
1373
|
+
// Saving REPLACES the whole credential, so a field left blank is a field
|
|
1374
|
+
// erased. Said before the save and not after, because after is a store that
|
|
1375
|
+
// stopped charging and nobody knowing why.
|
|
1376
|
+
"connectors.credentials.replaces": "Saving replaces every credential at once. Fill in ALL the fields \u2014 whatever you leave blank is erased.",
|
|
1347
1377
|
"connectors.credentials.noSink": "This app is not connected to a Fayz project that can hold credentials, so there is nowhere safe to keep this key. Connect the app to Fayz to finish.",
|
|
1348
1378
|
// A module named to someone who does not have it. The plugin id is not a
|
|
1349
1379
|
// label anywhere else because an installed module carries its own (usually
|
|
@@ -1355,6 +1385,7 @@ var coreTranslations = {
|
|
|
1355
1385
|
// label here, because a missing one prints the raw id to a business owner.
|
|
1356
1386
|
"modules.agenda": "Scheduling",
|
|
1357
1387
|
"modules.blog": "Blog",
|
|
1388
|
+
"modules.conversations": "Conversations",
|
|
1358
1389
|
"modules.courses": "Courses",
|
|
1359
1390
|
"modules.crm": "CRM",
|
|
1360
1391
|
"modules.custom_forms": "Forms",
|
|
@@ -1639,9 +1670,12 @@ var coreTranslations = {
|
|
|
1639
1670
|
"connectors.noOrg": "Sem organiza\xE7\xE3o",
|
|
1640
1671
|
"connectors.noOrgBody": "Escolha uma organiza\xE7\xE3o para ver as conex\xF5es dela.",
|
|
1641
1672
|
"connectors.credentials.held": "A chave vai criptografada para o Fayz. Ela nunca fica no banco de dados deste app.",
|
|
1673
|
+
"connectors.credentials.section": "Credenciais",
|
|
1674
|
+
"connectors.credentials.replaces": "Salvar substitui todas as credenciais de uma vez. Preencha TODOS os campos \u2014 o que ficar em branco \xE9 apagado.",
|
|
1642
1675
|
"connectors.credentials.noSink": "Este app n\xE3o est\xE1 ligado a um projeto Fayz que possa guardar credenciais, ent\xE3o n\xE3o h\xE1 onde essa chave fique em seguran\xE7a. Ligue o app ao Fayz para concluir.",
|
|
1643
1676
|
"modules.agenda": "Agenda",
|
|
1644
1677
|
"modules.blog": "Blog",
|
|
1678
|
+
"modules.conversations": "Conversas",
|
|
1645
1679
|
"modules.courses": "Cursos",
|
|
1646
1680
|
"modules.crm": "CRM",
|
|
1647
1681
|
"modules.custom_forms": "Formul\xE1rios",
|
|
@@ -1743,7 +1777,7 @@ function mergeTranslations(base, ...overrides) {
|
|
|
1743
1777
|
registerTranslations(coreTranslations);
|
|
1744
1778
|
registerTranslations({ en: shellTranslationsEn });
|
|
1745
1779
|
var _lazyShellLocales = {
|
|
1746
|
-
"pt-BR": () => import('./shell-translations.pt-br-
|
|
1780
|
+
"pt-BR": () => import('./shell-translations.pt-br-ZSSVWG6H.js').then((m) => m.shellTranslationsPtBr)
|
|
1747
1781
|
};
|
|
1748
1782
|
var _loadedShellLocales = /* @__PURE__ */ new Set(["en"]);
|
|
1749
1783
|
var _pendingShellLocales = /* @__PURE__ */ new Map();
|
|
@@ -1766,5 +1800,5 @@ function preloadLocale(locale) {
|
|
|
1766
1800
|
}
|
|
1767
1801
|
|
|
1768
1802
|
export { I18nProvider, coreTranslations, getCurrentLocale, mergeTranslations, preloadLocale, registerTranslations, setCurrentLocale, setLocaleStore, tl, useI18nConfig, useTranslation };
|
|
1769
|
-
//# sourceMappingURL=chunk-
|
|
1770
|
-
//# sourceMappingURL=chunk-
|
|
1803
|
+
//# sourceMappingURL=chunk-2VY5IJW7.js.map
|
|
1804
|
+
//# sourceMappingURL=chunk-2VY5IJW7.js.map
|