@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.
- package/dist/{ScheduleEditor-BSFF7LME.js → ScheduleEditor-S3QI5MHO.js} +5 -5
- package/dist/{ScheduleEditor-BSFF7LME.js.map → ScheduleEditor-S3QI5MHO.js.map} +1 -1
- package/dist/app/AdminShell.d.ts +9 -0
- package/dist/app/AdminShell.d.ts.map +1 -1
- package/dist/app/RouteErrorBoundary.d.ts +42 -0
- package/dist/app/RouteErrorBoundary.d.ts.map +1 -0
- package/dist/app/admin-app.d.ts +1 -0
- package/dist/app/admin-app.d.ts.map +1 -1
- package/dist/app/config.d.ts +7 -0
- package/dist/app/config.d.ts.map +1 -1
- package/dist/app/contextual-nav.store.d.ts +39 -0
- package/dist/app/contextual-nav.store.d.ts.map +1 -0
- package/dist/app/scaffold.d.ts.map +1 -1
- package/dist/{chunk-TNTZHUL6.js → chunk-OI7RYSTM.js} +8 -4
- package/dist/chunk-OI7RYSTM.js.map +1 -0
- package/dist/components/RightRail.d.ts.map +1 -1
- package/dist/components/auth/LoginForm.d.ts +3 -1
- package/dist/components/auth/LoginForm.d.ts.map +1 -1
- package/dist/components/auth/OAuthButtons.d.ts +3 -1
- package/dist/components/auth/OAuthButtons.d.ts.map +1 -1
- package/dist/components/chat/AssistantActivityBar.d.ts +15 -0
- package/dist/components/chat/AssistantActivityBar.d.ts.map +1 -0
- package/dist/components/chat/AssistantInvite.d.ts +7 -0
- package/dist/components/chat/AssistantInvite.d.ts.map +1 -0
- package/dist/components/chat/ChatComposer.d.ts.map +1 -1
- package/dist/components/chat/ChatConversation.d.ts.map +1 -1
- package/dist/components/chat/ChatFab.d.ts.map +1 -1
- package/dist/components/chat/ChatMessages.d.ts.map +1 -1
- package/dist/components/chat/ChatSuggestions.d.ts.map +1 -1
- package/dist/components/chat/ConnectorSuggestionCard.d.ts +6 -0
- package/dist/components/chat/ConnectorSuggestionCard.d.ts.map +1 -0
- package/dist/components/chat/index.d.ts +2 -0
- package/dist/components/chat/index.d.ts.map +1 -1
- package/dist/components/connect/AddConnectorPanel.d.ts +61 -10
- package/dist/components/connect/AddConnectorPanel.d.ts.map +1 -1
- package/dist/components/connect/ConnectorDeliveries.d.ts +10 -0
- package/dist/components/connect/ConnectorDeliveries.d.ts.map +1 -0
- package/dist/components/connect/ConnectorDetail.d.ts +21 -2
- package/dist/components/connect/ConnectorDetail.d.ts.map +1 -1
- package/dist/components/connect/ConnectorDisclosure.d.ts +29 -0
- package/dist/components/connect/ConnectorDisclosure.d.ts.map +1 -0
- package/dist/components/connect/ConnectorMark.d.ts +7 -1
- package/dist/components/connect/ConnectorMark.d.ts.map +1 -1
- package/dist/components/connect/ConnectorPermissions.d.ts +49 -0
- package/dist/components/connect/ConnectorPermissions.d.ts.map +1 -0
- package/dist/components/connect/ConnectorRow.d.ts +14 -7
- package/dist/components/connect/ConnectorRow.d.ts.map +1 -1
- package/dist/components/connect/ConnectorRuns.d.ts +50 -0
- package/dist/components/connect/ConnectorRuns.d.ts.map +1 -0
- package/dist/components/connect/ConnectorSettings.d.ts +29 -0
- package/dist/components/connect/ConnectorSettings.d.ts.map +1 -0
- package/dist/components/connect/ConnectorSyncActions.d.ts +15 -0
- package/dist/components/connect/ConnectorSyncActions.d.ts.map +1 -0
- package/dist/components/connect/ConnectorsPanel.d.ts +5 -3
- package/dist/components/connect/ConnectorsPanel.d.ts.map +1 -1
- package/dist/components/connect/ConnectorsTab.d.ts.map +1 -1
- package/dist/components/connect/connector-map.generated.d.ts +28 -0
- package/dist/components/connect/connector-map.generated.d.ts.map +1 -0
- package/dist/components/connect/connector-search.d.ts +104 -0
- package/dist/components/connect/connector-search.d.ts.map +1 -0
- package/dist/components/connect/connector-sources.d.ts +32 -0
- package/dist/components/connect/connector-sources.d.ts.map +1 -0
- package/dist/components/connect/connector-status.d.ts +15 -0
- package/dist/components/connect/connector-status.d.ts.map +1 -0
- package/dist/components/connect/credentials.d.ts +65 -0
- package/dist/components/connect/credentials.d.ts.map +1 -0
- package/dist/components/connect/index.d.ts +15 -3
- package/dist/components/connect/index.d.ts.map +1 -1
- package/dist/components/connect/model.d.ts +197 -23
- package/dist/components/connect/model.d.ts.map +1 -1
- package/dist/components/connect/oauth-return.d.ts +59 -0
- package/dist/components/connect/oauth-return.d.ts.map +1 -0
- package/dist/components/connect/useConnectors.d.ts +16 -2
- package/dist/components/connect/useConnectors.d.ts.map +1 -1
- package/dist/components/connect/when.d.ts +22 -0
- package/dist/components/connect/when.d.ts.map +1 -0
- package/dist/components/plugins/ConnectorsHub.d.ts.map +1 -1
- package/dist/components/plugins/PluginSettingsPanel.d.ts +10 -6
- package/dist/components/plugins/PluginSettingsPanel.d.ts.map +1 -1
- package/dist/components/right-rail.d.ts +4 -0
- package/dist/components/right-rail.d.ts.map +1 -1
- package/dist/components/settings/SettingsPage.d.ts +5 -2
- package/dist/components/settings/SettingsPage.d.ts.map +1 -1
- package/dist/components/shared/ContactPicker.d.ts +3 -1
- package/dist/components/shared/ContactPicker.d.ts.map +1 -1
- package/dist/components/shared/RecordPickerModal.d.ts +36 -0
- package/dist/components/shared/RecordPickerModal.d.ts.map +1 -0
- package/dist/crud/CrudDetailPage.d.ts +4 -1
- package/dist/crud/CrudDetailPage.d.ts.map +1 -1
- package/dist/crud/CrudFormPage.d.ts +9 -1
- package/dist/crud/CrudFormPage.d.ts.map +1 -1
- package/dist/crud/CrudListView.d.ts +30 -1
- package/dist/crud/CrudListView.d.ts.map +1 -1
- package/dist/crud/CrudPage.d.ts.map +1 -1
- package/dist/crud/CrudRecordModal.d.ts +19 -0
- package/dist/crud/CrudRecordModal.d.ts.map +1 -0
- package/dist/crud/RecordMetaFooter.d.ts +6 -0
- package/dist/crud/RecordMetaFooter.d.ts.map +1 -0
- package/dist/crud/archetypes/OrderDetailView.d.ts +7 -0
- package/dist/crud/archetypes/OrderDetailView.d.ts.map +1 -1
- package/dist/crud/archetypes/OrderFormView.d.ts +1 -0
- package/dist/crud/archetypes/OrderFormView.d.ts.map +1 -1
- package/dist/crud/archetypes/OrderListView.d.ts +29 -1
- package/dist/crud/archetypes/OrderListView.d.ts.map +1 -1
- package/dist/crud/entity-zone.d.ts +19 -0
- package/dist/crud/entity-zone.d.ts.map +1 -0
- package/dist/crud/index.d.ts +1 -1
- package/dist/crud/index.d.ts.map +1 -1
- package/dist/data/client.d.ts.map +1 -1
- package/dist/hooks/useChat.d.ts +1 -0
- package/dist/hooks/useChat.d.ts.map +1 -1
- package/dist/hooks/useMicLevels.d.ts +7 -2
- package/dist/hooks/useMicLevels.d.ts.map +1 -1
- package/dist/index.d.ts +32 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5667 -1563
- package/dist/index.js.map +1 -1
- package/dist/lib/ai-tool-handlers.d.ts +11 -0
- package/dist/lib/ai-tool-handlers.d.ts.map +1 -1
- package/dist/lib/assistant-activity.d.ts +81 -0
- package/dist/lib/assistant-activity.d.ts.map +1 -0
- package/dist/lib/assistant-invite.d.ts +46 -0
- package/dist/lib/assistant-invite.d.ts.map +1 -0
- package/dist/lib/connector-ai-tools.d.ts +2 -0
- package/dist/lib/connector-ai-tools.d.ts.map +1 -0
- package/dist/lib/connector-cards.d.ts +3 -0
- package/dist/lib/connector-cards.d.ts.map +1 -0
- package/dist/lib/core-ai-tools.d.ts.map +1 -1
- package/dist/lib/fayz-events.d.ts +4 -0
- package/dist/lib/fayz-events.d.ts.map +1 -0
- package/dist/org/adapters/supabase.d.ts.map +1 -1
- package/dist/org/index.js +1 -1
- package/dist/plugins/SettingsGroup.d.ts +31 -1
- package/dist/plugins/SettingsGroup.d.ts.map +1 -1
- package/dist/projects/SeuSiteWidget.d.ts.map +1 -1
- package/dist/stores/audit.d.ts +61 -0
- package/dist/stores/audit.d.ts.map +1 -0
- package/dist/stores/chat.store.d.ts +33 -0
- package/dist/stores/chat.store.d.ts.map +1 -1
- package/dist/stores/createCrudStore.d.ts +4 -1
- package/dist/stores/createCrudStore.d.ts.map +1 -1
- package/dist/theme/utils.d.ts.map +1 -1
- package/dist/timeline/PersonTimeline.d.ts +21 -0
- package/dist/timeline/PersonTimeline.d.ts.map +1 -0
- package/dist/timeline/core-sources.d.ts +2 -0
- package/dist/timeline/core-sources.d.ts.map +1 -0
- package/dist/timeline/index.d.ts +6 -0
- package/dist/timeline/index.d.ts.map +1 -0
- package/dist/timeline/registry.d.ts +5 -0
- package/dist/timeline/registry.d.ts.map +1 -0
- package/dist/timeline/types.d.ts +91 -0
- package/dist/timeline/types.d.ts.map +1 -0
- package/dist/timeline/usePersonTimeline.d.ts +28 -0
- package/dist/timeline/usePersonTimeline.d.ts.map +1 -0
- package/dist/types/crud.d.ts +12 -1
- package/dist/types/crud.d.ts.map +1 -1
- package/dist/types/plugins.d.ts +4 -0
- package/dist/types/plugins.d.ts.map +1 -1
- package/package.json +7 -7
- 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
|
-
*
|
|
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
|
|
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
|
-
* - **
|
|
16
|
-
*
|
|
17
|
-
* - **
|
|
18
|
-
*
|
|
19
|
-
*
|
|
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;
|
|
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
|
|
3
|
-
/**
|
|
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;
|
|
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:
|
|
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,
|
|
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
|
-
|
|
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
|
|
24
|
-
*
|
|
25
|
-
*
|
|
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,
|
|
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;
|
|
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
|
|
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
|
|
33
|
-
|
|
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
|
|
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,
|
|
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"}
|