@fayz-ai/core 0.8.2 → 0.8.3

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.
Files changed (54) hide show
  1. package/dist/{chunk-SO3VUKGZ.cjs → chunk-CATASHPK.cjs} +117 -4
  2. package/dist/chunk-CATASHPK.cjs.map +1 -0
  3. package/dist/{chunk-JHGXROKV.js → chunk-DZALZ6Q6.js} +117 -4
  4. package/dist/chunk-DZALZ6Q6.js.map +1 -0
  5. package/dist/{chunk-CYAWDW44.cjs → chunk-KSI2L3E4.cjs} +6 -4
  6. package/dist/chunk-KSI2L3E4.cjs.map +1 -0
  7. package/dist/{chunk-XJKW2JRW.js → chunk-TYPVSWLG.js} +6 -4
  8. package/dist/chunk-TYPVSWLG.js.map +1 -0
  9. package/dist/data/archetype.d.ts.map +1 -1
  10. package/dist/data/index.cjs +12 -12
  11. package/dist/data/index.js +1 -1
  12. package/dist/data/refresh.d.ts +36 -0
  13. package/dist/data/refresh.d.ts.map +1 -0
  14. package/dist/data/supabase.d.ts.map +1 -1
  15. package/dist/data/types.d.ts +6 -0
  16. package/dist/data/types.d.ts.map +1 -1
  17. package/dist/i18n/index.cjs +10 -10
  18. package/dist/i18n/index.js +1 -1
  19. package/dist/i18n/shell-translations.d.ts.map +1 -1
  20. package/dist/index.cjs +697 -88
  21. package/dist/index.cjs.map +1 -1
  22. package/dist/index.d.ts +5 -1
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +652 -59
  25. package/dist/index.js.map +1 -1
  26. package/dist/search/engine.d.ts +12 -0
  27. package/dist/search/engine.d.ts.map +1 -0
  28. package/dist/search/index.d.ts +5 -0
  29. package/dist/search/index.d.ts.map +1 -0
  30. package/dist/search/text.d.ts +37 -0
  31. package/dist/search/text.d.ts.map +1 -0
  32. package/dist/search/types.d.ts +72 -0
  33. package/dist/search/types.d.ts.map +1 -0
  34. package/dist/types/org.d.ts +28 -0
  35. package/dist/types/org.d.ts.map +1 -1
  36. package/dist/types/plugins.d.ts +4 -0
  37. package/dist/types/plugins.d.ts.map +1 -1
  38. package/package.json +2 -2
  39. package/src/data/archetype.ts +4 -2
  40. package/src/data/refresh.ts +105 -0
  41. package/src/data/supabase.ts +3 -1
  42. package/src/data/types.ts +6 -0
  43. package/src/i18n/shell-translations.ts +115 -2
  44. package/src/index.ts +19 -1
  45. package/src/search/engine.ts +551 -0
  46. package/src/search/index.ts +25 -0
  47. package/src/search/text.ts +206 -0
  48. package/src/search/types.ts +75 -0
  49. package/src/types/org.ts +29 -0
  50. package/src/types/plugins.ts +4 -0
  51. package/dist/chunk-CYAWDW44.cjs.map +0 -1
  52. package/dist/chunk-JHGXROKV.js.map +0 -1
  53. package/dist/chunk-SO3VUKGZ.cjs.map +0 -1
  54. package/dist/chunk-XJKW2JRW.js.map +0 -1
@@ -0,0 +1,12 @@
1
+ import type { GlobalSearchResult, SearchOptions } from './types';
2
+ /** Nothing shorter is worth a round-trip. */
3
+ export declare const MIN_QUERY_LENGTH = 2;
4
+ /** Test seam / manual override. */
5
+ export declare function setSearchIndexAvailable(value: boolean | null): void;
6
+ export declare function isSearchIndexAvailable(): boolean | null;
7
+ /** Drop every cached answer. Call on tenant switch and after writes. */
8
+ export declare function clearSearchCache(): void;
9
+ /** Search every target at once. Never throws for data reasons — a target that
10
+ * errors lands in `failed` and the rest of the answer still ships. */
11
+ export declare function searchEverything(rawQuery: string, options: SearchOptions): Promise<GlobalSearchResult>;
12
+ //# sourceMappingURL=engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/search/engine.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,kBAAkB,EAGlB,aAAa,EAGd,MAAM,SAAS,CAAA;AAQhB,6CAA6C;AAC7C,eAAO,MAAM,gBAAgB,IAAI,CAAA;AAiBjC,mCAAmC;AACnC,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI,CAEnE;AAED,wBAAgB,sBAAsB,IAAI,OAAO,GAAG,IAAI,CAEvD;AAwOD,wEAAwE;AACxE,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAmLD;uEACuE;AACvE,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,kBAAkB,CAAC,CAgF7B"}
@@ -0,0 +1,5 @@
1
+ export { searchEverything, clearSearchCache, setSearchIndexAvailable, isSearchIndexAvailable, MIN_QUERY_LENGTH, } from './engine';
2
+ export { foldText, foldWithMap, digitsOf, normalizeQuery, similarity, scoreCandidate, highlightRanges, } from './text';
3
+ export type { NormalizedQuery, RankCandidate } from './text';
4
+ export type { SearchTarget, SearchHit, SearchGroup, SearchPath, SearchOptions, GlobalSearchResult, } from './types';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/search/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,uBAAuB,EACvB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,UAAU,CAAA;AACjB,OAAO,EACL,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,cAAc,EACd,UAAU,EACV,cAAc,EACd,eAAe,GAChB,MAAM,QAAQ,CAAA;AACf,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA;AAC5D,YAAY,EACV,YAAY,EACZ,SAAS,EACT,WAAW,EACX,UAAU,EACV,aAAa,EACb,kBAAkB,GACnB,MAAM,SAAS,CAAA"}
@@ -0,0 +1,37 @@
1
+ /** Strip diacritics, lowercase, collapse non-alphanumerics to single spaces. */
2
+ export declare function foldText(value: unknown): string;
3
+ /** Fold, keeping each folded char's index in the source — used for highlighting. */
4
+ export declare function foldWithMap(value: string): {
5
+ folded: string;
6
+ map: number[];
7
+ };
8
+ /** Digits only — phone numbers, CPF/CNPJ, SKUs typed with separators. */
9
+ export declare function digitsOf(value: unknown): string;
10
+ export interface NormalizedQuery {
11
+ /** What the user typed, untouched. */
12
+ raw: string;
13
+ /** Folded form of the whole query — the "phrase". */
14
+ folded: string;
15
+ /** Folded query split on whitespace. */
16
+ tokens: string[];
17
+ /** Digits the user typed, when they typed enough of them to mean a number. */
18
+ digits: string;
19
+ /** The longest token — the most selective thing to send to a `%LIKE%` backend. */
20
+ anchor: string;
21
+ }
22
+ export declare function normalizeQuery(raw: string): NormalizedQuery;
23
+ /** 0 (nothing in common) … 1 (identical). Both inputs must already be folded. */
24
+ export declare function similarity(a: string, b: string): number;
25
+ export interface RankCandidate {
26
+ /** Folded display name — what the user is most likely aiming at. */
27
+ title: string;
28
+ /** Folded concatenation of every searchable value on the record. */
29
+ haystack: string;
30
+ /** Digits of every phone/document-ish value on the record. */
31
+ digits?: string;
32
+ }
33
+ /** Score a candidate 0…1. Zero means "not a match" — the score is also the filter. */
34
+ export declare function scoreCandidate(query: NormalizedQuery, candidate: RankCandidate): number;
35
+ /** Ranges in the ORIGINAL text covered by the query, merged and sorted. */
36
+ export declare function highlightRanges(text: string, query: NormalizedQuery): Array<[number, number]>;
37
+ //# sourceMappingURL=text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/search/text.ts"],"names":[],"mappings":"AAMA,gFAAgF;AAChF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAQ/C;AAED,oFAAoF;AACpF,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,EAAE,CAAA;CAAE,CAgB5E;AAED,yEAAyE;AACzE,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE/C;AAED,MAAM,WAAW,eAAe;IAC9B,sCAAsC;IACtC,GAAG,EAAE,MAAM,CAAA;IACX,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAA;IACd,wCAAwC;IACxC,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,8EAA8E;IAC9E,MAAM,EAAE,MAAM,CAAA;IACd,kFAAkF;IAClF,MAAM,EAAE,MAAM,CAAA;CACf;AAKD,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAa3D;AAYD,iFAAiF;AACjF,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAcvD;AAiBD,MAAM,WAAW,aAAa;IAC5B,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAA;IACb,oEAAoE;IACpE,QAAQ,EAAE,MAAM,CAAA;IAChB,8DAA8D;IAC9D,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAKD,sFAAsF;AACtF,wBAAgB,cAAc,CAAC,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,aAAa,GAAG,MAAM,CAgDvF;AAED,2EAA2E;AAC3E,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA2B7F"}
@@ -0,0 +1,72 @@
1
+ import type { EntityDef } from '../types/crud';
2
+ /** One searchable thing — declaring an entity is all it takes to be findable. */
3
+ export interface SearchTarget {
4
+ /** Stable entity key (`deriveEntityKey`): 'person:client', 'product', … */
5
+ key: string;
6
+ /** Plural human label; becomes the result group heading. */
7
+ label: string;
8
+ icon?: string;
9
+ entity: EntityDef;
10
+ mockData?: Array<{
11
+ id: string;
12
+ }>;
13
+ /** Multiplies the final score. Default 1. */
14
+ boost?: number;
15
+ }
16
+ export interface SearchHit {
17
+ /** `${target.key}:${record id}` — stable across both search paths. */
18
+ uid: string;
19
+ id: string;
20
+ /** Target key this record came from. */
21
+ key: string;
22
+ /** Group heading (the target's plural label). */
23
+ group: string;
24
+ icon?: string;
25
+ title: string;
26
+ subtitle?: string;
27
+ /** 0 … 1 (times the target boost). Higher is better. */
28
+ score: number;
29
+ archetype?: string;
30
+ archetypeKind?: string;
31
+ table?: string;
32
+ /** The row, when the path that found it had one. The index path returns
33
+ * titles only. */
34
+ record?: Record<string, unknown>;
35
+ }
36
+ export interface SearchGroup {
37
+ key: string;
38
+ label: string;
39
+ icon?: string;
40
+ hits: SearchHit[];
41
+ /** True when this group hit its per-target cap — more matches exist. */
42
+ hasMore: boolean;
43
+ }
44
+ export type SearchPath = 'index' | 'scan' | 'cache';
45
+ export interface GlobalSearchResult {
46
+ query: string;
47
+ hits: SearchHit[];
48
+ groups: SearchGroup[];
49
+ /** Which path produced this result — surfaced for diagnostics, not for UI. */
50
+ via: SearchPath;
51
+ /** Targets whose query failed. Never fatal: a broken table cannot blind the box. */
52
+ failed: string[];
53
+ /** Wall-clock milliseconds. */
54
+ elapsedMs: number;
55
+ /** True while a better (network) answer is still on its way. */
56
+ partial: boolean;
57
+ }
58
+ export interface SearchOptions {
59
+ /** Permission filtering is the caller's job — the engine searches what it's handed. */
60
+ targets: SearchTarget[];
61
+ /** Max hits returned overall. Default 30. */
62
+ limit?: number;
63
+ /** Max hits per target. Default 5. */
64
+ perTarget?: number;
65
+ /** Fired with early/partial answers before the authoritative one resolves. */
66
+ onPartial?: (result: GlobalSearchResult) => void;
67
+ /** Discard the result if this aborts. */
68
+ signal?: AbortSignal;
69
+ /** Skip the server index and force the per-entity scan (tests, diagnostics). */
70
+ forceScan?: boolean;
71
+ }
72
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/search/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAE9C,iFAAiF;AACjF,MAAM,WAAW,YAAY;IAC3B,2EAA2E;IAC3E,GAAG,EAAE,MAAM,CAAA;IACX,4DAA4D;IAC5D,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,SAAS,CAAA;IACjB,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAChC,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,SAAS;IACxB,sEAAsE;IACtE,GAAG,EAAE,MAAM,CAAA;IACX,EAAE,EAAE,MAAM,CAAA;IACV,wCAAwC;IACxC,GAAG,EAAE,MAAM,CAAA;IACX,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;uBACmB;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACjC;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,SAAS,EAAE,CAAA;IACjB,wEAAwE;IACxE,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAA;AAEnD,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,SAAS,EAAE,CAAA;IACjB,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,8EAA8E;IAC9E,GAAG,EAAE,UAAU,CAAA;IACf,oFAAoF;IACpF,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAA;IACjB,gEAAgE;IAChE,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,uFAAuF;IACvF,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,sCAAsC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,8EAA8E;IAC9E,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAA;IAChD,yCAAyC;IACzC,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,gFAAgF;IAChF,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB"}
@@ -32,6 +32,27 @@ export interface OrgMembership {
32
32
  profileId: string;
33
33
  profileName: string;
34
34
  }
35
+ /**
36
+ * A team member in the Person-first model: a person (of a configured team kind)
37
+ * with an OPTIONAL access overlay. `membership` is present only when the person
38
+ * has login + RBAC role (a `tenant_members` row linked by `person_id`).
39
+ */
40
+ export interface TeamPerson {
41
+ personId: string;
42
+ name: string;
43
+ kind: string;
44
+ email?: string;
45
+ avatarUrl?: string;
46
+ isActive: boolean;
47
+ membership?: {
48
+ memberId: string;
49
+ userId: string;
50
+ /** RBAC role key (tenant_members.role). */
51
+ profileId: string;
52
+ profileName?: string;
53
+ joinedAt?: string;
54
+ };
55
+ }
35
56
  export interface Location {
36
57
  id: string;
37
58
  tenantId: string;
@@ -71,6 +92,13 @@ export interface OrgAdapter {
71
92
  createOrg(name: string, userId: string, options?: CreateOrgOptions): Promise<Organization>;
72
93
  updateOrg(orgId: string, data: Partial<Organization>): Promise<Organization>;
73
94
  listMembers(orgId: string): Promise<OrgMember[]>;
95
+ /**
96
+ * Person-first team list: people whose `kind` is in `personKinds`, each with an
97
+ * optional membership overlay (login + role) linked by `tenant_members.person_id`.
98
+ * Optional so adapters can adopt it incrementally; the Team screen falls back to
99
+ * `listMembers` when absent or when no `personKinds` are configured.
100
+ */
101
+ listTeam?(orgId: string, personKinds: string[]): Promise<TeamPerson[]>;
74
102
  updateMemberProfile(orgId: string, memberId: string, profileId: string): Promise<void>;
75
103
  removeMember(orgId: string, memberId: string): Promise<void>;
76
104
  listProfiles(orgId: string): Promise<PermissionProfile[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"org.d.ts","sourceRoot":"","sources":["../../src/types/org.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAEtD,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAClC,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM,CAAA;QACV,KAAK,EAAE,MAAM,CAAA;QACb,QAAQ,EAAE,MAAM,CAAA;QAChB,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB,CAAA;IACD,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,OAAO,CAAA;IACvB,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAA;IAC1C,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAA;IACtD,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;IAC5C,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;IAC1F,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;IAC5E,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAA;IAChD,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACtF,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5D,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAA;IACzD,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,GAAG,UAAU,CAAC,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA;IAC7G,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA;IAC7G,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9D,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAC7C,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACjG,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IACpG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5D,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAC9D,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;IACjD,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;CACtL"}
1
+ {"version":3,"file":"org.d.ts","sourceRoot":"","sources":["../../src/types/org.ts"],"names":[],"mappings":"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"}
@@ -57,6 +57,10 @@ export interface PluginRouteDefinition {
57
57
  permission?: PluginPermissionRequirement;
58
58
  /** Render edge-to-edge with no page padding/animation wrapper (chat, kanban, canvas). */
59
59
  fullBleed?: boolean;
60
+ /** Archetypes this page displays (`archetype` or `archetype:kind`, e.g.
61
+ * `'schedule:appointment'`). A CRUD page claims its own; a hand-built page
62
+ * must declare it or records it owns resolve to no route. */
63
+ entityRoutes?: string[];
60
64
  }
61
65
  export type PluginWidgetZone = 'shell.sidebar.before-nav' | 'shell.sidebar.footer' | 'shell.topbar.start' | 'shell.topbar.end' | 'page.before' | 'page.after' | 'settings.before' | 'settings.after' | 'shell.floating' | (string & {});
62
66
  export declare const WidgetZone: {
@@ -1 +1 @@
1
- {"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/types/plugins.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AACvC,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AACzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAE1D,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,WAAW,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;AAC3G,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,OAAO,GAAG,QAAQ,CAAA;AAChF,MAAM,MAAM,YAAY,GAAG,eAAe,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAA;AAE9E;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,WAAW,GAAG,cAAc,GAAG,SAAS,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;AAE5F,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,gBAAgB,CAAA;CACzB;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,UAAU,CAAA;IAC1C,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE,2BAA2B,CAAA;IACxC;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;mCAE+B;IAC/B,SAAS,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;IACxC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,2BAA2B,CAAA;CACzC;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,wEAAwE;IACxE,SAAS,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;IACxC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,aAAa,CAAA;IAC3D,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,UAAU,CAAC,EAAE,2BAA2B,CAAA;IACxC,yFAAyF;IACzF,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,MAAM,MAAM,gBAAgB,GACxB,0BAA0B,GAC1B,sBAAsB,GACtB,oBAAoB,GACpB,kBAAkB,GAClB,aAAa,GACb,YAAY,GACZ,iBAAiB,GACjB,gBAAgB,GAChB,gBAAgB,GAChB,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;AAEjB,eAAO,MAAM,UAAU;;;;;;;;;;CAUb,CAAA;AAEV,MAAM,WAAW,mBAAmB;IAClC,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,WAAW,CAAC,EAAE,2BAA2B,EAAE,CAAA;IAC3C,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,OAAO,CAAA;CAClD;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAAA;IAClC,IAAI,EAAE,iBAAiB,GAAG,IAAI,CAAA;IAC9B,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,2BAA2B,KAAK,OAAO,CAAA;CAC9D;AAED,MAAM,WAAW,sBAAsB,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACvG,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,gBAAgB,CAAA;IACtB,wEAAwE;IACxE,SAAS,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;IACxC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,2BAA2B,CAAA;IACxC,UAAU,CAAC,EAAE,sBAAsB,CAAA;IACnC,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAOD,MAAM,MAAM,mBAAmB,GAAG,KAAK,GAAG,OAAO,GAAG,OAAO,GAAG,YAAY,GAAG,QAAQ,CAAA;AAErF;;;;iFAIiF;AACjF,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,aAAa,GAAG,cAAc,CAAA;AAEtE,MAAM,WAAW,kBAAkB,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAClG,sDAAsD;IACtD,EAAE,EAAE,MAAM,CAAA;IACV,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,qFAAqF;IACrF,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,mBAAmB,CAAA;IACzB,iFAAiF;IACjF,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACpB,gEAAgE;IAChE,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,wDAAwD;IACxD,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAC7B,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,UAAU,CAAC,EAAE,2BAA2B,CAAA;IACxC,wEAAwE;IACxE,SAAS,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;IACxC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,8EAA8E;AAC9E,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAClF;AAED,MAAM,WAAW,uBAAwB,SAAQ,kBAAkB;IACjE,kEAAkE;IAClE,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,sBAAsB,CAAA;CAC/B;AAED;0EAC0E;AAC1E,MAAM,WAAW,qBAAqB;IACpC,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,8DAA8D;IAC9D,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACxC;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,aAAa,CAAA;CAClD;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,sDAAsD;IACtD,MAAM,EAAE,MAAM,IAAI,CAAA;CACnB;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,SAAS,CAAA;AAE3C,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAA;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,KAAK,CAAC,EAAE,uBAAuB,CAAA;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,QAAQ,CAAA;IACd,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAA;IACnD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,UAAU,CAAA;CACxB;AAED,MAAM,MAAM,eAAe,GACvB;IAAE,KAAK,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,KAAK,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,KAAK,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACxD;IAAE,KAAK,EAAE,QAAQ,CAAA;CAAE,CAAA;AAEvB;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,yEAAyE;IACzE,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,6CAA6C;IAC7C,aAAa,CAAC,EAAE,gBAAgB,CAAA;IAChC,qDAAqD;IACrD,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,UAAU,CAAA;IAChB,UAAU,CAAC,EAAE,gBAAgB,CAAA;IAC7B,UAAU,CAAC,EAAE,2BAA2B,CAAA;IACxC;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;;;;;;OASG;IACH,SAAS,CAAC,EAAE,eAAe,CAAA;IAC3B;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,WAAW,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,SAAS,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,CAAA;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;IACX,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,wEAAwE;IACxE,SAAS,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,UAAU,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC,CAAA;IAC3D,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,qEAAqE;IACrE,QAAQ,EAAE;QACR,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;QACf,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;QAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;QACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;QACrB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAA;KACf,CAAA;IACD,oEAAoE;IACpE,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;CAClC;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf;wFACoF;IACpF,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,qFAAqF;IACrF,MAAM,CAAC,EAAE,qBAAqB,EAAE,CAAA;IAChC,4EAA4E;IAC5E,SAAS,CAAC,EAAE,YAAY,EAAE,CAAA;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,UAAU,EAAE,qBAAqB,EAAE,CAAA;IACnC,QAAQ,CAAC,EAAE,iBAAiB,EAAE,CAAA;IAC9B,MAAM,EAAE,qBAAqB,EAAE,CAAA;IAC/B,OAAO,CAAC,EAAE,sBAAsB,EAAE,CAAA;IAClC,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,kBAAkB,EAAE,CAAA;IACvC,YAAY,CAAC,EAAE,gBAAgB,EAAE,CAAA;IACjC,OAAO,CAAC,EAAE,YAAY,EAAE,CAAA;IACxB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,gBAAgB,CAAC,EAAE,kBAAkB,EAAE,CAAA;IACvC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,gBAAgB,EAAE,CAAA;IACnC,uEAAuE;IACvE,YAAY,CAAC,EAAE,mBAAmB,EAAE,CAAA;IACpC;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC;QACpB,GAAG,EAAE,MAAM,CAAA;QACX,MAAM,EAAE,SAAS,CAAA;QACjB,2EAA2E;QAC3E,QAAQ,CAAC,EAAE,OAAO,CAAA;KACnB,CAAC,CAAA;IACF,UAAU,CAAC,EAAE,iBAAiB,EAAE,CAAA;IAChC;;;;OAIG;IACH,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAA;IAClC,UAAU,CAAC,EAAE,eAAe,EAAE,CAAA;IAC9B,yEAAyE;IACzE,WAAW,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAChC,UAAU,CAAC,EAAE,gBAAgB,CAAA;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CACjD;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,YAAY,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACjC;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EACA,kBAAkB,GAClB,oBAAoB,GACpB,qBAAqB,GACrB,mBAAmB,GACnB,0BAA0B,CAAA;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,sBAAuB,SAAQ,cAAc;IAC5D,MAAM,EAAE,YAAY,CAAA;IACpB,QAAQ,EAAE,OAAO,CAAA;IACjB,gBAAgB,EAAE,SAAS,GAAG,QAAQ,GAAG,YAAY,GAAG,UAAU,CAAA;IAClE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,mBAAmB,EAAE,MAAM,EAAE,CAAA;IAC7B,YAAY,EAAE,iBAAiB,EAAE,CAAA;IACjC,OAAO,EAAE,sBAAsB,EAAE,CAAA;IACjC,kBAAkB,EAAE,iBAAiB,EAAE,CAAA;IACvC,eAAe,EAAE,YAAY,EAAE,CAAA;CAChC;AAED,MAAM,WAAW,oBAAoB,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CACrG,SAAQ,sBAAsB,CAAC,OAAO,CAAC;IACvC,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,OAAO,CAAA;IACf,MAAM,EAAE,sBAAsB,CAAA;CAC/B;AAED,MAAM,WAAW,kBAAmB,SAAQ,qBAAqB;IAC/D,MAAM,EAAE,sBAAsB,CAAA;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,oBAAoB,CAAA;IAC7B,OAAO,EAAE,sBAAsB,EAAE,CAAA;IACjC,aAAa,EAAE,sBAAsB,EAAE,CAAA;IACvC,MAAM,EAAE,kBAAkB,EAAE,CAAA;IAC5B,UAAU,EAAE,qBAAqB,EAAE,CAAA;IACnC,YAAY,EAAE,iBAAiB,EAAE,CAAA;IACjC,OAAO,EAAE,oBAAoB,EAAE,CAAA;IAC/B,gBAAgB,EAAE,uBAAuB,EAAE,CAAA;IAC3C,YAAY,EAAE,gBAAgB,EAAE,CAAA;IAChC,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,MAAM,EAAE,kBAAkB,EAAE,CAAA;IAC5B,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAA;IAC5C,wFAAwF;IACxF,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAA;IACpD,cAAc,EAAE,kBAAkB,EAAE,CAAA;IACpC,iFAAiF;IACjF,YAAY,EAAE,gBAAgB,EAAE,CAAA;CACjC"}
1
+ {"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/types/plugins.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "fayz": {
4
4
  "status": "beta"
5
5
  },
6
- "version": "0.8.2",
6
+ "version": "0.8.3",
7
7
  "description": "Fayz SDK core — data providers, entity system, plugin runtime, i18n, routing",
8
8
  "type": "module",
9
9
  "main": "./dist/index.cjs",
@@ -88,7 +88,7 @@
88
88
  "dependencies": {
89
89
  "@supabase/supabase-js": "^2.45.0",
90
90
  "zustand": "^4.5.0",
91
- "@fayz-ai/sdk": "^0.8.2"
91
+ "@fayz-ai/sdk": "^0.8.3"
92
92
  },
93
93
  "devDependencies": {
94
94
  "@types/react": "^18.3.0",
@@ -109,9 +109,11 @@ export function createArchetypeProvider<T extends { id: string }>(
109
109
 
110
110
  // Pure archetype → read public.<base> directly (filtered by kind);
111
111
  // otherwise the v_ view (JOINs public extension with the public archetype).
112
+ // 'none' skips PostgREST's count aggregate entirely — see CrudQuery.countMode.
113
+ const countOpts = query.countMode === 'none' ? undefined : { count: 'exact' as const }
112
114
  let q = isPure
113
- ? coreClient().from(ac.table).select('*', { count: 'exact' }).eq('tenant_id', tenantId)
114
- : getClient().from(viewName).select('*', { count: 'exact' }).eq('tenant_id', tenantId)
115
+ ? coreClient().from(ac.table).select('*', countOpts).eq('tenant_id', tenantId)
116
+ : getClient().from(viewName).select('*', countOpts).eq('tenant_id', tenantId)
115
117
 
116
118
  if (isPure && HAS_KIND.has(config.archetype)) {
117
119
  q = q.eq('kind', config.archetypeKind)
@@ -0,0 +1,105 @@
1
+ import * as React from 'react'
2
+ import { eventBus } from '../events'
3
+ import { globalCache } from '../lib/cache'
4
+ import { getActiveTenantId } from '../tenant'
5
+
6
+ // ---------------------------------------------------------------------------
7
+ // Data refresh bus — "something wrote; whoever is showing it should reload".
8
+ //
9
+ // A write that happens OUTSIDE the list showing it (the assistant creating an
10
+ // appointment, a webhook, another tab) used to leave the screen stale until the
11
+ // user reloaded by hand. Providers already invalidate their own read cache on
12
+ // create/update/remove, but a mounted list holds its rows in a store — nothing
13
+ // told it to fetch again.
14
+ //
15
+ // This is the missing half: one broadcast, every surface that renders the
16
+ // affected data listens. Deliberately coarse — a table name, not a row diff.
17
+ // Refetching a page of rows is cheap; a stale screen after "criei o
18
+ // agendamento" is not.
19
+ // ---------------------------------------------------------------------------
20
+
21
+ export const DATA_CHANGED_EVENT = 'data:changed'
22
+
23
+ export interface DataChangedPayload {
24
+ /** Physical table the write touched, when the writer knows it. */
25
+ table?: string
26
+ /** Registered entity key (deriveEntityKey), when the writer knows it. */
27
+ entityKey?: string
28
+ /** Archetype the record belongs to (`person:client`), when known. */
29
+ archetype?: string
30
+ op?: 'create' | 'update' | 'delete' | 'unknown'
31
+ /** Affected record id, when known. */
32
+ id?: string
33
+ /** What caused the write — lets a surface ignore its own UI writes. */
34
+ source?: 'agent' | 'ui' | 'remote'
35
+ }
36
+
37
+ /** What a subscriber renders. Any field left out matches everything. */
38
+ export interface DataChangedMatch {
39
+ table?: string
40
+ entityKey?: string
41
+ archetype?: string
42
+ }
43
+
44
+ /**
45
+ * A write with NO table/entityKey is a write we could not attribute (a plugin
46
+ * tool, an RPC). Subscribers still refresh for it: a redundant refetch costs a
47
+ * request, a missed one costs the user's trust in what the screen shows.
48
+ */
49
+ export function matchesDataChange(match: DataChangedMatch, payload: DataChangedPayload): boolean {
50
+ const attributed = payload.table ?? payload.entityKey ?? payload.archetype
51
+ if (!attributed) return true
52
+ if (match.table && payload.table && match.table === payload.table) return true
53
+ if (match.entityKey && payload.entityKey && match.entityKey === payload.entityKey) return true
54
+ if (match.archetype && payload.archetype && match.archetype === payload.archetype) return true
55
+ // A subscriber that declared nothing listens to everything.
56
+ return !match.table && !match.entityKey && !match.archetype
57
+ }
58
+
59
+ // One agent turn can write twice (create + link). Coalesce so the lists behind
60
+ // it fetch once, after the turn settles, instead of once per call.
61
+ let pending: DataChangedPayload[] = []
62
+ let flushTimer: ReturnType<typeof setTimeout> | null = null
63
+
64
+ function flush(): void {
65
+ const batch = pending
66
+ pending = []
67
+ flushTimer = null
68
+ for (const payload of batch) eventBus.emit(DATA_CHANGED_EVENT, payload)
69
+ }
70
+
71
+ /**
72
+ * Announce a write. Invalidates the provider read cache for the affected table
73
+ * (an unattributed write clears it wholesale — a stale hit would defeat the
74
+ * refetch it just triggered) and broadcasts to mounted surfaces.
75
+ */
76
+ export function emitDataChanged(payload: DataChangedPayload = {}): void {
77
+ if (payload.table) {
78
+ globalCache.invalidate(`${getActiveTenantId() ?? '_'}:${payload.table}`)
79
+ } else {
80
+ globalCache.clear()
81
+ }
82
+ pending.push({ op: 'unknown', source: 'agent', ...payload })
83
+ if (flushTimer) return
84
+ flushTimer = setTimeout(flush, 120)
85
+ }
86
+
87
+ /** Subscribe for the lifetime of the component. The latest handler always runs. */
88
+ export function useDataChanged(
89
+ match: DataChangedMatch,
90
+ handler: (payload: DataChangedPayload) => void,
91
+ deps: React.DependencyList = [],
92
+ ): void {
93
+ const handlerRef = React.useRef(handler)
94
+ handlerRef.current = handler
95
+ const { table, entityKey, archetype } = match
96
+
97
+ React.useEffect(
98
+ () =>
99
+ eventBus.on<DataChangedPayload>(DATA_CHANGED_EVENT, (payload) => {
100
+ if (matchesDataChange({ table, entityKey, archetype }, payload)) handlerRef.current(payload)
101
+ }),
102
+ // eslint-disable-next-line react-hooks/exhaustive-deps
103
+ [table, entityKey, archetype, ...deps],
104
+ )
105
+ }
@@ -82,8 +82,10 @@ export function createSupabaseProvider<T extends { id: string }>(
82
82
 
83
83
  return {
84
84
  async list(query: CrudQuery): Promise<CrudResult<T>> {
85
+ // 'none' skips PostgREST's count aggregate entirely — see CrudQuery.countMode.
86
+ const wantCount = query.countMode !== 'none'
85
87
  let q = (getClient().from(table) as { select: (...args: unknown[]) => unknown })
86
- .select(selectCols, { count: 'exact' }) as Record<string, unknown>
88
+ .select(selectCols, wantCount ? { count: 'exact' } : undefined) as Record<string, unknown>
87
89
 
88
90
  const tenantId = resolveTenantId()
89
91
  if (tenantId) q = (q as { eq: (col: string, val: string) => unknown }).eq(tenantIdCol, tenantId) as Record<string, unknown>
package/src/data/types.ts CHANGED
@@ -5,6 +5,12 @@ export interface CrudQuery {
5
5
  page?: number
6
6
  pageSize?: number
7
7
  filters?: Record<string, unknown>
8
+ /**
9
+ * Default 'exact' — a CRUD pager needs the total. It is a second aggregate
10
+ * over the filtered set, and on the live pool cost ~1070ms against ~270ms for
11
+ * the rows themselves. Callers that only want rows pass 'none' (total: 0).
12
+ */
13
+ countMode?: 'exact' | 'none'
8
14
  }
9
15
 
10
16
  export interface CrudResult<T> {
@@ -308,6 +308,8 @@ export const shellTranslations: Record<string, Record<string, string>> = {
308
308
  "upgrade.value.marketing": 'Campaigns, funnel and content to grow your client base.',
309
309
  "upgrade.value.reports": 'Advanced reports and insights to make sharper decisions.',
310
310
  "upgrade.value.fin_reconciliation": 'Reconcile payments and keep your cash flow under control.',
311
+ "upgrade.value.assistant": 'Your operations copilot — ask, analyze and act with AI.',
312
+ "upgrade.feature.assistant": 'AI Assistant',
311
313
  "billing.unlimited": 'Unlimited',
312
314
  "billing.upTo": 'Up to {count}',
313
315
  "limit.label.clients": 'clients',
@@ -326,6 +328,7 @@ export const shellTranslations: Record<string, Record<string, string>> = {
326
328
  "limit.label.leads": 'leads',
327
329
  "limit.label.quotes": 'quotes',
328
330
  "limit.label.conversations_month": 'monthly conversations',
331
+ "limit.label.ai_credits_month": 'AI credits per month',
329
332
  "limit.label.recipes": 'recipes',
330
333
  "limit.label.form_templates": 'form templates',
331
334
  "limit.label.documents_month": 'monthly documents',
@@ -415,16 +418,71 @@ export const shellTranslations: Record<string, Record<string, string>> = {
415
418
  "chat.defaultTitle": "Assistant",
416
419
  "chat.tryAsking": "Try asking",
417
420
  "chat.fab.tryIt": "Try it",
418
- "chat.messagePlaceholder": "Message...",
421
+ "chat.fab.dismiss": "Don't show suggestions here",
422
+ "chat.fab.open": "Open assistant",
423
+ "chat.fab.close": "Close assistant",
424
+ "chat.messagePlaceholder": "How can I help?",
425
+ "chat.send": "Send message",
419
426
  "chat.notConfigured": "Assistant not configured — set chat.apiEndpoint to enable conversations.",
427
+ "chat.unavailable": "Assistant unavailable",
428
+ "chat.greeting": "How can I help?",
429
+ "chat.greetingNamed": "Hi {{name}}, how can I help?",
430
+ "chat.greetingHint": "Ask in plain words, or tap the mic and just say it.",
431
+ "chat.status.ready": "Ready",
432
+ "chat.status.working": "Working on it...",
433
+ "chat.status.offline": "Not connected",
434
+ "chat.jumpToLatest": "Latest",
420
435
  "chat.confirmAction.title": "Confirm this action?",
421
436
  "chat.confirmAction.confirm": "Confirm",
422
437
  "chat.confirmAction.cancel": "Cancel",
438
+ "chat.confirmAction.always": "Always allow",
439
+ "chat.confirmAction.alwaysSession": "Allow this session",
440
+ "chat.confirmAction.alwaysHint": "Stop asking before \"{{label}}\"",
441
+ "chat.confirmAction.autoApproved": "auto",
442
+ "chat.confirmAction.autoApprovedHint": "Ran without asking — you allowed this action",
423
443
  "chat.confirmAction.blocked": "Respond to the confirmation above first",
444
+ "chat.confirmAction.showAll": "Add more fields ({{count}})",
445
+ "chat.confirmAction.showLess": "Show fewer fields",
446
+ // What a write ACTUALLY does, in the operator's words. The confirmation card
447
+ // looks up `chat.tool.<toolName>`; a tool with no entry falls back to its
448
+ // humanized name, never to the model-facing description.
449
+ "chat.tool.createAppointment": "Book an appointment",
450
+ "chat.tool.createRecord": "Create record",
451
+ "chat.tool.updateRecord": "Update record",
452
+ "chat.tool.deleteRecord": "Delete record",
453
+ "chat.tool.createOrder": "Create order",
454
+ "chat.tool.createInvoice": "Create invoice",
455
+ "chat.tool.markPaymentReceived": "Mark payment as received",
456
+ "chat.tool.createCampaign": "Create campaign",
457
+ "chat.tool.sendMessage": "Send message",
458
+ "chat.tool.seatGuests": "Seat guests",
459
+ "chat.tool.toggleMenuItemAvailability": "Change item availability",
460
+ "chat.autoApprovals.title": "Auto-approved actions",
461
+ "chat.autoApprovals.revoke": "Ask me again",
462
+ "chat.autoApprovals.revokeAll": "Ask for everything",
463
+ "chat.suggestions.show": "Show suggestions",
464
+ "chat.suggestions.hide": "Hide suggestions",
465
+ "chat.voice.start": "Speak",
466
+ "chat.voice.stop": "Stop recording",
467
+ "chat.voice.listening": "Listening — speak now",
468
+ "chat.voice.transcribing": "Transcribing...",
469
+ "chat.voice.denied": "Microphone blocked. Allow access in your browser settings.",
470
+ "chat.voice.network": "Could not reach the transcription service.",
471
+ "chat.voice.failed": "Could not hear that — try again.",
472
+ "chat.voice.speakOn": "Speak replies out loud",
473
+ "chat.voice.speakOff": "Mute spoken replies",
424
474
  "chat.signingIn": "One moment — still confirming your session.",
425
475
  "chat.history": "Previous conversations",
476
+ "chat.history.search": "Search conversations",
477
+ "chat.history.empty": "No conversations found.",
478
+ "chat.history.today": "Today",
479
+ "chat.history.yesterday": "Yesterday",
480
+ "chat.history.week": "Last 7 days",
481
+ "chat.history.older": "Earlier",
426
482
  "chat.newConversation": "New conversation",
427
483
  "chat.untitledConversation": "Untitled conversation",
484
+ "chat.recentConversations": "Recent",
485
+ "chat.backToConversations": "Back to conversations",
428
486
  "chat.renameConversation": "Rename",
429
487
  "chat.saveTitle": "Save title",
430
488
  "chat.toolsAvailable": "{{count}} tools available",
@@ -1079,6 +1137,8 @@ export const shellTranslations: Record<string, Record<string, string>> = {
1079
1137
  "upgrade.value.marketing": 'Campanhas, funil e conteúdo para crescer sua base de clientes.',
1080
1138
  "upgrade.value.reports": 'Relatórios avançados e insights para decidir com mais precisão.',
1081
1139
  "upgrade.value.fin_reconciliation": 'Concilie pagamentos e mantenha seu fluxo de caixa sob controle.',
1140
+ "upgrade.value.assistant": 'Seu copiloto de operações — pergunte, analise e aja com IA.',
1141
+ "upgrade.feature.assistant": 'Assistente de IA',
1082
1142
  "billing.unlimited": 'Ilimitado',
1083
1143
  "billing.upTo": 'Até {count}',
1084
1144
  "limit.label.clients": 'clientes',
@@ -1088,6 +1148,7 @@ export const shellTranslations: Record<string, Record<string, string>> = {
1088
1148
  "limit.label.leads": 'leads',
1089
1149
  "limit.label.quotes": 'orçamentos',
1090
1150
  "limit.label.conversations_month": 'conversas mensais',
1151
+ "limit.label.ai_credits_month": 'créditos de IA por mês',
1091
1152
  "limit.label.recipes": 'receitas',
1092
1153
  "limit.label.form_templates": 'modelos de formulário',
1093
1154
  "limit.label.documents_month": 'documentos mensais',
@@ -1273,16 +1334,68 @@ export const shellTranslations: Record<string, Record<string, string>> = {
1273
1334
  "chat.defaultTitle": "Assistente",
1274
1335
  "chat.tryAsking": "Experimente perguntar",
1275
1336
  "chat.fab.tryIt": "Experimente",
1276
- "chat.messagePlaceholder": "Mensagem...",
1337
+ "chat.fab.dismiss": "Não mostrar sugestões aqui",
1338
+ "chat.fab.open": "Abrir assistente",
1339
+ "chat.fab.close": "Fechar assistente",
1340
+ "chat.messagePlaceholder": "Como posso ajudar?",
1341
+ "chat.send": "Enviar mensagem",
1277
1342
  "chat.notConfigured": "Assistente não configurado — defina chat.apiEndpoint para habilitar conversas.",
1343
+ "chat.unavailable": "Assistente indisponível",
1344
+ "chat.greeting": "Como posso ajudar?",
1345
+ "chat.greetingNamed": "Oi {{name}}, como posso ajudar?",
1346
+ "chat.greetingHint": "Peça com suas palavras, ou toque no microfone e fale.",
1347
+ "chat.status.ready": "Pronto",
1348
+ "chat.status.working": "Trabalhando nisso...",
1349
+ "chat.status.offline": "Sem conexão",
1350
+ "chat.jumpToLatest": "Ir para o fim",
1278
1351
  "chat.confirmAction.title": "Confirmar esta ação?",
1279
1352
  "chat.confirmAction.confirm": "Confirmar",
1280
1353
  "chat.confirmAction.cancel": "Cancelar",
1354
+ "chat.confirmAction.always": "Sempre permitir",
1355
+ "chat.confirmAction.alwaysSession": "Permitir nesta sessão",
1356
+ "chat.confirmAction.alwaysHint": "Parar de perguntar antes de \"{{label}}\"",
1357
+ "chat.confirmAction.autoApproved": "auto",
1358
+ "chat.confirmAction.autoApprovedHint": "Executado sem perguntar — você liberou esta ação",
1281
1359
  "chat.confirmAction.blocked": "Responda a confirmação acima primeiro",
1360
+ "chat.confirmAction.showAll": "Preencher mais campos ({{count}})",
1361
+ "chat.confirmAction.showLess": "Mostrar menos campos",
1362
+ "chat.tool.createAppointment": "Marcar horário",
1363
+ "chat.tool.createRecord": "Criar registro",
1364
+ "chat.tool.updateRecord": "Atualizar registro",
1365
+ "chat.tool.deleteRecord": "Excluir registro",
1366
+ "chat.tool.createOrder": "Criar pedido",
1367
+ "chat.tool.createInvoice": "Emitir cobrança",
1368
+ "chat.tool.markPaymentReceived": "Marcar pagamento como recebido",
1369
+ "chat.tool.createCampaign": "Criar campanha",
1370
+ "chat.tool.sendMessage": "Enviar mensagem",
1371
+ "chat.tool.seatGuests": "Acomodar clientes",
1372
+ "chat.tool.toggleMenuItemAvailability": "Alterar disponibilidade do item",
1373
+ "chat.autoApprovals.title": "Ações liberadas",
1374
+ "chat.autoApprovals.revoke": "Voltar a perguntar",
1375
+ "chat.autoApprovals.revokeAll": "Perguntar sempre",
1376
+ "chat.suggestions.show": "Mostrar sugestões",
1377
+ "chat.suggestions.hide": "Ocultar sugestões",
1378
+ "chat.voice.start": "Falar",
1379
+ "chat.voice.stop": "Parar gravação",
1380
+ "chat.voice.listening": "Ouvindo — pode falar",
1381
+ "chat.voice.transcribing": "Transcrevendo...",
1382
+ "chat.voice.denied": "Microfone bloqueado. Libere o acesso nas configurações do navegador.",
1383
+ "chat.voice.network": "Não consegui falar com o serviço de transcrição.",
1384
+ "chat.voice.failed": "Não consegui entender — tente de novo.",
1385
+ "chat.voice.speakOn": "Responder em voz alta",
1386
+ "chat.voice.speakOff": "Silenciar respostas faladas",
1282
1387
  "chat.signingIn": "Um instante — ainda estou confirmando sua sessão.",
1283
1388
  "chat.history": "Conversas anteriores",
1389
+ "chat.history.search": "Buscar conversas",
1390
+ "chat.history.empty": "Nenhuma conversa encontrada.",
1391
+ "chat.history.today": "Hoje",
1392
+ "chat.history.yesterday": "Ontem",
1393
+ "chat.history.week": "Últimos 7 dias",
1394
+ "chat.history.older": "Mais antigas",
1284
1395
  "chat.newConversation": "Nova conversa",
1285
1396
  "chat.untitledConversation": "Conversa sem título",
1397
+ "chat.recentConversations": "Recentes",
1398
+ "chat.backToConversations": "Voltar para as conversas",
1286
1399
  "chat.renameConversation": "Renomear",
1287
1400
  "chat.saveTitle": "Salvar título",
1288
1401
  "chat.toolsAvailable": "{{count}} ferramentas disponíveis",