@fayz-ai/admin 0.10.0 → 0.11.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.
Files changed (160) hide show
  1. package/dist/{ScheduleEditor-BSFF7LME.js → ScheduleEditor-S3QI5MHO.js} +5 -5
  2. package/dist/{ScheduleEditor-BSFF7LME.js.map → ScheduleEditor-S3QI5MHO.js.map} +1 -1
  3. package/dist/app/AdminShell.d.ts +9 -0
  4. package/dist/app/AdminShell.d.ts.map +1 -1
  5. package/dist/app/RouteErrorBoundary.d.ts +42 -0
  6. package/dist/app/RouteErrorBoundary.d.ts.map +1 -0
  7. package/dist/app/admin-app.d.ts +1 -0
  8. package/dist/app/admin-app.d.ts.map +1 -1
  9. package/dist/app/config.d.ts +7 -0
  10. package/dist/app/config.d.ts.map +1 -1
  11. package/dist/app/contextual-nav.store.d.ts +39 -0
  12. package/dist/app/contextual-nav.store.d.ts.map +1 -0
  13. package/dist/app/scaffold.d.ts.map +1 -1
  14. package/dist/{chunk-TNTZHUL6.js → chunk-OI7RYSTM.js} +8 -4
  15. package/dist/chunk-OI7RYSTM.js.map +1 -0
  16. package/dist/components/RightRail.d.ts.map +1 -1
  17. package/dist/components/auth/LoginForm.d.ts +3 -1
  18. package/dist/components/auth/LoginForm.d.ts.map +1 -1
  19. package/dist/components/auth/OAuthButtons.d.ts +3 -1
  20. package/dist/components/auth/OAuthButtons.d.ts.map +1 -1
  21. package/dist/components/chat/AssistantActivityBar.d.ts +15 -0
  22. package/dist/components/chat/AssistantActivityBar.d.ts.map +1 -0
  23. package/dist/components/chat/AssistantInvite.d.ts +7 -0
  24. package/dist/components/chat/AssistantInvite.d.ts.map +1 -0
  25. package/dist/components/chat/ChatComposer.d.ts.map +1 -1
  26. package/dist/components/chat/ChatConversation.d.ts.map +1 -1
  27. package/dist/components/chat/ChatFab.d.ts.map +1 -1
  28. package/dist/components/chat/ChatMessages.d.ts.map +1 -1
  29. package/dist/components/chat/ChatSuggestions.d.ts.map +1 -1
  30. package/dist/components/chat/ConnectorSuggestionCard.d.ts +6 -0
  31. package/dist/components/chat/ConnectorSuggestionCard.d.ts.map +1 -0
  32. package/dist/components/chat/index.d.ts +2 -0
  33. package/dist/components/chat/index.d.ts.map +1 -1
  34. package/dist/components/connect/AddConnectorPanel.d.ts +61 -10
  35. package/dist/components/connect/AddConnectorPanel.d.ts.map +1 -1
  36. package/dist/components/connect/ConnectorDeliveries.d.ts +10 -0
  37. package/dist/components/connect/ConnectorDeliveries.d.ts.map +1 -0
  38. package/dist/components/connect/ConnectorDetail.d.ts +21 -2
  39. package/dist/components/connect/ConnectorDetail.d.ts.map +1 -1
  40. package/dist/components/connect/ConnectorDisclosure.d.ts +29 -0
  41. package/dist/components/connect/ConnectorDisclosure.d.ts.map +1 -0
  42. package/dist/components/connect/ConnectorMark.d.ts +7 -1
  43. package/dist/components/connect/ConnectorMark.d.ts.map +1 -1
  44. package/dist/components/connect/ConnectorPermissions.d.ts +49 -0
  45. package/dist/components/connect/ConnectorPermissions.d.ts.map +1 -0
  46. package/dist/components/connect/ConnectorRow.d.ts +14 -7
  47. package/dist/components/connect/ConnectorRow.d.ts.map +1 -1
  48. package/dist/components/connect/ConnectorRuns.d.ts +50 -0
  49. package/dist/components/connect/ConnectorRuns.d.ts.map +1 -0
  50. package/dist/components/connect/ConnectorSettings.d.ts +29 -0
  51. package/dist/components/connect/ConnectorSettings.d.ts.map +1 -0
  52. package/dist/components/connect/ConnectorSyncActions.d.ts +15 -0
  53. package/dist/components/connect/ConnectorSyncActions.d.ts.map +1 -0
  54. package/dist/components/connect/ConnectorsPanel.d.ts +5 -3
  55. package/dist/components/connect/ConnectorsPanel.d.ts.map +1 -1
  56. package/dist/components/connect/ConnectorsTab.d.ts.map +1 -1
  57. package/dist/components/connect/connector-map.generated.d.ts +28 -0
  58. package/dist/components/connect/connector-map.generated.d.ts.map +1 -0
  59. package/dist/components/connect/connector-search.d.ts +104 -0
  60. package/dist/components/connect/connector-search.d.ts.map +1 -0
  61. package/dist/components/connect/connector-sources.d.ts +32 -0
  62. package/dist/components/connect/connector-sources.d.ts.map +1 -0
  63. package/dist/components/connect/connector-status.d.ts +15 -0
  64. package/dist/components/connect/connector-status.d.ts.map +1 -0
  65. package/dist/components/connect/credentials.d.ts +65 -0
  66. package/dist/components/connect/credentials.d.ts.map +1 -0
  67. package/dist/components/connect/index.d.ts +15 -3
  68. package/dist/components/connect/index.d.ts.map +1 -1
  69. package/dist/components/connect/model.d.ts +197 -23
  70. package/dist/components/connect/model.d.ts.map +1 -1
  71. package/dist/components/connect/oauth-return.d.ts +59 -0
  72. package/dist/components/connect/oauth-return.d.ts.map +1 -0
  73. package/dist/components/connect/useConnectors.d.ts +16 -2
  74. package/dist/components/connect/useConnectors.d.ts.map +1 -1
  75. package/dist/components/connect/when.d.ts +22 -0
  76. package/dist/components/connect/when.d.ts.map +1 -0
  77. package/dist/components/plugins/ConnectorsHub.d.ts.map +1 -1
  78. package/dist/components/plugins/PluginSettingsPanel.d.ts +10 -6
  79. package/dist/components/plugins/PluginSettingsPanel.d.ts.map +1 -1
  80. package/dist/components/right-rail.d.ts +4 -0
  81. package/dist/components/right-rail.d.ts.map +1 -1
  82. package/dist/components/settings/SettingsPage.d.ts +5 -2
  83. package/dist/components/settings/SettingsPage.d.ts.map +1 -1
  84. package/dist/components/shared/ContactPicker.d.ts +3 -1
  85. package/dist/components/shared/ContactPicker.d.ts.map +1 -1
  86. package/dist/components/shared/RecordPickerModal.d.ts +36 -0
  87. package/dist/components/shared/RecordPickerModal.d.ts.map +1 -0
  88. package/dist/crud/CrudDetailPage.d.ts +4 -1
  89. package/dist/crud/CrudDetailPage.d.ts.map +1 -1
  90. package/dist/crud/CrudFormPage.d.ts +9 -1
  91. package/dist/crud/CrudFormPage.d.ts.map +1 -1
  92. package/dist/crud/CrudListView.d.ts +30 -1
  93. package/dist/crud/CrudListView.d.ts.map +1 -1
  94. package/dist/crud/CrudPage.d.ts.map +1 -1
  95. package/dist/crud/CrudRecordModal.d.ts +19 -0
  96. package/dist/crud/CrudRecordModal.d.ts.map +1 -0
  97. package/dist/crud/RecordMetaFooter.d.ts +6 -0
  98. package/dist/crud/RecordMetaFooter.d.ts.map +1 -0
  99. package/dist/crud/archetypes/OrderDetailView.d.ts +7 -0
  100. package/dist/crud/archetypes/OrderDetailView.d.ts.map +1 -1
  101. package/dist/crud/archetypes/OrderFormView.d.ts +1 -0
  102. package/dist/crud/archetypes/OrderFormView.d.ts.map +1 -1
  103. package/dist/crud/archetypes/OrderListView.d.ts +29 -1
  104. package/dist/crud/archetypes/OrderListView.d.ts.map +1 -1
  105. package/dist/crud/entity-zone.d.ts +19 -0
  106. package/dist/crud/entity-zone.d.ts.map +1 -0
  107. package/dist/crud/index.d.ts +1 -1
  108. package/dist/crud/index.d.ts.map +1 -1
  109. package/dist/data/client.d.ts.map +1 -1
  110. package/dist/hooks/useChat.d.ts +1 -0
  111. package/dist/hooks/useChat.d.ts.map +1 -1
  112. package/dist/hooks/useMicLevels.d.ts +7 -2
  113. package/dist/hooks/useMicLevels.d.ts.map +1 -1
  114. package/dist/index.d.ts +32 -5
  115. package/dist/index.d.ts.map +1 -1
  116. package/dist/index.js +5667 -1563
  117. package/dist/index.js.map +1 -1
  118. package/dist/lib/ai-tool-handlers.d.ts +11 -0
  119. package/dist/lib/ai-tool-handlers.d.ts.map +1 -1
  120. package/dist/lib/assistant-activity.d.ts +81 -0
  121. package/dist/lib/assistant-activity.d.ts.map +1 -0
  122. package/dist/lib/assistant-invite.d.ts +46 -0
  123. package/dist/lib/assistant-invite.d.ts.map +1 -0
  124. package/dist/lib/connector-ai-tools.d.ts +2 -0
  125. package/dist/lib/connector-ai-tools.d.ts.map +1 -0
  126. package/dist/lib/connector-cards.d.ts +3 -0
  127. package/dist/lib/connector-cards.d.ts.map +1 -0
  128. package/dist/lib/core-ai-tools.d.ts.map +1 -1
  129. package/dist/lib/fayz-events.d.ts +4 -0
  130. package/dist/lib/fayz-events.d.ts.map +1 -0
  131. package/dist/org/adapters/supabase.d.ts.map +1 -1
  132. package/dist/org/index.js +1 -1
  133. package/dist/plugins/SettingsGroup.d.ts +31 -1
  134. package/dist/plugins/SettingsGroup.d.ts.map +1 -1
  135. package/dist/projects/SeuSiteWidget.d.ts.map +1 -1
  136. package/dist/stores/audit.d.ts +61 -0
  137. package/dist/stores/audit.d.ts.map +1 -0
  138. package/dist/stores/chat.store.d.ts +33 -0
  139. package/dist/stores/chat.store.d.ts.map +1 -1
  140. package/dist/stores/createCrudStore.d.ts +4 -1
  141. package/dist/stores/createCrudStore.d.ts.map +1 -1
  142. package/dist/theme/utils.d.ts.map +1 -1
  143. package/dist/timeline/PersonTimeline.d.ts +21 -0
  144. package/dist/timeline/PersonTimeline.d.ts.map +1 -0
  145. package/dist/timeline/core-sources.d.ts +2 -0
  146. package/dist/timeline/core-sources.d.ts.map +1 -0
  147. package/dist/timeline/index.d.ts +6 -0
  148. package/dist/timeline/index.d.ts.map +1 -0
  149. package/dist/timeline/registry.d.ts +5 -0
  150. package/dist/timeline/registry.d.ts.map +1 -0
  151. package/dist/timeline/types.d.ts +91 -0
  152. package/dist/timeline/types.d.ts.map +1 -0
  153. package/dist/timeline/usePersonTimeline.d.ts +28 -0
  154. package/dist/timeline/usePersonTimeline.d.ts.map +1 -0
  155. package/dist/types/crud.d.ts +12 -1
  156. package/dist/types/crud.d.ts.map +1 -1
  157. package/dist/types/plugins.d.ts +4 -0
  158. package/dist/types/plugins.d.ts.map +1 -1
  159. package/package.json +7 -7
  160. package/dist/chunk-TNTZHUL6.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
- import { type UnifiedConnector } from './model';
2
+ import { type ShelfIntegration, type UnifiedConnector } from './model';
3
3
  /**
4
- * The Fayz connector directory, as an "add" panel.
4
+ * What this app can be connected to, as an "add" panel.
5
5
  *
6
6
  * It lists the very same rows the hub does — same id, same mark, same badges —
7
7
  * because "Google Calendar" browsed here and "Google Calendar" configured in
@@ -9,22 +9,73 @@ import { type UnifiedConnector } from './model';
9
9
  * a name. Picking one opens the same journey panel; nothing is duplicated here,
10
10
  * so nothing can drift.
11
11
  *
12
- * Three states exist and the panel has to tell them apart, because collapsing
13
- * them is how a catalogue turns into a promise:
12
+ * Three sections, and the lines between them are what the app can actually do:
14
13
  *
15
- * - **pronto para conectar** — a plugin in THIS app contributes it, so there
16
- * is a real place to go and connect it.
17
- * - **disponível no Fayz** — the platform has it built, but this app lacks the
18
- * plugin that hosts it.
19
- * - **em breve** — a catalogue entry with nothing behind it yet.
14
+ * - **Instalados** — a plugin in this build contributes the connector, so it
15
+ * can be connected now. One click, same journey as the hub.
16
+ * - **Em breve** — a module this app HAS put the provider on its shelf, and
17
+ * the integration is not built yet. Informational: it is the honest answer
18
+ * to "o Kommo dá pra ligar?" from someone who has CRM.
19
+ * - **Disponíveis com outro módulo** — the provider belongs to a module this
20
+ * app was not built with.
21
+ *
22
+ * The last two are inert rows: they say why and stop. Not a disabled button,
23
+ * because a disabled control reads as something the user could fix, and a
24
+ * tenant admin cannot — modules are chosen when the app is built, there is no
25
+ * install path, no plan that unlocks one, and no route to link to (see
26
+ * ConnectorDetail's Note pattern, and #89's two-state ConnectorState).
27
+ *
28
+ * Both come from `SDK_INTEGRATIONS`, generated from the plugin manifests in
29
+ * this repo — never from the platform catalogue, whose `enabled` flag is
30
+ * addressed to a builder org and is how a salon owner was once offered Supabase
31
+ * and Anthropic. The catalogue is read only for a row's brand mark and its
32
+ * localized name; a provider no module declared appears in no list at all.
33
+ *
34
+ * The way to ask for more is the assistant — never a link into the builder
35
+ * directory, which is the same audience confusion wearing a politer hat.
36
+ *
37
+ * **`categories` scopes it to the section that opened it.** Opened from
38
+ * "Provedores de pagamento", the panel offered Bling and Melhor Envio — an ERP
39
+ * and a carrier, under a button whose only promise was a gateway. The section
40
+ * already knows which categories it is about (it filters its own list by them),
41
+ * so it says so here and the panel narrows: the same rows, the same journey,
42
+ * minus everything that could not have answered the question that was asked.
20
43
  */
21
- export declare function AddConnectorPanel({ open, onOpenChange, connectors, onSelect, }: {
44
+ export declare function AddConnectorPanel({ open, onOpenChange, connectors, categories, onSelect, }: {
22
45
  open: boolean;
23
46
  onOpenChange: (open: boolean) => void;
24
47
  /** The unified list; `null` while it loads. */
25
48
  connectors: UnifiedConnector[] | null;
49
+ /**
50
+ * Limit the panel to these connector categories — pass what the surrounding
51
+ * section lists. Omitted, the panel is the whole app, which is what the
52
+ * Integrações hub wants.
53
+ */
54
+ categories?: string[];
26
55
  onSelect: (connector: UnifiedConnector) => void;
27
56
  }): React.JSX.Element;
57
+ /**
58
+ * "Em breve" — put on the shelf by a module this app HAS, and not built yet.
59
+ *
60
+ * The distinction earns its own section rather than a chip in the one below:
61
+ * someone who has CRM and reads "Kommo · requer o módulo CRM" concludes the
62
+ * screen is broken. What is missing here is the integration, not the module,
63
+ * and only this list can say so.
64
+ */
65
+ export declare function ComingSoonSection({ integrations }: {
66
+ integrations: ShelfIntegration[];
67
+ }): React.JSX.Element | null;
68
+ /**
69
+ * "Disponíveis com outro módulo" — what belongs to a module this build left out.
70
+ *
71
+ * Exported so it can be rendered on its own: the panel around it is a Radix
72
+ * dialog, which renders into a portal and therefore into nothing at all under
73
+ * `renderToStaticMarkup` — a test of the whole modal would pass by asserting
74
+ * against an empty string.
75
+ */
76
+ export declare function AvailableSection({ connectors }: {
77
+ connectors: ShelfIntegration[];
78
+ }): React.JSX.Element | null;
28
79
  /** Small trigger a screen can render next to its heading. */
29
80
  export declare function AddConnectorButton({ onClick }: {
30
81
  onClick: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"AddConnectorPanel.d.ts","sourceRoot":"","sources":["../../../src/components/connect/AddConnectorPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAazB,OAAO,EAAqC,KAAK,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAElF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,IAAI,EACJ,YAAY,EACZ,UAAU,EACV,QAAQ,GACT,EAAE;IACD,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC,+CAA+C;IAC/C,UAAU,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAA;IACrC,QAAQ,EAAE,CAAC,SAAS,EAAE,gBAAgB,KAAK,IAAI,CAAA;CAChD,qBAiEA;AA0CD,6DAA6D;AAC7D,wBAAgB,kBAAkB,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,qBAWtE"}
1
+ {"version":3,"file":"AddConnectorPanel.d.ts","sourceRoot":"","sources":["../../../src/components/connect/AddConnectorPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAgBzB,OAAO,EASL,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACtB,MAAM,SAAS,CAAA;AAGhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,IAAI,EACJ,YAAY,EACZ,UAAU,EACV,UAAU,EACV,QAAQ,GACT,EAAE;IACD,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC,+CAA+C;IAC/C,UAAU,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAA;IACrC;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,QAAQ,EAAE,CAAC,SAAS,EAAE,gBAAgB,KAAK,IAAI,CAAA;CAChD,qBAoGA;AAqFD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,YAAY,EAAE,EAAE;IAAE,YAAY,EAAE,gBAAgB,EAAE,CAAA;CAAE,4BAevF;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,UAAU,EAAE,EAAE;IAAE,UAAU,EAAE,gBAAgB,EAAE,CAAA;CAAE,4BAqBlF;AAuDD,6DAA6D;AAC7D,wBAAgB,kBAAkB,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,qBAWtE"}
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import type { ConnectorDelivery } from '@fayz-ai/core';
3
+ export declare function ConnectorDeliveries({ load, providerName, limit, }: {
4
+ load(options?: {
5
+ limit?: number;
6
+ }): Promise<ConnectorDelivery[]>;
7
+ providerName: string;
8
+ limit?: number;
9
+ }): React.JSX.Element;
10
+ //# sourceMappingURL=ConnectorDeliveries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectorDeliveries.d.ts","sourceRoot":"","sources":["../../../src/components/connect/ConnectorDeliveries.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAiBtD,wBAAgB,mBAAmB,CAAC,EAClC,IAAI,EACJ,YAAY,EACZ,KAAU,GACX,EAAE;IACD,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAA;IAChE,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,qBAyDA"}
@@ -1,9 +1,28 @@
1
1
  import React from 'react';
2
- import type { UnifiedConnector } from './model';
3
- /** Mark, name and badges — the same identity in the rail and in the sheet. */
2
+ import { type UnifiedConnector } from './model';
3
+ /**
4
+ * Who this is, and how it stands — the same badge the list uses.
5
+ *
6
+ * The header used to carry a state chip AND a direction badge AND a plane
7
+ * badge, with the state repeated in a line under it and a third time as a dot
8
+ * on the Settings tab. One fact, four renderings, in a 380px column. Now the
9
+ * state sits once, right of the name, in the component the list rows use; how
10
+ * it resolves is said in words on the tab where someone is reading about it.
11
+ */
4
12
  export declare function ConnectorHeading({ connector }: {
5
13
  connector: UnifiedConnector;
6
14
  }): React.JSX.Element;
15
+ /** Whether this connector has anything to operate — the Settings tab's reason to exist. */
16
+ export declare function hasOperatingSettings(connector: UnifiedConnector): boolean;
17
+ /**
18
+ * What is missing, in the words the settings screen uses.
19
+ *
20
+ * `missingSettings` carries keys, and a key is what the code calls the thing.
21
+ * Naming them turns "falta configurar" — a label the person already read on the
22
+ * tab next to it — into the one sentence that tells them what to go and do.
23
+ */
24
+ export declare function missingSettingLabels(connector: UnifiedConnector): string[];
25
+ /** Installing, or operating. Which one is not a mode anyone picks — it is whether the accounts are linked. */
7
26
  export declare function ConnectorJourney({ connector, onChanged, onRevoke, }: {
8
27
  connector: UnifiedConnector;
9
28
  /** Something was connected/disconnected — the list should reload. */
@@ -1 +1 @@
1
- {"version":3,"file":"ConnectorDetail.d.ts","sourceRoot":"","sources":["../../../src/components/connect/ConnectorDetail.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAgBzB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAiH/C,8EAA8E;AAC9E,wBAAgB,gBAAgB,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,EAAE,gBAAgB,CAAA;CAAE,qBAmB9E;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,SAAS,EACT,SAAS,EACT,QAAQ,GACT,EAAE;IACD,SAAS,EAAE,gBAAgB,CAAA;IAC3B,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;CACjE,qBAwIA;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,EAC9B,SAAS,EACT,IAAI,EACJ,YAAY,EACZ,SAAS,EACT,QAAQ,GACT,EAAE;IACD,SAAS,EAAE,gBAAgB,GAAG,IAAI,CAAA;IAClC,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;CACjE,4BAgBA"}
1
+ {"version":3,"file":"ConnectorDetail.d.ts","sourceRoot":"","sources":["../../../src/components/connect/ConnectorDetail.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAgCzB,OAAO,EAAU,KAAK,gBAAgB,EAAE,MAAM,SAAS,CAAA;AA4HvD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,EAAE,gBAAgB,CAAA;CAAE,qBAe9E;AAYD,2FAA2F;AAC3F,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,gBAAgB,GAAG,OAAO,CAIzE;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAK1E;AAkBD,8GAA8G;AAC9G,wBAAgB,gBAAgB,CAAC,EAC/B,SAAS,EACT,SAAS,EACT,QAAQ,GACT,EAAE;IACD,SAAS,EAAE,gBAAgB,CAAA;IAC3B,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;CACjE,qBAMA;AAsVD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,EAC9B,SAAS,EACT,IAAI,EACJ,YAAY,EACZ,SAAS,EACT,QAAQ,GACT,EAAE;IACD,SAAS,EAAE,gBAAgB,GAAG,IAAI,CAAA;IAClC,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;CACjE,4BAgBA"}
@@ -0,0 +1,29 @@
1
+ import React from 'react';
2
+ /**
3
+ * The two disclosure shapes the connector detail screens share.
4
+ *
5
+ * Both were tooltips for one afternoon and that was the wrong instrument: a
6
+ * tooltip is invisible on touch, closes when you move to read it, and can hold
7
+ * a phrase but not a sentence — and what is behind these is a sentence. Both
8
+ * are `<details>` instead: it opens on click, it opens on Enter, its content is
9
+ * in the DOM whether open or shut (so find-in-page and screen readers reach it,
10
+ * and Chrome opens it to show a match), and it needs no state.
11
+ */
12
+ /** One identifier, its chips, and the prose one click below it. */
13
+ export declare function DisclosureRow({ name, chips, detail, }: {
14
+ name: string;
15
+ chips?: React.ReactNode;
16
+ /** Nothing to expand renders a plain row — an empty accordion is a lie. */
17
+ detail?: React.ReactNode;
18
+ }): React.JSX.Element;
19
+ /**
20
+ * The caveats a panel owes, folded away until someone wants them — behind a
21
+ * LABEL and not a bare ⓘ. An icon alone in a column of lists reads as
22
+ * decoration, so nobody presses it and the sentence behind it is never read,
23
+ * which for these particular sentences is the whole failure.
24
+ */
25
+ export declare function DisclosureNote({ label, children }: {
26
+ label: string;
27
+ children: React.ReactNode;
28
+ }): React.JSX.Element;
29
+ //# sourceMappingURL=ConnectorDisclosure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectorDisclosure.d.ts","sourceRoot":"","sources":["../../../src/components/connect/ConnectorDisclosure.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB;;;;;;;;;GASG;AAEH,mEAAmE;AACnE,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,KAAK,EACL,MAAM,GACP,EAAE;IACD,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACvB,2EAA2E;IAC3E,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CACzB,qBA4BA;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,qBAa/F"}
@@ -1,5 +1,11 @@
1
1
  import React from 'react';
2
2
  import type { UnifiedConnector } from './model';
3
+ /**
4
+ * What a mark actually needs. Narrower than `UnifiedConnector` so a row that is
5
+ * NOT a connection — a connector waiting on a module this app doesn't have —
6
+ * can still wear its own face without being given a fake `state`.
7
+ */
8
+ export type ConnectorMarkSubject = Pick<UnifiedConnector, 'id' | 'name'> & Partial<Pick<UnifiedConnector, 'icon' | 'logoUrl' | 'builtIn' | 'clientWebsite' | 'identityVerified'>>;
3
9
  /**
4
10
  * The face of a connector, resolved the same way everywhere it appears.
5
11
  *
@@ -14,7 +20,7 @@ import type { UnifiedConnector } from './model';
14
20
  * rather than one asset being unreachable — never happens.
15
21
  */
16
22
  export declare function ConnectorMark({ connector, size, }: {
17
- connector: UnifiedConnector;
23
+ connector: ConnectorMarkSubject;
18
24
  size?: 'sm' | 'md';
19
25
  }): React.JSX.Element;
20
26
  //# sourceMappingURL=ConnectorMark.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConnectorMark.d.ts","sourceRoot":"","sources":["../../../src/components/connect/ConnectorMark.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE/C;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,EAC5B,SAAS,EACT,IAAW,GACZ,EAAE;IACD,SAAS,EAAE,gBAAgB,CAAA;IAC3B,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;CACnB,qBA0CA"}
1
+ {"version":3,"file":"ConnectorMark.d.ts","sourceRoot":"","sources":["../../../src/components/connect/ConnectorMark.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE/C;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,gBAAgB,EAAE,IAAI,GAAG,MAAM,CAAC,GACtE,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,eAAe,GAAG,kBAAkB,CAAC,CAAC,CAAA;AAExG;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,EAC5B,SAAS,EACT,IAAW,GACZ,EAAE;IACD,SAAS,EAAE,oBAAoB,CAAA;IAC/B,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;CACnB,qBA0CA"}
@@ -0,0 +1,49 @@
1
+ import React from 'react';
2
+ import { type UnifiedConnector } from './model';
3
+ /**
4
+ * What the connector declared: the records it reaches, the facts it hears, and
5
+ * the moments it is called. The consent view, before authorizing.
6
+ *
7
+ * It renders in step 1 of the journey, which is the step that exists precisely
8
+ * so nobody is asked for a credential before they know what it buys. The grammar
9
+ * is OAuth consent's, because that is the one a reader already has: grouped by
10
+ * resource, one reason per row, read told apart from write, sensitive marked.
11
+ *
12
+ * **One panel, because it was one subject.** "Quando ele age" used to be a
13
+ * second, collapsible box under this one — and it listed the same event keys
14
+ * from the same declaration, so the reader met `agenda.booking_created` twice
15
+ * and had to work out whether the two lists disagreed. They never could: the
16
+ * events here ARE the subscriptions. Merged, with calls as a third group.
17
+ *
18
+ * **The one sentence that decides whether this screen is worth having.** Nothing
19
+ * on this platform enforces a permission today: the token minting that would
20
+ * (FAY-1381) landed only its browser half, and FAY-1348 §D7 — *"a credencial
21
+ * autoriza só as RPCs declaradas do conector"* — is not built. A screen that says
22
+ * "this integration can only read your appointments" while nothing stops it
23
+ * writing them manufactures an assurance that does not exist, which is the exact
24
+ * failure this epic keeps fighting.
25
+ *
26
+ * So the copy states what the declaration IS — what the connector says it needs,
27
+ * shown before you authorize — and `connectors.permissions.notEnforced` says in
28
+ * as many words that Fayz does not yet use it to block anything. When D7 lands,
29
+ * that string is what tightens; nothing else here has to change, because the
30
+ * list is already the list the token will carry ({@link connectorGrantScopes}).
31
+ *
32
+ * The same honesty governs the difference between the two lower groups, which is
33
+ * why they are not merged in turn: a CALL happens — code in this app invokes the
34
+ * connector at that moment. A fact it OUVE does not, yet: the generic ingress
35
+ * that reads `subscribesTo` and dispatches does not exist (docs/integrations/
36
+ * EVENTS.md), each connector delivers its own reaction today, and the copy must
37
+ * survive that gap without promising it closed. "Ouve", never "reage".
38
+ *
39
+ * Prose sits one click below the name it belongs to. Read as paragraphs under
40
+ * every row, the reasons were longer than the list they qualified and the panel
41
+ * became a wall nobody finishes — and a list nobody finishes discloses nothing.
42
+ *
43
+ * Absence is rendered as absence: a connector that declared nothing says so,
44
+ * rather than showing an empty box that reads as "it touches nothing".
45
+ */
46
+ export declare function ConnectorPermissions({ connector }: {
47
+ connector: UnifiedConnector;
48
+ }): React.JSX.Element | null;
49
+ //# sourceMappingURL=ConnectorPermissions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectorPermissions.d.ts","sourceRoot":"","sources":["../../../src/components/connect/ConnectorPermissions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAMzB,OAAO,EAAoB,KAAK,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAEjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,EAAE,gBAAgB,CAAA;CAAE,4BA8GlF"}
@@ -16,18 +16,25 @@ export declare function PlaneBadge({ plane, active }: {
16
16
  export declare function DirectionBadge({ direction }: {
17
17
  direction: 'inbound' | 'outbound';
18
18
  }): React.JSX.Element;
19
- export declare function StateChip({ state }: {
19
+ /**
20
+ * A connection's state, in one badge, everywhere it is shown.
21
+ *
22
+ * One component and one vocabulary across the list, the assistant's drawer and
23
+ * the connection's own header — the founder's ask, and the reason the label is
24
+ * now short enough to sit beside a name: "conectado · falta configurar" was a
25
+ * sentence pretending to be a chip.
26
+ */
27
+ export declare function StateChip({ state, className }: {
20
28
  state: ConnectorState;
29
+ className?: string;
21
30
  }): React.JSX.Element;
22
31
  /**
23
- * One row of the unified list — inbound grant, installed connector or catalogue
24
- * entry, all the same shape. The row is the entry point of the journey: it says
25
- * what the thing is and how far along it is, and opening it is what explains
26
- * the rest.
32
+ * One row of the unified list — an inbound grant or an installed connector, both
33
+ * the same shape. The row is the entry point of the journey: it says what the
34
+ * thing is and how far along it is, and opening it is what explains the rest.
27
35
  */
28
- export declare function ConnectorRow({ connector, onOpen, showHost, }: {
36
+ export declare function ConnectorRow({ connector, onOpen, }: {
29
37
  connector: UnifiedConnector;
30
38
  onOpen: (connector: UnifiedConnector) => void;
31
- showHost?: boolean;
32
39
  }): React.JSX.Element;
33
40
  //# sourceMappingURL=ConnectorRow.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConnectorRow.d.ts","sourceRoot":"","sources":["../../../src/components/connect/ConnectorRow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAG/E;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;IAAE,KAAK,EAAE,cAAc,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,qBAkBxF;AAED,wBAAgB,cAAc,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,EAAE,SAAS,GAAG,UAAU,CAAA;CAAE,qBASlF;AASD,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,cAAc,CAAA;CAAE,qBAG7D;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,EAC3B,SAAS,EACT,MAAM,EACN,QAAe,GAChB,EAAE;IACD,SAAS,EAAE,gBAAgB,CAAA;IAC3B,MAAM,EAAE,CAAC,SAAS,EAAE,gBAAgB,KAAK,IAAI,CAAA;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,qBAmDA"}
1
+ {"version":3,"file":"ConnectorRow.d.ts","sourceRoot":"","sources":["../../../src/components/connect/ConnectorRow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAG/E;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;IAAE,KAAK,EAAE,cAAc,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,qBAkBxF;AAED,wBAAgB,cAAc,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,EAAE,SAAS,GAAG,UAAU,CAAA;CAAE,qBASlF;AAUD;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE;IAAE,KAAK,EAAE,cAAc,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,qBAO5F;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAC3B,SAAS,EACT,MAAM,GACP,EAAE;IACD,SAAS,EAAE,gBAAgB,CAAA;IAC3B,MAAM,EAAE,CAAC,SAAS,EAAE,gBAAgB,KAAK,IAAI,CAAA;CAC9C,qBAkDA"}
@@ -0,0 +1,50 @@
1
+ import React from 'react';
2
+ import type { SyncRun } from '@fayz-ai/core';
3
+ import type { UnifiedConnector } from './model';
4
+ /**
5
+ * One history, for every connector that has one.
6
+ *
7
+ * Google Calendar hand-rolled a run list. Bling hand-rolled a second. RankLayer
8
+ * a third, open banking a fourth — four renderings of the same four columns of
9
+ * `plg_sync_runs`, each with its own empty state, its own idea of what a failure
10
+ * looks like, and none of them reachable by a connector written next week. What
11
+ * differs between them was never the view: it was where the rows come from, and
12
+ * that is one declaration (`ConnectorDefinition.listRuns`).
13
+ *
14
+ * The reader asks two things here and they want different shapes. *"Deu certo?"*
15
+ * is answered before this component renders — by the dot on the tab that brought
16
+ * them, so it is answerable from the screen they landed on without a second
17
+ * status line anywhere. *"O que aconteceu no dia 3?"* is the list below, newest
18
+ * first, one row per run, with the run's own sentence on it.
19
+ */
20
+ export interface ConnectorRunsState {
21
+ runs: SyncRun[];
22
+ loading: boolean;
23
+ reload: () => void;
24
+ /** The newest run failed — what the tab's warning dot is for. */
25
+ failing: boolean;
26
+ }
27
+ /**
28
+ * Load a connector's history.
29
+ *
30
+ * Lifted out of the view because the tab STRIP needs the answer too: a warning
31
+ * dot that only appeared once you opened the tab would be a warning nobody sees.
32
+ * One load feeds both.
33
+ */
34
+ export declare function useConnectorRuns(connector: UnifiedConnector): ConnectorRunsState;
35
+ /**
36
+ * "Something is wrong right now" — the newest run, and only the newest.
37
+ *
38
+ * A connector that failed on Tuesday and has run cleanly since is not failing;
39
+ * a dot that counted any failure in the last twenty would be permanent for every
40
+ * connector that has ever had a bad night, which is a dot nobody reads.
41
+ */
42
+ export declare function isFailing(runs: SyncRun[]): boolean;
43
+ /** Whether this connector has a Sincronizações tab — history, actions, or both. */
44
+ export declare function hasRunHistory(connector: UnifiedConnector): boolean;
45
+ /** The whole Sincronizações tab: what you can make it do, then what it has done. */
46
+ export declare function ConnectorRuns({ connector, state, }: {
47
+ connector: UnifiedConnector;
48
+ state: ConnectorRunsState;
49
+ }): React.JSX.Element;
50
+ //# sourceMappingURL=ConnectorRuns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectorRuns.d.ts","sourceRoot":"","sources":["../../../src/components/connect/ConnectorRuns.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AASzB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAI5C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE/C;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,OAAO,EAAE,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,iEAAiE;IACjE,OAAO,EAAE,OAAO,CAAA;CACjB;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,gBAAgB,GAAG,kBAAkB,CA6BhF;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAElD;AAED,mFAAmF;AACnF,wBAAgB,aAAa,CAAC,SAAS,EAAE,gBAAgB,GAAG,OAAO,CAGlE;AASD,oFAAoF;AACpF,wBAAgB,aAAa,CAAC,EAC5B,SAAS,EACT,KAAK,GACN,EAAE;IACD,SAAS,EAAE,gBAAgB,CAAA;IAC3B,KAAK,EAAE,kBAAkB,CAAA;CAC1B,qBAwDA"}
@@ -0,0 +1,29 @@
1
+ import React from 'react';
2
+ import type { ConnectorSetting } from '@fayz-ai/core';
3
+ import type { UnifiedConnector } from './model';
4
+ /**
5
+ * How a live integration behaves — the second half of the split.
6
+ *
7
+ * It renders through the same rows a plugin's own Settings tab uses
8
+ * (`SettingsGroup` + `ToggleRow`/`SelectRow`, plus the two this case needed),
9
+ * because the founder's ask was literally that: *assim como nosso generic plugin
10
+ * > Settings carrega os settings no menu de forma dinâmica*. Those rows are
11
+ * presentational and hand-composed today; a connector cannot hand-write React
12
+ * from a published package that the host app renders, so what is declarative
13
+ * here is the SCHEMA — `ConnectorDefinition.settings` — and this is the one
14
+ * renderer for it. Not a third settings system: the same components, driven by a
15
+ * declaration instead of by JSX.
16
+ *
17
+ * It appears only once the connection exists. That is the whole defect being
18
+ * fixed — a merchant could not connect AppMax without first deciding which
19
+ * payment methods they accept.
20
+ */
21
+ export declare function ConnectorSettingsPanel({ connector, onSaved, bare, }: {
22
+ connector: UnifiedConnector;
23
+ onSaved?: () => void;
24
+ /** Drop the group heading: the surface hosting it already says "Configurações". */
25
+ bare?: boolean;
26
+ }): React.JSX.Element | null;
27
+ /** Empty passes: "not filled in yet" is `requiredToOperate`'s business, not the pattern's. */
28
+ export declare function matchesPattern(setting: ConnectorSetting, value: unknown): boolean;
29
+ //# sourceMappingURL=ConnectorSettings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectorSettings.d.ts","sourceRoot":"","sources":["../../../src/components/connect/ConnectorSettings.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,KAAK,EAAE,gBAAgB,EAAyB,MAAM,eAAe,CAAA;AAI5E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE/C;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,SAAS,EACT,OAAO,EACP,IAAI,GACL,EAAE;IACD,SAAS,EAAE,gBAAgB,CAAA;IAC3B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,mFAAmF;IACnF,IAAI,CAAC,EAAE,OAAO,CAAA;CACf,4BAoFA;AAyED,8FAA8F;AAC9F,wBAAgB,cAAc,CAAC,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAQjF"}
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import type { ConnectorSyncAction } from '@fayz-ai/core';
3
+ /**
4
+ * One button row, for every connector that can be asked to do something.
5
+ *
6
+ * Google Calendar drew its own; Bling was about to draw a second. Everything
7
+ * that would have been repeated lives here — running state, toast, reloading the
8
+ * history, hiding an action with nothing to act on, confirming a write at the
9
+ * provider. Every word on screen comes off the declaration.
10
+ */
11
+ export declare function ConnectorSyncActions({ actions, onRan, }: {
12
+ actions: ConnectorSyncAction[];
13
+ onRan?: () => void;
14
+ }): React.JSX.Element | null;
15
+ //# sourceMappingURL=ConnectorSyncActions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectorSyncActions.d.ts","sourceRoot":"","sources":["../../../src/components/connect/ConnectorSyncActions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAGxD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,OAAO,EACP,KAAK,GACN,EAAE;IACD,OAAO,EAAE,mBAAmB,EAAE,CAAA;IAC9B,KAAK,CAAC,EAAE,MAAM,IAAI,CAAA;CACnB,4BAuIA"}
@@ -11,7 +11,7 @@ import { type UnifiedConnector } from './model';
11
11
  * connector.
12
12
  *
13
13
  * Two views in the drawer:
14
- * - the list: what this organization has, then what Fayz offers
14
+ * - the list: what this organization has
15
15
  * - the journey: what a connector does, how it resolves, and how to authorize
16
16
  */
17
17
  interface ConnectorsSurfaceState {
@@ -29,8 +29,10 @@ interface ConnectorsSurfaceState {
29
29
  consume: () => void;
30
30
  }
31
31
  export declare const useConnectorsSurface: import("zustand").UseBoundStore<import("zustand").StoreApi<ConnectorsSurfaceState>>;
32
- /** Raise the assistant with the connectors drawer open, on a connector or the list. */
33
- export declare function openConnectorsPanel(connector?: UnifiedConnector | null): void;
32
+ /** Raise the assistant with the connectors drawer open, on a connector or the
33
+ * list. The id is all it takes — the panel resolves the row from its own list,
34
+ * so a caller holding only a reference (an assistant card) can open it too. */
35
+ export declare function openConnectorsPanel(connector?: Pick<UnifiedConnector, 'id'> | null): void;
34
36
  /** Whether the assistant is mounted and can host the journey. */
35
37
  export declare function useConnectorsPanelAvailable(): boolean;
36
38
  export declare function ConnectorsPanel({ onClose }: {
@@ -1 +1 @@
1
- {"version":3,"file":"ConnectorsPanel.d.ts","sourceRoot":"","sources":["../../../src/components/connect/ConnectorsPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAWzB,OAAO,EAAoB,KAAK,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAEjE;;;;;;;;;;;;;GAaG;AAEH,UAAU,sBAAsB;IAC9B,kDAAkD;IAClD,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB;;;;;OAKG;IACH,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IACnC,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IACjC,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAED,eAAO,MAAM,oBAAoB,qFAM9B,CAAA;AAEH,uFAAuF;AACvF,wBAAgB,mBAAmB,CAAC,SAAS,CAAC,EAAE,gBAAgB,GAAG,IAAI,GAAG,IAAI,CAM7E;AAED,iEAAiE;AACjE,wBAAgB,2BAA2B,IAAI,OAAO,CAErD;AAED,wBAAgB,eAAe,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,qBA6GnE"}
1
+ {"version":3,"file":"ConnectorsPanel.d.ts","sourceRoot":"","sources":["../../../src/components/connect/ConnectorsPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAWzB,OAAO,EAAoB,KAAK,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAEjE;;;;;;;;;;;;;GAaG;AAEH,UAAU,sBAAsB;IAC9B,kDAAkD;IAClD,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB;;;;;OAKG;IACH,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IACnC,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IACjC,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAED,eAAO,MAAM,oBAAoB,qFAM9B,CAAA;AAEH;;gFAEgF;AAChF,wBAAgB,mBAAmB,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAMzF;AAED,iEAAiE;AACjE,wBAAgB,2BAA2B,IAAI,OAAO,CAErD;AAED,wBAAgB,eAAe,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,qBA0GnE"}
@@ -1 +1 @@
1
- {"version":3,"file":"ConnectorsTab.d.ts","sourceRoot":"","sources":["../../../src/components/connect/ConnectorsTab.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAWzB;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,sBAmH5B"}
1
+ {"version":3,"file":"ConnectorsTab.d.ts","sourceRoot":"","sources":["../../../src/components/connect/ConnectorsTab.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAWzB;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,sBA4G5B"}
@@ -0,0 +1,28 @@
1
+ import type { ConnectorCategory, ConnectorDirection, ConnectorPlane } from '@fayz-ai/core';
2
+ export interface SdkIntegration {
3
+ /** Platform catalogue slug — the key every source joins on. */
4
+ slug: string;
5
+ name: string;
6
+ /** The module that brings it, and where it is configured. */
7
+ moduleId: string;
8
+ /** `available` — a ConnectorDefinition backs it. `soon` — declared only. */
9
+ status: 'available' | 'soon';
10
+ description?: string;
11
+ /** Lucide icon name (implemented connectors). */
12
+ icon?: string;
13
+ /** Brand mark: the connector's own, else the platform catalogue's. */
14
+ logoUrl?: string;
15
+ category?: ConnectorCategory | string;
16
+ direction?: ConnectorDirection;
17
+ planes?: ConnectorPlane[];
18
+ /** `ConnectorDefinition.id`, when one exists. Differs from the slug for plugbank. */
19
+ connectorId?: string;
20
+ /** Which plugin ships or declares it. An addon also needs its host module. */
21
+ declaredBy: {
22
+ pluginId: string;
23
+ package: string;
24
+ addon?: boolean;
25
+ };
26
+ }
27
+ export declare const SDK_INTEGRATIONS: readonly SdkIntegration[];
28
+ //# sourceMappingURL=connector-map.generated.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connector-map.generated.d.ts","sourceRoot":"","sources":["../../../src/components/connect/connector-map.generated.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAE1F,MAAM,WAAW,cAAc;IAC7B,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,CAAA;IAChB,4EAA4E;IAC5E,MAAM,EAAE,WAAW,GAAG,MAAM,CAAA;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,iDAAiD;IACjD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAAA;IACrC,SAAS,CAAC,EAAE,kBAAkB,CAAA;IAC9B,MAAM,CAAC,EAAE,cAAc,EAAE,CAAA;IACzB,qFAAqF;IACrF,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,8EAA8E;IAC9E,UAAU,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,CAAA;CACnE;AAED,eAAO,MAAM,gBAAgB,EAAE,SAAS,cAAc,EA8WrD,CAAA"}
@@ -0,0 +1,104 @@
1
+ import type { ConnectorPlane, ConnectorState, ShelfIntegration, UnifiedConnector } from './model';
2
+ /**
3
+ * "Queria que tivesse pagamento com a appmax."
4
+ *
5
+ * The assistant answered that it could not help integrate specific payment
6
+ * providers — while AppMax sat on the other half of the screen marked *pronto
7
+ * para conectar*. It was not wrong about its own tools; it had no way to read
8
+ * the list. This module is that way, and it is the SAME list: the inputs are
9
+ * whatever `buildConnectorList` and `shelfIntegrations` already produced for the
10
+ * screen, so a second answer is impossible by construction. Nothing here fetches
11
+ * anything, and nothing here holds a provider name of its own.
12
+ *
13
+ * What it adds is the reading: a person asks for a *need* ("quero receber por
14
+ * Pix", "preciso emitir nota fiscal") far more often than for a slug, and the
15
+ * data already carries the category that answers it.
16
+ */
17
+ /**
18
+ * The honest answers, and the difference between them is what the person can do
19
+ * next:
20
+ *
21
+ * - `connected` / `needs_setup` / `ready` — every {@link ConnectorState}: there
22
+ * is a screen to go to. Only these.
23
+ * - `soon` — a module this app HAS declared it; no implementation exists.
24
+ * - `needs_module` — it belongs to a module this app was not built with, and a
25
+ * tenant admin cannot install one (`useTenantPlugins` reads, it never
26
+ * activates). Offering a button here would be a promise nobody can keep.
27
+ *
28
+ * DERIVED from `ConnectorState`, not re-typed alongside it. The two vocabularies
29
+ * met when the assistant learned to read this list, and the meeting has to be a
30
+ * fact about the types: `fromConnector` assigns the screen's state straight
31
+ * across, and "the tool's answer and the connectors screen never disagree" stops
32
+ * being something a test hopes for. The `+ 2` is the whole difference — the
33
+ * shelf holds rows the screen expresses as absence, and those are the two the
34
+ * assistant must not offer a door to.
35
+ *
36
+ * The forcing function is {@link STATE_RANK}: the next member `ConnectorState`
37
+ * grows is a compile error here, where somebody has to decide whether the
38
+ * assistant may offer it. `needs_setup` arrived exactly that way.
39
+ */
40
+ export type ConnectorSuggestionState = ConnectorState | 'soon' | 'needs_module';
41
+ export interface ConnectorSuggestion {
42
+ slug: string;
43
+ /** Row key for the journey panel — the connector id, when one backs it. */
44
+ id?: string;
45
+ name: string;
46
+ description?: string;
47
+ /** Raw `ConnectorCategory`; the reader-facing label is resolved through i18n. */
48
+ category?: string;
49
+ icon?: string;
50
+ logoUrl?: string;
51
+ state: ConnectorSuggestionState;
52
+ /** Plugin that hosts (or would host) it — what "requer o módulo X" names. */
53
+ moduleId?: string;
54
+ planes?: ConnectorPlane[];
55
+ /** The screen a human finishes it on. Present exactly when {@link hasDestination}, and NOWHERE else. */
56
+ route?: string;
57
+ score: number;
58
+ }
59
+ interface ParsedQuery {
60
+ raw: string;
61
+ terms: string[];
62
+ categories: Set<string>;
63
+ }
64
+ export declare function parseConnectorQuery(query: string): ParsedQuery;
65
+ /**
66
+ * What this app can be connected to, for a need stated in the user's words.
67
+ *
68
+ * `connectors` and `shelf` come straight from the screen's own builders. A row
69
+ * the screen would not show cannot appear here, and — the point of #89 — a
70
+ * provider that exists only as a platform catalogue entry appears in neither.
71
+ */
72
+ export declare function searchConnectors(input: {
73
+ connectors: UnifiedConnector[];
74
+ shelf: ShelfIntegration[];
75
+ query: string;
76
+ limit?: number;
77
+ }): ConnectorSuggestion[];
78
+ /**
79
+ * Whether this answer is one the connectors screen itself holds — and therefore
80
+ * one with a screen to go to.
81
+ *
82
+ * A type guard and not a boolean, because the narrowing is the statement: the
83
+ * suggestion states that have a destination are **exactly** `ConnectorState`,
84
+ * and the two that do not are exactly the shelf's. Everything downstream that
85
+ * needs a real `ConnectorState` (the `StateChip` on the card) gets it from here
86
+ * instead of casting, so a state added to either side cannot slip through as a
87
+ * widened union that happens to compile.
88
+ *
89
+ * `switch` and not a list, so that addition is a compile error rather than a
90
+ * silent `false`.
91
+ */
92
+ export declare function isConnectorState(state: ConnectorSuggestionState): state is ConnectorState;
93
+ /**
94
+ * Only a real destination gets a button. Asserted, not assumed.
95
+ *
96
+ * Renamed from `canConnectNow` when `needs_setup` arrived: that row is one a
97
+ * person should absolutely be sent to, and "can connect now" is precisely what
98
+ * is NOT true of it — it is connected, and what is missing is the
99
+ * configuration. This boolean goes on the wire and is read by a model, so the
100
+ * name is not decoration.
101
+ */
102
+ export declare function hasDestination(suggestion: Pick<ConnectorSuggestion, 'state'>): boolean;
103
+ export {};
104
+ //# sourceMappingURL=connector-search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connector-search.d.ts","sourceRoot":"","sources":["../../../src/components/connect/connector-search.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAEjG;;;;;;;;;;;;;;GAcG;AAEH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,MAAM,wBAAwB,GAAG,cAAc,GAAG,MAAM,GAAG,cAAc,CAAA;AAE/E,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,2EAA2E;IAC3E,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,iFAAiF;IACjF,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,wBAAwB,CAAA;IAC/B,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,cAAc,EAAE,CAAA;IACzB,wGAAwG;IACxG,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CACd;AAuED,UAAU,WAAW;IACnB,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CACxB;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAc9D;AAuED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IACtC,UAAU,EAAE,gBAAgB,EAAE,CAAA;IAC9B,KAAK,EAAE,gBAAgB,EAAE,CAAA;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,GAAG,mBAAmB,EAAE,CAmBxB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,wBAAwB,GAAG,KAAK,IAAI,cAAc,CAUzF;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,mBAAmB,EAAE,OAAO,CAAC,GAAG,OAAO,CAEtF"}