@fayz-ai/admin 0.12.0 → 0.15.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-S3QI5MHO.js → ScheduleEditor-57AYL7B6.js} +4 -4
- package/dist/{ScheduleEditor-S3QI5MHO.js.map → ScheduleEditor-57AYL7B6.js.map} +1 -1
- package/dist/SubscriptionPage-FE2B5ZXF.js +7 -0
- package/dist/{SubscriptionPage-NLZAZO4P.js.map → SubscriptionPage-FE2B5ZXF.js.map} +1 -1
- package/dist/app/AdminShell.d.ts +11 -1
- package/dist/app/AdminShell.d.ts.map +1 -1
- package/dist/app/admin-app.d.ts.map +1 -1
- package/dist/app/config.d.ts +34 -3
- package/dist/app/config.d.ts.map +1 -1
- package/dist/app/core-entities.d.ts.map +1 -1
- package/dist/app/derive-contract.d.ts.map +1 -1
- package/dist/app/scaffold.d.ts.map +1 -1
- package/dist/{chunk-OI7RYSTM.js → chunk-45EZQW4M.js} +22 -7
- package/dist/chunk-45EZQW4M.js.map +1 -0
- package/dist/{chunk-5O2UJAQ7.js → chunk-IPWXA46H.js} +3 -7
- package/dist/chunk-IPWXA46H.js.map +1 -0
- package/dist/{chunk-PNAJODZM.js → chunk-OB7ZSTQD.js} +13 -3
- package/dist/chunk-OB7ZSTQD.js.map +1 -0
- package/dist/components/AskAI.d.ts +71 -0
- package/dist/components/AskAI.d.ts.map +1 -0
- package/dist/components/RightRail.d.ts +10 -2
- package/dist/components/RightRail.d.ts.map +1 -1
- package/dist/components/RightRailPage.d.ts +30 -0
- package/dist/components/RightRailPage.d.ts.map +1 -0
- package/dist/components/billing/SubscriptionPage.d.ts.map +1 -1
- package/dist/components/chat/AgentAvatar.d.ts +43 -0
- package/dist/components/chat/AgentAvatar.d.ts.map +1 -0
- package/dist/components/chat/AgentIntro.d.ts +25 -0
- package/dist/components/chat/AgentIntro.d.ts.map +1 -0
- package/dist/components/chat/AssistantActivityBar.d.ts +7 -2
- package/dist/components/chat/AssistantActivityBar.d.ts.map +1 -1
- package/dist/components/chat/AssistantInvite.d.ts.map +1 -1
- package/dist/components/chat/AssistantRecordingView.d.ts +16 -0
- package/dist/components/chat/AssistantRecordingView.d.ts.map +1 -0
- package/dist/components/chat/ChatAttachments.d.ts +12 -1
- package/dist/components/chat/ChatAttachments.d.ts.map +1 -1
- package/dist/components/chat/ChatComposer.d.ts +1 -4
- package/dist/components/chat/ChatComposer.d.ts.map +1 -1
- package/dist/components/chat/ChatConversation.d.ts +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/ChatHistory.d.ts.map +1 -1
- package/dist/components/chat/ChatMessages.d.ts +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 +3 -0
- package/dist/components/chat/ConnectorSuggestionCard.d.ts.map +1 -1
- package/dist/components/chat/StaffHireView.d.ts +21 -0
- package/dist/components/chat/StaffHireView.d.ts.map +1 -0
- package/dist/components/chat/StaffPitchCard.d.ts +15 -0
- package/dist/components/chat/StaffPitchCard.d.ts.map +1 -0
- package/dist/components/chat/StaffSwitcher.d.ts +23 -0
- package/dist/components/chat/StaffSwitcher.d.ts.map +1 -0
- package/dist/components/chat/activity-icons.d.ts +16 -0
- package/dist/components/chat/activity-icons.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/ConnectConsentPage.d.ts.map +1 -1
- package/dist/components/connect/ConnectorDetail.d.ts.map +1 -1
- package/dist/components/connect/ConnectorRuns.d.ts.map +1 -1
- 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.map +1 -1
- package/dist/components/connect/index.d.ts +3 -0
- package/dist/components/connect/index.d.ts.map +1 -1
- package/dist/components/connect/model.d.ts +55 -0
- package/dist/components/connect/model.d.ts.map +1 -1
- package/dist/components/organization/PermissionMatrixEditor.d.ts.map +1 -1
- package/dist/components/organization/PermissionProfilesTab.d.ts.map +1 -1
- package/dist/components/organization/TeamTab.d.ts.map +1 -1
- package/dist/components/organization/index.d.ts +0 -2
- package/dist/components/organization/index.d.ts.map +1 -1
- package/dist/components/plugins/PluginSettingsPanel.d.ts +12 -3
- package/dist/components/plugins/PluginSettingsPanel.d.ts.map +1 -1
- package/dist/components/plugins/SettingsTabs.d.ts +33 -0
- package/dist/components/plugins/SettingsTabs.d.ts.map +1 -0
- package/dist/components/rail-pages.d.ts +17 -0
- package/dist/components/rail-pages.d.ts.map +1 -0
- package/dist/components/right-rail.d.ts +95 -1
- package/dist/components/right-rail.d.ts.map +1 -1
- package/dist/components/settings/ConnectedCompanySettings.d.ts.map +1 -1
- package/dist/components/settings/ConnectedUserProfile.d.ts.map +1 -1
- package/dist/components/settings/FieldRulesSettings.d.ts.map +1 -1
- package/dist/components/settings/LocationsCrudPage.d.ts.map +1 -1
- package/dist/components/settings/MyRecordPanel.d.ts +3 -0
- package/dist/components/settings/MyRecordPanel.d.ts.map +1 -0
- package/dist/components/settings/MyWorkspaceCard.d.ts +3 -0
- package/dist/components/settings/MyWorkspaceCard.d.ts.map +1 -0
- package/dist/components/settings/SettingsPage.d.ts.map +1 -1
- package/dist/components/shared/ContactPicker.d.ts +26 -12
- package/dist/components/shared/ContactPicker.d.ts.map +1 -1
- package/dist/crud/CrudAgentSurface.d.ts +12 -0
- package/dist/crud/CrudAgentSurface.d.ts.map +1 -0
- package/dist/crud/CrudDetailPage.d.ts +19 -1
- package/dist/crud/CrudDetailPage.d.ts.map +1 -1
- package/dist/crud/CrudFormPage.d.ts +23 -1
- package/dist/crud/CrudFormPage.d.ts.map +1 -1
- package/dist/crud/CrudListView.d.ts +28 -15
- package/dist/crud/CrudListView.d.ts.map +1 -1
- package/dist/crud/CrudPage.d.ts +20 -1
- package/dist/crud/CrudPage.d.ts.map +1 -1
- package/dist/crud/CrudRecordModal.d.ts +9 -3
- package/dist/crud/CrudRecordModal.d.ts.map +1 -1
- package/dist/crud/LookupCreateInline.d.ts +15 -0
- package/dist/crud/LookupCreateInline.d.ts.map +1 -0
- package/dist/crud/archetype-lookup.d.ts +22 -0
- package/dist/crud/archetype-lookup.d.ts.map +1 -1
- package/dist/crud/archetypes/AddressesTab.d.ts.map +1 -1
- package/dist/crud/archetypes/LocationDetailTabs.d.ts +3 -2
- package/dist/crud/archetypes/LocationDetailTabs.d.ts.map +1 -1
- package/dist/crud/archetypes/OrderDetailView.d.ts +4 -1
- package/dist/crud/archetypes/OrderDetailView.d.ts.map +1 -1
- package/dist/crud/archetypes/OrderFormView.d.ts +17 -3
- package/dist/crud/archetypes/OrderFormView.d.ts.map +1 -1
- package/dist/crud/archetypes/OrderListView.d.ts +1 -1
- package/dist/crud/archetypes/OrderListView.d.ts.map +1 -1
- package/dist/crud/archetypes/PersonDetailTabs.d.ts +2 -1
- package/dist/crud/archetypes/PersonDetailTabs.d.ts.map +1 -1
- package/dist/crud/archetypes/PersonPicker.d.ts.map +1 -1
- package/dist/crud/createCrudPage.d.ts +8 -0
- package/dist/crud/createCrudPage.d.ts.map +1 -1
- package/dist/crud/useLookupCreate.d.ts +30 -0
- package/dist/crud/useLookupCreate.d.ts.map +1 -0
- package/dist/data/client.d.ts.map +1 -1
- package/dist/hooks/useAITools.d.ts +1 -0
- package/dist/hooks/useAITools.d.ts.map +1 -1
- package/dist/hooks/useChat.d.ts.map +1 -1
- package/dist/hooks/useModuleNavigation.d.ts.map +1 -1
- package/dist/index.d.ts +22 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14310 -7280
- package/dist/index.js.map +1 -1
- package/dist/lib/agent-staff.d.ts +117 -0
- package/dist/lib/agent-staff.d.ts.map +1 -0
- package/dist/lib/agent-surface.d.ts +4 -0
- package/dist/lib/agent-surface.d.ts.map +1 -1
- package/dist/lib/agent-threads.d.ts +15 -0
- package/dist/lib/agent-threads.d.ts.map +1 -0
- package/dist/lib/ai-tool-handlers.d.ts.map +1 -1
- package/dist/lib/assistant-activity.d.ts +47 -4
- package/dist/lib/assistant-activity.d.ts.map +1 -1
- package/dist/lib/assistant-invite.d.ts +20 -1
- package/dist/lib/assistant-invite.d.ts.map +1 -1
- package/dist/lib/assistant-text.d.ts +9 -0
- package/dist/lib/assistant-text.d.ts.map +1 -0
- package/dist/lib/chat-upload.d.ts +12 -0
- package/dist/lib/chat-upload.d.ts.map +1 -0
- package/dist/lib/core-ai-tools.d.ts +17 -0
- package/dist/lib/core-ai-tools.d.ts.map +1 -1
- package/dist/lib/fayz-agent.d.ts +9 -0
- package/dist/lib/fayz-agent.d.ts.map +1 -1
- package/dist/lib/staff-cards.d.ts +11 -0
- package/dist/lib/staff-cards.d.ts.map +1 -0
- package/dist/lib/unit-ai-handlers.d.ts +2 -0
- package/dist/lib/unit-ai-handlers.d.ts.map +1 -0
- package/dist/lib/unit-ai-tools.d.ts +3 -0
- package/dist/lib/unit-ai-tools.d.ts.map +1 -0
- package/dist/onboarding/GettingStartedWidget.d.ts +13 -0
- package/dist/onboarding/GettingStartedWidget.d.ts.map +1 -0
- package/dist/onboarding/WorkspaceSetupFlow.d.ts +24 -0
- package/dist/onboarding/WorkspaceSetupFlow.d.ts.map +1 -0
- package/dist/onboarding/WorkspaceSetupGate.d.ts +25 -0
- package/dist/onboarding/WorkspaceSetupGate.d.ts.map +1 -0
- package/dist/onboarding/analyze-site.d.ts +23 -0
- package/dist/onboarding/analyze-site.d.ts.map +1 -0
- package/dist/onboarding/backend.d.ts +44 -0
- package/dist/onboarding/backend.d.ts.map +1 -0
- package/dist/onboarding/checklist.d.ts +55 -0
- package/dist/onboarding/checklist.d.ts.map +1 -0
- package/dist/onboarding/connector-options.d.ts +52 -0
- package/dist/onboarding/connector-options.d.ts.map +1 -0
- package/dist/onboarding/decide.d.ts +36 -0
- package/dist/onboarding/decide.d.ts.map +1 -0
- package/dist/onboarding/index.d.ts +19 -0
- package/dist/onboarding/index.d.ts.map +1 -0
- package/dist/onboarding/infer-vertical.d.ts +2 -0
- package/dist/onboarding/infer-vertical.d.ts.map +1 -0
- package/dist/onboarding/packs/beauty.d.ts +4 -0
- package/dist/onboarding/packs/beauty.d.ts.map +1 -0
- package/dist/onboarding/packs/food.d.ts +4 -0
- package/dist/onboarding/packs/food.d.ts.map +1 -0
- package/dist/onboarding/packs/index.d.ts +17 -0
- package/dist/onboarding/packs/index.d.ts.map +1 -0
- package/dist/onboarding/packs/retail.d.ts +8 -0
- package/dist/onboarding/packs/retail.d.ts.map +1 -0
- package/dist/onboarding/questions.d.ts +41 -0
- package/dist/onboarding/questions.d.ts.map +1 -0
- package/dist/onboarding/resolve.d.ts +12 -0
- package/dist/onboarding/resolve.d.ts.map +1 -0
- package/dist/onboarding/steps.d.ts +31 -0
- package/dist/onboarding/steps.d.ts.map +1 -0
- package/dist/onboarding/store.d.ts +17 -0
- package/dist/onboarding/store.d.ts.map +1 -0
- package/dist/onboarding/submit.d.ts +25 -0
- package/dist/onboarding/submit.d.ts.map +1 -0
- package/dist/onboarding/tasks.d.ts +28 -0
- package/dist/onboarding/tasks.d.ts.map +1 -0
- package/dist/onboarding/types.d.ts +39 -0
- package/dist/onboarding/types.d.ts.map +1 -0
- package/dist/onboarding/useWorkspaceSetupGate.d.ts +36 -0
- package/dist/onboarding/useWorkspaceSetupGate.d.ts.map +1 -0
- package/dist/org/context.d.ts +10 -0
- package/dist/org/context.d.ts.map +1 -1
- package/dist/org/index.js +2 -2
- package/dist/org/self.d.ts +50 -0
- package/dist/org/self.d.ts.map +1 -0
- package/dist/plugins/QuickActionsButton.d.ts +13 -4
- package/dist/plugins/QuickActionsButton.d.ts.map +1 -1
- package/dist/plugins/WidgetSlot.d.ts +12 -1
- package/dist/plugins/WidgetSlot.d.ts.map +1 -1
- package/dist/projects/ProjectsSettings.d.ts.map +1 -1
- package/dist/stores/chat.store.d.ts +150 -2
- package/dist/stores/chat.store.d.ts.map +1 -1
- package/dist/tasks/TasksRailPanel.d.ts +4 -0
- package/dist/tasks/TasksRailPanel.d.ts.map +1 -0
- package/dist/tasks/components/TaskCard.d.ts +11 -0
- package/dist/tasks/components/TaskCard.d.ts.map +1 -0
- package/dist/tasks/components/TaskDetail.d.ts +5 -0
- package/dist/tasks/components/TaskDetail.d.ts.map +1 -0
- package/dist/tasks/components/TaskLabelBadge.d.ts +9 -0
- package/dist/tasks/components/TaskLabelBadge.d.ts.map +1 -0
- package/dist/tasks/components/TaskPriorityBadge.d.ts +7 -0
- package/dist/tasks/components/TaskPriorityBadge.d.ts.map +1 -0
- package/dist/tasks/components/TaskQuickAdd.d.ts +5 -0
- package/dist/tasks/components/TaskQuickAdd.d.ts.map +1 -0
- package/dist/tasks/components/TaskSourceBadge.d.ts +5 -0
- package/dist/tasks/components/TaskSourceBadge.d.ts.map +1 -0
- package/dist/tasks/components/TaskStatusGroup.d.ts +17 -0
- package/dist/tasks/components/TaskStatusGroup.d.ts.map +1 -0
- package/dist/tasks/components/TasksFilterBar.d.ts +3 -0
- package/dist/tasks/components/TasksFilterBar.d.ts.map +1 -0
- package/dist/tasks/components/TasksPanel.d.ts +14 -0
- package/dist/tasks/components/TasksPanel.d.ts.map +1 -0
- package/dist/tasks/data/mock.d.ts +3 -0
- package/dist/tasks/data/mock.d.ts.map +1 -0
- package/dist/tasks/data/supabase.d.ts +3 -0
- package/dist/tasks/data/supabase.d.ts.map +1 -0
- package/dist/tasks/entity.d.ts +11 -0
- package/dist/tasks/entity.d.ts.map +1 -0
- package/dist/tasks/index.d.ts +17 -0
- package/dist/tasks/index.d.ts.map +1 -0
- package/dist/tasks/registry.d.ts +3 -0
- package/dist/tasks/registry.d.ts.map +1 -0
- package/dist/tasks/store.d.ts +34 -0
- package/dist/tasks/store.d.ts.map +1 -0
- package/dist/tasks/types.d.ts +89 -0
- package/dist/tasks/types.d.ts.map +1 -0
- package/dist/theme/index.d.ts +1 -1
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/theme/utils.d.ts +14 -0
- package/dist/theme/utils.d.ts.map +1 -1
- package/dist/types/index.d.ts +0 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/plugins.d.ts +3 -0
- package/dist/types/plugins.d.ts.map +1 -1
- package/dist/units/MemberAccessRailPage.d.ts +19 -0
- package/dist/units/MemberAccessRailPage.d.ts.map +1 -0
- package/dist/units/MemberUnitsCell.d.ts +11 -0
- package/dist/units/MemberUnitsCell.d.ts.map +1 -0
- package/dist/units/PersonUnitsTab.d.ts +5 -0
- package/dist/units/PersonUnitsTab.d.ts.map +1 -0
- package/dist/units/UnitMembersTab.d.ts +5 -0
- package/dist/units/UnitMembersTab.d.ts.map +1 -0
- package/dist/units/UnitMenuSection.d.ts +15 -0
- package/dist/units/UnitMenuSection.d.ts.map +1 -0
- package/dist/units/UnitModeCard.d.ts +3 -0
- package/dist/units/UnitModeCard.d.ts.map +1 -0
- package/dist/units/UnitRailPage.d.ts +10 -0
- package/dist/units/UnitRailPage.d.ts.map +1 -0
- package/dist/units/UnitSwitcher.d.ts +5 -0
- package/dist/units/UnitSwitcher.d.ts.map +1 -0
- package/dist/units/UnitsSettingsPage.d.ts +3 -0
- package/dist/units/UnitsSettingsPage.d.ts.map +1 -0
- package/dist/units/cache.d.ts +26 -0
- package/dist/units/cache.d.ts.map +1 -0
- package/dist/units/data.d.ts +111 -0
- package/dist/units/data.d.ts.map +1 -0
- package/dist/units/device.d.ts +26 -0
- package/dist/units/device.d.ts.map +1 -0
- package/dist/units/entry.d.ts +52 -0
- package/dist/units/entry.d.ts.map +1 -0
- package/dist/units/geo.d.ts +18 -0
- package/dist/units/geo.d.ts.map +1 -0
- package/dist/units/index.d.ts +18 -0
- package/dist/units/index.d.ts.map +1 -0
- package/dist/units/store.d.ts +32 -0
- package/dist/units/store.d.ts.map +1 -0
- package/dist/units/useUnitBootstrap.d.ts +10 -0
- package/dist/units/useUnitBootstrap.d.ts.map +1 -0
- package/package.json +10 -10
- package/dist/SubscriptionPage-NLZAZO4P.js +0 -7
- package/dist/chunk-5O2UJAQ7.js.map +0 -1
- package/dist/chunk-OI7RYSTM.js.map +0 -1
- package/dist/chunk-PNAJODZM.js.map +0 -1
- package/dist/components/organization/OrgInitializer.d.ts +0 -7
- package/dist/components/organization/OrgInitializer.d.ts.map +0 -1
- package/dist/components/organization/OrgSwitcher.d.ts +0 -7
- package/dist/components/organization/OrgSwitcher.d.ts.map +0 -1
- package/dist/components/organization/TenantOnboarding.d.ts +0 -9
- package/dist/components/organization/TenantOnboarding.d.ts.map +0 -1
- package/dist/components/shared/create-person.d.ts +0 -20
- package/dist/components/shared/create-person.d.ts.map +0 -1
- package/dist/types/entity-lookup.d.ts +0 -18
- package/dist/types/entity-lookup.d.ts.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/org/store.ts","../src/org/cache.ts","../src/org/context.tsx"],"names":["STORAGE_KEY"],"mappings":"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","file":"chunk-OB7ZSTQD.js","sourcesContent":["import { create } from 'zustand'\nimport { setActiveTenantId, type Organization, type OrgMember, type OrgMembership } from '@fayz-ai/core'\n\nconst STORAGE_KEY = 'fayz:current-org'\n\n// ---------------------------------------------------------------------------\n// Persistence helpers\n// ---------------------------------------------------------------------------\n\nfunction getPersistedOrgId(): string | null {\n try {\n if (typeof localStorage === 'undefined') return null\n return localStorage.getItem(STORAGE_KEY)\n } catch {\n return null\n }\n}\n\nfunction persistOrgId(orgId: string | null): void {\n try {\n if (typeof localStorage === 'undefined') return\n if (orgId) {\n localStorage.setItem(STORAGE_KEY, orgId)\n } else {\n localStorage.removeItem(STORAGE_KEY)\n }\n } catch {\n // ignore\n }\n}\n\n// ---------------------------------------------------------------------------\n// Store interface\n// ---------------------------------------------------------------------------\n\nexport interface OrgStore {\n currentOrg: Organization | null\n userOrgs: OrgMembership[]\n members: OrgMember[]\n /** Person `kind`s that make up the team (from config.team.personKinds). Drives\n * the Person-first Team screen; empty = legacy membership-only mode. */\n teamPersonKinds: string[]\n loading: boolean\n\n setCurrentOrg: (org: Organization | null) => void\n setUserOrgs: (orgs: OrgMembership[]) => void\n setMembers: (members: OrgMember[]) => void\n setTeamPersonKinds: (kinds: string[]) => void\n setLoading: (loading: boolean) => void\n reset: () => void\n}\n\nexport const useOrganizationStore = create<OrgStore>((set) => ({\n currentOrg: null,\n userOrgs: [],\n members: [],\n teamPersonKinds: [],\n loading: false,\n\n setCurrentOrg: (org) => {\n setActiveTenantId(org?.id)\n persistOrgId(org?.id ?? null)\n set({ currentOrg: org })\n },\n setUserOrgs: (orgs) => set({ userOrgs: orgs }),\n setMembers: (members) => set({ members }),\n setTeamPersonKinds: (kinds) => set({ teamPersonKinds: kinds }),\n setLoading: (loading) => set({ loading }),\n reset: () => {\n setActiveTenantId(undefined)\n // NOTE: do NOT clear the persisted org id here. The org providers call\n // reset() whenever the auth store transiently reports `user === null` —\n // which happens on every fresh load while the Supabase session hydrates\n // asynchronously. Wiping 'fayz:current-org' at that moment drops a\n // multi-org user's workspace selection BEFORE loadOrgs can read it back,\n // so the app always falls to memberships[0] on reload (single-org users\n // never noticed). The pin is a last-selected hint that's re-validated\n // against the fresh membership list on load, so it's safe to keep across\n // sign-out too (a mismatching pin just falls back to memberships[0]).\n set({ currentOrg: null, userOrgs: [], members: [], loading: false })\n },\n}))\n\nexport { getPersistedOrgId }\n","import type { Organization, OrgMember, OrgMembership, PermissionProfile } from '@fayz-ai/core'\n\n/**\n * Snapshot of the org bootstrap (org + memberships + members + permission\n * profiles) so a page reload doesn't wait on the whole chain again.\n *\n * Every mount used to pay `acceptPendingInvites → listUserOrgs → getOrg →\n * listMembers + listProfiles` before `org.id` existed, and every screen keyed\n * off the tenant (Conectores, plugin tabs, permission gates) sat idle until\n * then. The snapshot paints that state synchronously and the network is only\n * touched again once it goes stale.\n */\n\nconst STORAGE_KEY = 'fayz:org-snapshot'\nconst VERSION = 1\n\n/** Served without touching the network. */\nexport const ORG_CACHE_TTL_MS = 5 * 60 * 1000\n/** Older than this and the snapshot is dropped instead of painted. */\nconst MAX_AGE_MS = 24 * 60 * 60 * 1000\n/** Bigger than this (huge member lists) and we skip persisting rather than blow the quota. */\nconst MAX_BYTES = 512 * 1024\n\nexport interface OrgSnapshot {\n version: number\n /** Who the snapshot belongs to — a different user gets a cold load. */\n userId: string\n /** When the data last came from the server (store patches don't move it). */\n savedAt: number\n org: Organization\n userOrgs: OrgMembership[]\n members: OrgMember[]\n profiles: PermissionProfile[]\n currentProfileId: string | null\n}\n\nexport type OrgSnapshotInput = Omit<OrgSnapshot, 'version' | 'savedAt'>\n\nfunction storage(): Storage | null {\n try {\n if (typeof localStorage === 'undefined') return null\n return localStorage\n } catch {\n return null\n }\n}\n\nexport function readOrgSnapshot(): OrgSnapshot | null {\n const store = storage()\n if (!store) return null\n try {\n const raw = store.getItem(STORAGE_KEY)\n if (!raw) return null\n const snapshot = JSON.parse(raw) as OrgSnapshot\n if (snapshot?.version !== VERSION || !snapshot.org?.id || !snapshot.userId) return null\n if (snapshotAge(snapshot) > MAX_AGE_MS) {\n store.removeItem(STORAGE_KEY)\n return null\n }\n return snapshot\n } catch {\n return null\n }\n}\n\nexport function snapshotAge(snapshot: OrgSnapshot): number {\n const age = Date.now() - snapshot.savedAt\n // A clock that moved backwards shouldn't hand out an eternally fresh cache.\n return age < 0 ? Number.POSITIVE_INFINITY : age\n}\n\nexport function isSnapshotFresh(snapshot: OrgSnapshot, ttlMs: number): boolean {\n return snapshotAge(snapshot) < ttlMs\n}\n\n/** Record a fresh server read — restarts the TTL window. */\nexport function saveOrgSnapshot(input: OrgSnapshotInput): void {\n write({ ...input, version: VERSION, savedAt: Date.now() })\n}\n\n/**\n * Keep the snapshot in step with store writes made outside the provider\n * (renaming the org in Settings, editing a role) WITHOUT restarting the TTL —\n * otherwise a UI-only change would push the next revalidation out forever.\n */\nexport function patchOrgSnapshot(input: OrgSnapshotInput): void {\n const current = readOrgSnapshot()\n if (!current || current.userId !== input.userId) return\n write({ ...input, version: VERSION, savedAt: current.savedAt })\n}\n\nexport function clearOrgSnapshot(): void {\n try {\n storage()?.removeItem(STORAGE_KEY)\n } catch {\n // ignore\n }\n}\n\nfunction write(snapshot: OrgSnapshot): void {\n const store = storage()\n if (!store) return\n try {\n const raw = JSON.stringify(snapshot)\n if (raw.length > MAX_BYTES) return\n store.setItem(STORAGE_KEY, raw)\n } catch {\n // Quota or serialization failure — the cache is an optimization, not state.\n }\n}\n","import * as React from 'react'\nimport type { OrgAdapter, Organization, OrgMembership } from '@fayz-ai/core'\nimport { useAuthStore } from '@fayz-ai/auth'\nimport { useOrganizationStore, getPersistedOrgId } from './store'\nimport { usePermissionsStore } from '../permissions'\nimport {\n ORG_CACHE_TTL_MS,\n clearOrgSnapshot,\n isSnapshotFresh,\n patchOrgSnapshot,\n readOrgSnapshot,\n saveOrgSnapshot,\n type OrgSnapshot,\n} from './cache'\n\n// ---------------------------------------------------------------------------\n// Adapter context\n// ---------------------------------------------------------------------------\n\nconst OrgAdapterContext = React.createContext<OrgAdapter | null>(null)\n\nexport function useOrgAdapter(): OrgAdapter {\n const adapter = React.useContext(OrgAdapterContext)\n if (!adapter) {\n throw new Error('useOrgAdapter must be used within an <OrgProvider>')\n }\n return adapter\n}\n\nexport function useOrgAdapterOptional(): OrgAdapter | null {\n return React.useContext(OrgAdapterContext)\n}\n\n// ---------------------------------------------------------------------------\n// Tenant / org hook\n// ---------------------------------------------------------------------------\n\nexport interface TenantContext {\n /** The currently active organization */\n org: Organization | null\n /** All orgs the current user belongs to */\n userOrgs: OrgMembership[]\n loading: boolean\n /**\n * The bootstrap has finished at least once, so `org === null` now MEANS\n * \"belongs to no workspace\" instead of \"we have not looked yet\".\n *\n * `loading` cannot answer that: it starts `false`, before the effect that\n * loads anything has run. Anything deciding what to render from an empty org\n * — the setup gate — reads this, or it decides during the gap and flips its\n * mind a frame later.\n */\n settled: boolean\n /** Switch the active org */\n switchOrg: (orgId: string) => Promise<void>\n /** Refresh the current org from the adapter */\n refreshOrg: () => Promise<void>\n}\n\nconst TenantContext = React.createContext<TenantContext | null>(null)\n\n/**\n * Access the current tenant / organization.\n * Must be used inside <OrgProvider>.\n */\nexport function useTenant(): TenantContext {\n const ctx = React.useContext(TenantContext)\n if (!ctx) {\n throw new Error('useTenant must be used inside <OrgProvider>')\n }\n return ctx\n}\n\nexport function useTenantOptional(): TenantContext | null {\n return React.useContext(TenantContext)\n}\n\n// ---------------------------------------------------------------------------\n// Provider\n// ---------------------------------------------------------------------------\n\nexport interface OrgProviderProps {\n adapter: OrgAdapter\n /** When true, automatically creates an org if the user has none */\n autoCreate?: boolean\n /**\n * How long the cached org bootstrap is served before the provider goes back\n * to the network (default 5 min). A cached load paints synchronously, so\n * screens that key off `org.id` don't wait a round trip on every reload.\n * `0` disables the cache and restores the always-fetch behaviour.\n */\n cacheTtlMs?: number\n children: React.ReactNode\n}\n\nconst useIsomorphicLayoutEffect =\n typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect\n\nexport function OrgProvider({\n adapter,\n autoCreate = false,\n cacheTtlMs = ORG_CACHE_TTL_MS,\n children,\n}: OrgProviderProps) {\n const { user, isLoading: authLoading } = useAuthStore()\n const { currentOrg, userOrgs, loading, setCurrentOrg, setUserOrgs, setMembers, setLoading, reset } =\n useOrganizationStore()\n const setProfiles = usePermissionsStore((s) => s.setProfiles)\n const setCurrentProfile = usePermissionsStore((s) => s.setCurrentProfile)\n\n const adapterRef = React.useRef(adapter)\n adapterRef.current = adapter\n\n const [snapshot] = React.useState<OrgSnapshot | null>(() =>\n cacheTtlMs > 0 ? readOrgSnapshot() : null,\n )\n // One load per signed-in user per mount — auth reports `isLoading` and `user`\n // in two separate store writes, so the effect would otherwise fire twice.\n const loadedForRef = React.useRef<string | null>(null)\n\n // WHOSE bootstrap has finished, not whether one has. A boolean could not tell\n // the difference between \"we know this account has no workspace\" and \"we knew\n // that about the account that just signed out\" — which is what flashed the\n // setup flow over every login: sign-out settled it, and sign-in kept the\n // stale `true` for the whole round trip.\n //\n // A painted snapshot is already an answer for its own user: that account HAS a\n // workspace, and revalidation will not turn that into \"has none\".\n const [settledFor, setSettledFor] = React.useState<string | null>(() =>\n snapshot?.org ? snapshot.userId : null,\n )\n // Signed out there is nothing to wait for; signed in, only this user's answer counts.\n const settled = user ? settledFor === user.id : !authLoading\n\n // Paint the last known org before the first child renders. The stores are\n // filled in a layout effect, so nothing gets a frame with `org === null`.\n useIsomorphicLayoutEffect(() => {\n if (!snapshot) return\n setUserOrgs(snapshot.userOrgs)\n setCurrentOrg(snapshot.org)\n setMembers(snapshot.members)\n setProfiles(snapshot.profiles)\n setCurrentProfile(snapshot.profiles.find((p) => p.id === snapshot.currentProfileId) ?? null)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n // Keep the snapshot in step with store writes made outside this provider —\n // renaming the org in Settings, editing a role — so the cache never serves a\n // value the user already changed on screen. Patching leaves `savedAt` alone:\n // a UI-only edit must not push the next revalidation further out.\n React.useEffect(() => {\n if (cacheTtlMs <= 0 || !user) return\n const uid = user.id\n const sync = () => {\n const org = useOrganizationStore.getState()\n if (!org.currentOrg) return\n const perms = usePermissionsStore.getState()\n patchOrgSnapshot({\n userId: uid,\n org: org.currentOrg,\n userOrgs: org.userOrgs,\n members: org.members,\n profiles: perms.profiles,\n // realProfile, not currentProfile: an impersonation preview is not\n // something to cache back as the user's own role.\n currentProfileId: perms.realProfile?.id ?? null,\n })\n }\n const unsubscribeOrg = useOrganizationStore.subscribe(sync)\n const unsubscribePerms = usePermissionsStore.subscribe(sync)\n return () => {\n unsubscribeOrg()\n unsubscribePerms()\n }\n }, [user?.id, cacheTtlMs])\n\n // Load the org's members + permission profiles into the shared stores whenever\n // an org resolves. This is what makes the role list, the invite dialog's role\n // dropdown, and permission checks work — previously nothing loaded them here,\n // so those surfaces came up empty. Also resolves the signed-in user's own role.\n const hydrateOrg = React.useCallback(\n async (org: Organization, memberships: OrgMembership[], uid: string | undefined) => {\n try {\n const [members, profiles] = await Promise.all([\n adapterRef.current.listMembers(org.id),\n adapterRef.current.listProfiles(org.id),\n ])\n setMembers(members)\n setProfiles(profiles)\n const myMembership = uid ? members.find((m) => m.userId === uid) : undefined\n const profile = profiles.find((p) => p.id === myMembership?.profileId) ?? null\n setCurrentProfile(profile)\n // Everything the next reload needs, stamped now — this is the only\n // place the TTL window restarts.\n if (cacheTtlMs > 0 && uid) {\n saveOrgSnapshot({\n userId: uid,\n org,\n userOrgs: memberships,\n members,\n profiles,\n currentProfileId: profile?.id ?? null,\n })\n }\n } catch {\n // Non-fatal — leave stores as-is if the load fails.\n }\n },\n [setMembers, setProfiles, setCurrentProfile, cacheTtlMs],\n )\n\n // Load orgs when user is authenticated\n React.useEffect(() => {\n if (!user) {\n // A cold load reports `user === null` while the session hydrates — that's\n // not a sign-out, so the painted snapshot stands until auth settles.\n if (authLoading) return\n loadedForRef.current = null\n reset()\n clearOrgSnapshot()\n setSettledFor(null)\n return\n }\n\n const cached = snapshot?.userId === user.id ? snapshot : null\n\n // Already painted and still inside its window: skip the whole bootstrap.\n if (cached && isSnapshotFresh(cached, cacheTtlMs)) { setSettledFor(user.id); return }\n\n // A snapshot from another account was painted — drop it before loading.\n if (snapshot && snapshot.userId !== user.id && loadedForRef.current === null) {\n reset()\n clearOrgSnapshot()\n }\n\n if (loadedForRef.current === user.id) return\n loadedForRef.current = user.id\n\n // Stale but painted: revalidate quietly, so screens keep the data they're\n // showing instead of flipping back to a skeleton.\n const silent = !!cached\n\n let cancelled = false\n\n async function loadOrgs() {\n if (!silent) setLoading(true)\n try {\n // Redeem invites first — an invitee has no membership until this runs,\n // and without it autoCreate below would hand them a personal org\n // instead of the one that invited them.\n let accepted = 0\n try {\n accepted = (await adapterRef.current.acceptPendingInvites?.()) ?? 0\n } catch {\n // Non-fatal: fall through and load whatever memberships exist.\n }\n\n if (cancelled) return\n\n let memberships = await adapterRef.current.listUserOrgs(user!.id)\n\n // An empty list right after accepting means the read was deduped onto a\n // request that started before the invite landed. Ask once more.\n if (memberships.length === 0 && accepted > 0) {\n memberships = await adapterRef.current.listUserOrgs(user!.id)\n }\n\n if (cancelled) return\n\n setUserOrgs(memberships)\n\n // Auto-create org if user has none\n if (memberships.length === 0 && accepted === 0 && autoCreate) {\n const newOrg = await adapterRef.current.createOrg(\n user!.fullName ? `${user!.fullName}'s Organization` : 'My Organization',\n user!.id,\n )\n if (!cancelled) {\n const ownMembership: OrgMembership[] = [\n {\n orgId: newOrg.id,\n orgName: newOrg.name,\n orgSlug: newOrg.slug,\n profileId: 'owner',\n profileName: 'Owner',\n },\n ]\n setUserOrgs(ownMembership)\n setCurrentOrg(newOrg)\n await hydrateOrg(newOrg, ownMembership, user!.id)\n }\n return\n }\n\n // Restore previously selected org or default to first\n const persistedId = getPersistedOrgId()\n const target =\n memberships.find((m) => m.orgId === persistedId) ?? memberships[0]\n\n if (target && !cancelled) {\n const org = await adapterRef.current.getOrg(target.orgId)\n if (!cancelled) {\n setCurrentOrg(org)\n await hydrateOrg(org, memberships, user!.id)\n }\n }\n } finally {\n if (!cancelled && !silent) setLoading(false)\n // Settled even when the load threw: the answer is then \"we asked and\n // could not tell\", and holding the screen forever is worse than showing\n // the app. It is about the wait being over, not about success.\n if (!cancelled) setSettledFor(user!.id)\n }\n }\n\n void loadOrgs()\n\n return () => {\n cancelled = true\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [user?.id, authLoading])\n\n async function switchOrg(orgId: string): Promise<void> {\n setLoading(true)\n try {\n const org = await adapterRef.current.getOrg(orgId)\n setCurrentOrg(org)\n await hydrateOrg(org, useOrganizationStore.getState().userOrgs, user?.id)\n } finally {\n setLoading(false)\n }\n }\n\n // Explicit refresh always goes to the network and restarts the cache window.\n async function refreshOrg(): Promise<void> {\n if (!currentOrg) return\n setLoading(true)\n try {\n const org = await adapterRef.current.getOrg(currentOrg.id)\n setCurrentOrg(org)\n await hydrateOrg(org, useOrganizationStore.getState().userOrgs, user?.id)\n } finally {\n setLoading(false)\n }\n }\n\n const tenantValue: TenantContext = {\n org: currentOrg,\n userOrgs,\n loading,\n settled,\n switchOrg,\n refreshOrg,\n }\n\n return (\n <OrgAdapterContext.Provider value={adapter}>\n <TenantContext.Provider value={tenantValue}>\n {children}\n </TenantContext.Provider>\n </OrgAdapterContext.Provider>\n )\n}\n"]}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { Button } from '@fayz-ai/ui';
|
|
3
|
+
import { type AgentRole } from '@fayz-ai/core';
|
|
4
|
+
import { type ComposerMedia } from '../stores/chat.store';
|
|
5
|
+
import { type AssistantInviteSuggestion } from '../lib/assistant-invite';
|
|
6
|
+
export interface AskAIIntro {
|
|
7
|
+
/** Whose work this task is. With a cast, hands it to that colleague. */
|
|
8
|
+
role?: AgentRole;
|
|
9
|
+
/** What the task IS ("Analista de relatórios"). Names the assistant on an app
|
|
10
|
+
* with no cast; with one, it is the subject beside the colleague's name. */
|
|
11
|
+
persona?: string;
|
|
12
|
+
/** The one line it opens with — what it is about to help with. */
|
|
13
|
+
pitch: string;
|
|
14
|
+
/** A sentence on what it can actually do here. */
|
|
15
|
+
description?: string;
|
|
16
|
+
/** Two or three asks worth offering FOR THIS ACTION. */
|
|
17
|
+
suggestions?: AssistantInviteSuggestion[];
|
|
18
|
+
}
|
|
19
|
+
export interface AskAIOptions {
|
|
20
|
+
/** Composer placeholder while the user writes — the subject, by example. */
|
|
21
|
+
hint?: string;
|
|
22
|
+
/** Send this immediately instead of waiting for the user to write. */
|
|
23
|
+
prompt?: string;
|
|
24
|
+
/**
|
|
25
|
+
* Write this into the composer and stop. The opposite of `prompt`: the screen
|
|
26
|
+
* knows the usual ask well enough to type it, but sending is still the user's
|
|
27
|
+
* — they may want to say "e deixa o fundo branco" first.
|
|
28
|
+
*/
|
|
29
|
+
draft?: string;
|
|
30
|
+
/**
|
|
31
|
+
* A file the app already stores, attached by URL. The model fetches the
|
|
32
|
+
* original; nothing is read, encoded or re-uploaded on the way.
|
|
33
|
+
*/
|
|
34
|
+
media?: ComposerMedia;
|
|
35
|
+
/** Copy the assistant opens with. Restored to the screen's own on close. */
|
|
36
|
+
intro?: AskAIIntro;
|
|
37
|
+
}
|
|
38
|
+
/** Open the assistant on a subject. Usable outside React (a menu item, a
|
|
39
|
+
* keyboard shortcut) — the button below is the ordinary way in. */
|
|
40
|
+
export declare function askAI({ hint, prompt, draft, media, intro }?: AskAIOptions): void;
|
|
41
|
+
export interface AskAIButtonProps extends AskAIOptions {
|
|
42
|
+
/** Defaults to "Criar com IA". Say what is being created when it helps. */
|
|
43
|
+
label?: string;
|
|
44
|
+
/** Ran after the handoff — usually closing the panel the button sat in. */
|
|
45
|
+
onHandoff?: () => void;
|
|
46
|
+
size?: React.ComponentProps<typeof Button>['size'];
|
|
47
|
+
variant?: React.ComponentProps<typeof Button>['variant'];
|
|
48
|
+
className?: string;
|
|
49
|
+
disabled?: boolean;
|
|
50
|
+
}
|
|
51
|
+
export interface AskAIMenuItemProps extends AskAIOptions {
|
|
52
|
+
label?: string;
|
|
53
|
+
/** One line under the label — what describing it gets you. */
|
|
54
|
+
description?: string;
|
|
55
|
+
onHandoff?: () => void;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* The same handoff as a menu entry, for screens whose "create" is a dropdown.
|
|
59
|
+
*
|
|
60
|
+
* Highlighted on purpose, and it is not decoration: a menu lists options as
|
|
61
|
+
* equals, and these two are not equals — one is a sentence and the other is a
|
|
62
|
+
* form. The tint is the menu saying which one to try first.
|
|
63
|
+
*
|
|
64
|
+
* Give the hosting `DropdownContent` an
|
|
65
|
+
* `onCloseAutoFocus={(e) => e.preventDefault()}`: this entry moves the cursor
|
|
66
|
+
* to the assistant's field, and Radix restores focus to the trigger AFTER the
|
|
67
|
+
* menu closes — arriving last, it undoes exactly that.
|
|
68
|
+
*/
|
|
69
|
+
export declare function AskAIMenuItem({ hint, prompt, draft, media, intro, label, description, onHandoff, }: AskAIMenuItemProps): React.JSX.Element;
|
|
70
|
+
export declare function AskAIButton({ hint, prompt, draft, media, intro, label, onHandoff, size, variant, className, disabled, }: AskAIButtonProps): React.JSX.Element;
|
|
71
|
+
//# sourceMappingURL=AskAI.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AskAI.d.ts","sourceRoot":"","sources":["../../src/components/AskAI.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,MAAM,EAAgB,MAAM,aAAa,CAAA;AAClD,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,eAAe,CAAA;AAC9D,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACvE,OAAO,EAIL,KAAK,yBAAyB,EAC/B,MAAM,yBAAyB,CAAA;AA4BhC,MAAM,WAAW,UAAU;IACzB,wEAAwE;IACxE,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB;iFAC6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAA;IACb,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,wDAAwD;IACxD,WAAW,CAAC,EAAE,yBAAyB,EAAE,CAAA;CAC1C;AAED,MAAM,WAAW,YAAY;IAC3B,4EAA4E;IAC5E,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;OAGG;IACH,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,4EAA4E;IAC5E,KAAK,CAAC,EAAE,UAAU,CAAA;CACnB;AA4CD;oEACoE;AACpE,wBAAgB,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAE,YAAiB,GAAG,IAAI,CAYpF;AAED,MAAM,WAAW,gBAAiB,SAAQ,YAAY;IACpD,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,IAAI,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,CAAC,MAAM,CAAC,CAAA;IAClD,OAAO,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,CAAC,SAAS,CAAC,CAAA;IACxD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,kBAAmB,SAAQ,YAAY;IACtD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,8DAA8D;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;CACvB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,GACjE,EAAE,kBAAkB,qBAgBpB;AAED,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,IAAW,EAAE,OAAmB,EAAE,SAAS,EAAE,QAAQ,GAC3G,EAAE,gBAAgB,qBAelB"}
|
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
/** The shell's companion column: a tab bar and whichever panel is active.
|
|
3
3
|
* The frame inset comes from AppShell's `<aside>` padding, so this fills its
|
|
4
|
-
* box exactly.
|
|
5
|
-
|
|
4
|
+
* box exactly.
|
|
5
|
+
*
|
|
6
|
+
* `attached` diz se a coluna CONTINUA o cartão do conteúdo. No layout de
|
|
7
|
+
* sidebar continua: o conteúdo abre a borda direita e a rail a fecha, num
|
|
8
|
+
* cartão só. No de topbar não pode — a barra de topo é de ponta a ponta e a
|
|
9
|
+
* rail corre ao lado dela também, começando acima de onde o cartão do conteúdo
|
|
10
|
+
* começa. Ali ela é um cartão próprio, e um cartão próprio é redondo dos
|
|
11
|
+
* quatro lados. */
|
|
12
|
+
export declare function RightRail({ frame, attached }: {
|
|
6
13
|
frame?: boolean;
|
|
14
|
+
attached?: boolean;
|
|
7
15
|
}): React.JSX.Element | null;
|
|
8
16
|
//# sourceMappingURL=RightRail.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RightRail.d.ts","sourceRoot":"","sources":["../../src/components/RightRail.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"RightRail.d.ts","sourceRoot":"","sources":["../../src/components/RightRail.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAS9B;;;;;;;;;oBASoB;AACpB,wBAAgB,SAAS,CAAC,EAAE,KAAY,EAAE,QAAe,EAAE,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,4BA6PnG"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* A screen's own detail panel, shown in the shell's right column.
|
|
4
|
+
*
|
|
5
|
+
* Every screen that had something to show beside itself — a deal, a connector,
|
|
6
|
+
* a record — used to open its own sheet: its own width, its own header, its own
|
|
7
|
+
* close button, sliding over the app from the same edge the assistant already
|
|
8
|
+
* occupies. Two panels with two vocabularies competing for one side of the
|
|
9
|
+
* screen. This puts them all in the one column, under the one header: the way
|
|
10
|
+
* back on the left, the page's name centred, close on the right.
|
|
11
|
+
*
|
|
12
|
+
* The body stays MOUNTED WHERE IT WAS WRITTEN and portals in, because the rail
|
|
13
|
+
* is rendered far from any plugin's providers — a deal panel re-mounted inside
|
|
14
|
+
* the shell would have no CRM context to read.
|
|
15
|
+
*
|
|
16
|
+
* With no rail in the shell (a minimal layout, a standalone mount) it falls
|
|
17
|
+
* back to the sheet, so a caller never has to ask which shell it is in.
|
|
18
|
+
*/
|
|
19
|
+
export declare function RightRailPage({ title, open, onClose, width, children, }: {
|
|
20
|
+
/** Heads the column. Keep it short — it is centred over a ~380px header. */
|
|
21
|
+
title: string;
|
|
22
|
+
open: boolean;
|
|
23
|
+
/** Leaving the page. In the rail this returns to the assistant, so the back
|
|
24
|
+
* link says so; in the sheet fallback it simply closes. */
|
|
25
|
+
onClose: () => void;
|
|
26
|
+
/** Sheet-fallback width only. The rail is sized by the user's drag. */
|
|
27
|
+
width?: string;
|
|
28
|
+
children: React.ReactNode;
|
|
29
|
+
}): React.JSX.Element | null;
|
|
30
|
+
//# sourceMappingURL=RightRailPage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RightRailPage.d.ts","sourceRoot":"","sources":["../../src/components/RightRailPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAK9B;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,IAAI,EACJ,OAAO,EACP,KAAK,EACL,QAAQ,GACT,EAAE;IACD,4EAA4E;IAC5E,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,OAAO,CAAA;IACb;gEAC4D;IAC5D,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,4BA8DA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubscriptionPage.d.ts","sourceRoot":"","sources":["../../../src/components/billing/SubscriptionPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AA2C9B,wBAAgB,gBAAgB,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"SubscriptionPage.d.ts","sourceRoot":"","sources":["../../../src/components/billing/SubscriptionPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AA2C9B,wBAAgB,gBAAgB,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,qBA+TrE"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
declare const SIZES: {
|
|
3
|
+
readonly sm: {
|
|
4
|
+
readonly box: "h-6 w-6";
|
|
5
|
+
readonly text: "text-[10px]";
|
|
6
|
+
readonly px: 24;
|
|
7
|
+
};
|
|
8
|
+
readonly md: {
|
|
9
|
+
readonly box: "h-8 w-8";
|
|
10
|
+
readonly text: "text-[12px]";
|
|
11
|
+
readonly px: 32;
|
|
12
|
+
};
|
|
13
|
+
readonly lg: {
|
|
14
|
+
readonly box: "h-10 w-10";
|
|
15
|
+
readonly text: "text-[15px]";
|
|
16
|
+
readonly px: 40;
|
|
17
|
+
};
|
|
18
|
+
readonly xl: {
|
|
19
|
+
readonly box: "h-16 w-16";
|
|
20
|
+
readonly text: "text-[22px]";
|
|
21
|
+
readonly px: 64;
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* A colleague's face.
|
|
26
|
+
*
|
|
27
|
+
* `avatar` is an image the app ships (`/agents/nina.webp`) — an illustrated
|
|
28
|
+
* portrait, not an emoji: an emoji renders in a different font on every OS, so
|
|
29
|
+
* the same employee would not have the same face twice, and it cannot be sized,
|
|
30
|
+
* masked or themed like the rest of the interface.
|
|
31
|
+
*
|
|
32
|
+
* The initial is the fallback and it is drawn UNDER the image rather than
|
|
33
|
+
* instead of it, so the box is filled from the first paint and a slow or broken
|
|
34
|
+
* portrait never collapses the row it sits in.
|
|
35
|
+
*/
|
|
36
|
+
export declare function AgentAvatar({ name, avatar, size, className, }: {
|
|
37
|
+
name: string;
|
|
38
|
+
avatar?: string;
|
|
39
|
+
size?: keyof typeof SIZES;
|
|
40
|
+
className?: string;
|
|
41
|
+
}): React.JSX.Element;
|
|
42
|
+
export {};
|
|
43
|
+
//# sourceMappingURL=AgentAvatar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentAvatar.d.ts","sourceRoot":"","sources":["../../../src/components/chat/AgentAvatar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,QAAA,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;CAKD,CAAA;AAEV;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,MAAM,EACN,IAAW,EACX,SAAS,GACV,EAAE;IACD,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,OAAO,KAAK,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,qBA8BA"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export declare function TypedText({ text, className, as: Tag, start, startDelay, onDone, }: {
|
|
3
|
+
text: string;
|
|
4
|
+
className?: string;
|
|
5
|
+
as?: 'h2' | 'p';
|
|
6
|
+
/** Hold at zero characters until its turn. The element still MOUNTS — it is
|
|
7
|
+
* the spacer that keeps the block at its final height, and mounting it late
|
|
8
|
+
* is what made the column jump as each line arrived. */
|
|
9
|
+
start?: boolean;
|
|
10
|
+
startDelay?: number;
|
|
11
|
+
onDone?: () => void;
|
|
12
|
+
}): React.JSX.Element;
|
|
13
|
+
/**
|
|
14
|
+
* Reveals its children one after the other, once `start` is true.
|
|
15
|
+
*
|
|
16
|
+
* The gap is deliberately longer than a list stagger: these are things to READ
|
|
17
|
+
* and choose between, not rows of a table, and 40ms apart they all arrive at
|
|
18
|
+
* once as far as the eye is concerned.
|
|
19
|
+
*/
|
|
20
|
+
export declare function RevealSequence({ start, gapMs, children, }: {
|
|
21
|
+
start: boolean;
|
|
22
|
+
gapMs?: number;
|
|
23
|
+
children: React.ReactNode;
|
|
24
|
+
}): React.JSX.Element;
|
|
25
|
+
//# sourceMappingURL=AgentIntro.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentIntro.d.ts","sourceRoot":"","sources":["../../../src/components/chat/AgentIntro.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AA2C9B,wBAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,SAAS,EACT,EAAE,EAAE,GAAS,EACb,KAAY,EACZ,UAAc,EACd,MAAM,GACP,EAAE;IACD,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,EAAE,CAAC,EAAE,IAAI,GAAG,GAAG,CAAA;IACf;;6DAEyD;IACzD,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;CACpB,qBAgDA;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,KAAW,EACX,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,OAAO,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,qBAyCA"}
|
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
/**
|
|
3
3
|
* The live strip at the top of the assistant panel: what is running, for how
|
|
4
|
-
* long, and how to end it
|
|
5
|
-
* from here.
|
|
4
|
+
* long, and how to end it.
|
|
6
5
|
*
|
|
7
6
|
* It sits in the assistant and not in a page because the activity outlives the
|
|
8
7
|
* page. Navigating away from the client record while recording is the normal
|
|
9
8
|
* case, not the edge one, so the controls have to live on a surface that never
|
|
10
9
|
* unmounts.
|
|
10
|
+
*
|
|
11
|
+
* The panel gives a session the WHOLE column while there is nothing else to
|
|
12
|
+
* look at (see AssistantRecordingView). This is what it shrinks to the moment
|
|
13
|
+
* there is: a conversation with the colleague running it, asked mid-encounter
|
|
14
|
+
* — "o que ela falou sobre alergia?" — with the clock still visible above the
|
|
15
|
+
* answer. Same activity, same actions, one place.
|
|
11
16
|
*/
|
|
12
17
|
export declare function AssistantActivityBar({ className }: {
|
|
13
18
|
className?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssistantActivityBar.d.ts","sourceRoot":"","sources":["../../../src/components/chat/AssistantActivityBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"AssistantActivityBar.d.ts","sourceRoot":"","sources":["../../../src/components/chat/AssistantActivityBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAiC9B;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,4BA8CzE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssistantInvite.d.ts","sourceRoot":"","sources":["../../../src/components/chat/AssistantInvite.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAQ9B,OAAO,EAEL,KAAK,kBAAkB,EAGxB,MAAM,4BAA4B,CAAA;AAgBnC,MAAM,WAAW,oBAAqB,SAAQ,kBAAkB;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,GAAG,EAAE,EAAE,oBAAoB,4BA4F1E;
|
|
1
|
+
{"version":3,"file":"AssistantInvite.d.ts","sourceRoot":"","sources":["../../../src/components/chat/AssistantInvite.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAQ9B,OAAO,EAEL,KAAK,kBAAkB,EAGxB,MAAM,4BAA4B,CAAA;AAgBnC,MAAM,WAAW,oBAAqB,SAAQ,kBAAkB;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,GAAG,EAAE,EAAE,oBAAoB,4BA4F1E;AAwWD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,6BAK9B"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { type AssistantActivity } from '../../lib/assistant-activity';
|
|
3
|
+
/**
|
|
4
|
+
* What the panel becomes while a session is running.
|
|
5
|
+
*
|
|
6
|
+
* A recording used to be a 28px strip pinned over the conversation — the
|
|
7
|
+
* loudest thing happening in the app, reported in the smallest type on screen,
|
|
8
|
+
* with the greeting still underneath asking what you would like to talk about.
|
|
9
|
+
* While something is being captured, that IS the panel: what is running, for
|
|
10
|
+
* how long, and the two or three things you can do about it, at a size you can
|
|
11
|
+
* hit without looking.
|
|
12
|
+
*/
|
|
13
|
+
export declare function AssistantRecordingView({ activity }: {
|
|
14
|
+
activity: AssistantActivity;
|
|
15
|
+
}): React.JSX.Element;
|
|
16
|
+
//# sourceMappingURL=AssistantRecordingView.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssistantRecordingView.d.ts","sourceRoot":"","sources":["../../../src/components/chat/AssistantRecordingView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAM9B,OAAO,EAEL,KAAK,iBAAiB,EAEvB,MAAM,8BAA8B,CAAA;AAErC;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,iBAAiB,CAAA;CAAE,qBA4GnF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import type { ChatAttachment } from '../../stores/chat.store';
|
|
2
|
+
import type { ChatAttachment, ComposerMedia } from '../../stores/chat.store';
|
|
3
3
|
/**
|
|
4
4
|
* Drag-and-drop over a whole surface. Enter/leave fire for every child element
|
|
5
5
|
* the pointer crosses, so the depth counter is what keeps the overlay from
|
|
@@ -20,4 +20,15 @@ export declare function AttachmentChips({ attachments, onRemove, }: {
|
|
|
20
20
|
attachments: ChatAttachment[];
|
|
21
21
|
onRemove: (id: string) => void;
|
|
22
22
|
}): React.JSX.Element | null;
|
|
23
|
+
/**
|
|
24
|
+
* A photo the app already stores, staged by ADDRESS.
|
|
25
|
+
*
|
|
26
|
+
* It shows the actual thumbnail, unlike a file chip: the user got here from a
|
|
27
|
+
* screen where they were looking at this image, and a generic icon would make
|
|
28
|
+
* them wonder whether the right one came along.
|
|
29
|
+
*/
|
|
30
|
+
export declare function MediaChip({ media, onRemove }: {
|
|
31
|
+
media: ComposerMedia;
|
|
32
|
+
onRemove: () => void;
|
|
33
|
+
}): React.JSX.Element;
|
|
23
34
|
//# sourceMappingURL=ChatAttachments.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatAttachments.d.ts","sourceRoot":"","sources":["../../../src/components/chat/ChatAttachments.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAc9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"ChatAttachments.d.ts","sourceRoot":"","sources":["../../../src/components/chat/ChatAttachments.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAc9B,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAW5E;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI;;;6BAenD,KAAK,CAAC,SAAS;4BAQhB,KAAK,CAAC,SAAS;6BAId,KAAK,CAAC,SAAS;wBAMpB,KAAK,CAAC,SAAS;;EASpC;AAED,6EAA6E;AAC7E,wBAAgB,qBAAqB,sBAepC;AAED,wBAAgB,eAAe,CAAC,EAC9B,WAAW,EACX,QAAQ,GACT,EAAE;IACD,WAAW,EAAE,cAAc,EAAE,CAAA;IAC7B,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;CAC/B,4BAqFA;AAsED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;IAAE,KAAK,EAAE,aAAa,CAAC;IAAC,QAAQ,EAAE,MAAM,IAAI,CAAA;CAAE,qBAkB5F"}
|
|
@@ -6,9 +6,6 @@ interface ChatComposerProps {
|
|
|
6
6
|
isConfigured: boolean;
|
|
7
7
|
blocked: boolean;
|
|
8
8
|
voice?: ChatVoiceConfig;
|
|
9
|
-
hasSuggestions: boolean;
|
|
10
|
-
suggestionsOpen: boolean;
|
|
11
|
-
onToggleSuggestions: () => void;
|
|
12
9
|
}
|
|
13
10
|
/**
|
|
14
11
|
* The composer. Three ways in — type, talk, or pick a suggestion — and one
|
|
@@ -16,6 +13,6 @@ interface ChatComposerProps {
|
|
|
16
13
|
* first. Dictation writes interim words straight into the textarea so the user
|
|
17
14
|
* watches it being heard, and only sends once the transcript settles.
|
|
18
15
|
*/
|
|
19
|
-
export declare function ChatComposer({ onSend, isStreaming, isConfigured, blocked, voice,
|
|
16
|
+
export declare function ChatComposer({ onSend, isStreaming, isConfigured, blocked, voice, }: ChatComposerProps): React.JSX.Element;
|
|
20
17
|
export {};
|
|
21
18
|
//# sourceMappingURL=ChatComposer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatComposer.d.ts","sourceRoot":"","sources":["../../../src/components/chat/ChatComposer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAS9B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAEvD,UAAU,iBAAiB;IACzB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9B,WAAW,EAAE,OAAO,CAAA;IACpB,YAAY,EAAE,OAAO,CAAA;IACrB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"ChatComposer.d.ts","sourceRoot":"","sources":["../../../src/components/chat/ChatComposer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAS9B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAEvD,UAAU,iBAAiB;IACzB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9B,WAAW,EAAE,OAAO,CAAA;IACpB,YAAY,EAAE,OAAO,CAAA;IACrB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,eAAe,CAAA;CACxB;AAeD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,EAC3B,MAAM,EACN,WAAW,EACX,YAAY,EACZ,OAAO,EACP,KAAK,GACN,EAAE,iBAAiB,qBA2ZnB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import type { FayzAgentConnectionConfig } from '../../lib/fayz-agent';
|
|
3
3
|
import type { ChatVoiceConfig } from '../../app/config';
|
|
4
4
|
/** The conversation with no box around it — status row, history/tools drawers,
|
|
5
5
|
* transcript, confirmation card, suggestions, composer. Owns no position, so
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatConversation.d.ts","sourceRoot":"","sources":["../../../src/components/chat/ChatConversation.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"ChatConversation.d.ts","sourceRoot":"","sources":["../../../src/components/chat/ChatConversation.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAuC9B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAA;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAsBvD;;gCAEgC;AAChC,MAAM,WAAW,qBAAqB;IACpC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,yBAAyB,GAAG,KAAK,CAAA;IACzC,KAAK,CAAC,EAAE,eAAe,CAAA;IACvB,gFAAgF;IAChF,QAAQ,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAID,wBAAgB,gBAAgB,CAAC,EAC/B,WAAW,EACX,YAAY,EACZ,KAAK,EACL,KAAK,EACL,QAAQ,EACR,SAAS,GACV,EAAE,qBAAqB,qBA8hBvB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatFab.d.ts","sourceRoot":"","sources":["../../../src/components/chat/ChatFab.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"ChatFab.d.ts","sourceRoot":"","sources":["../../../src/components/chat/ChatFab.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAe9B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAA;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAEvD,UAAU,YAAY;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,yBAAyB,GAAG,KAAK,CAAA;IACzC,KAAK,CAAC,EAAE,eAAe,CAAA;IACvB;;yDAEqD;IACrD,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AA2HD,wBAAgB,OAAO,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,YAAY,4BAoYnG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatHistory.d.ts","sourceRoot":"","sources":["../../../src/components/chat/ChatHistory.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"ChatHistory.d.ts","sourceRoot":"","sources":["../../../src/components/chat/ChatHistory.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAO9B,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,UAAU,gBAAgB;IACxB,aAAa,EAAE,uBAAuB,EAAE,CAAA;IACxC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;CAC/B;AAkBD;8DAC8D;AAC9D,wBAAgB,WAAW,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,gBAAgB,qBAuGlF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import type
|
|
2
|
+
import { type ChatMessage } from '../../stores/chat.store';
|
|
3
3
|
/** `agenda_create_appointment` → `Agenda create appointment`. The raw name is
|
|
4
4
|
* still there, one expand away — the person reading is a salon manager. */
|
|
5
5
|
export declare function humanizeToolName(name: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatMessages.d.ts","sourceRoot":"","sources":["../../../src/components/chat/ChatMessages.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"ChatMessages.d.ts","sourceRoot":"","sources":["../../../src/components/chat/ChatMessages.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,OAAO,EAAe,KAAK,WAAW,EAAqB,MAAM,yBAAyB,CAAA;AAS1F;4EAC4E;AAC5E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMrD;AA4FD,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE;IAAE,OAAO,EAAE,WAAW,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,qBA2GlG;AAED;yBACyB;AACzB,wBAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,qBAc7D;AAED,wBAAgB,UAAU,sBAYzB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatSuggestions.d.ts","sourceRoot":"","sources":["../../../src/components/chat/ChatSuggestions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"ChatSuggestions.d.ts","sourceRoot":"","sources":["../../../src/components/chat/ChatSuggestions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAY9B,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAEnF,UAAU,oBAAoB;IAC5B,WAAW,EAAE,kBAAkB,EAAE,CAAA;IACjC,QAAQ,EAAE,CAAC,UAAU,EAAE,kBAAkB,KAAK,IAAI,CAAA;IAClD,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAID,wBAAgB,eAAe,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,oBAAoB,4BAgFlG;AAiED,UAAU,mBAAmB;IAC3B,UAAU,EAAE,iBAAiB,EAAE,CAAA;IAC/B,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAED,wBAAgB,cAAc,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,mBAAmB,qBAiE1E"}
|
|
@@ -3,4 +3,7 @@ import { type ChatConnectorCard } from '../../stores/chat.store';
|
|
|
3
3
|
export declare function ConnectorSuggestionCard({ card }: {
|
|
4
4
|
card: ChatConnectorCard;
|
|
5
5
|
}): React.JSX.Element;
|
|
6
|
+
export declare function ConnectorSuggestionGroup({ cards }: {
|
|
7
|
+
cards: ChatConnectorCard[];
|
|
8
|
+
}): React.JSX.Element;
|
|
6
9
|
//# sourceMappingURL=ConnectorSuggestionCard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConnectorSuggestionCard.d.ts","sourceRoot":"","sources":["../../../src/components/chat/ConnectorSuggestionCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAK9B,OAAO,EAAgB,KAAK,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"ConnectorSuggestionCard.d.ts","sourceRoot":"","sources":["../../../src/components/chat/ConnectorSuggestionCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAK9B,OAAO,EAAgB,KAAK,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAiE9E,wBAAgB,uBAAuB,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE,qBAgE5E;AAiED,wBAAgB,wBAAwB,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,iBAAiB,EAAE,CAAA;CAAE,qBAqBjF"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import type { AgentStaffDef } from '@fayz-ai/core';
|
|
3
|
+
/**
|
|
4
|
+
* Meeting a colleague you have not hired — inside the conversation, not in a
|
|
5
|
+
* modal over it.
|
|
6
|
+
*
|
|
7
|
+
* The modal was the wrong surface twice over: it interrupts the thread the
|
|
8
|
+
* person was in, and it opens on plan cards, which answers "how much" before
|
|
9
|
+
* anyone has been told "who". Here the order is the one a hire actually
|
|
10
|
+
* happens in — this is the person, this is what they would take off your
|
|
11
|
+
* hands, and then what it costs.
|
|
12
|
+
*
|
|
13
|
+
* The plan cards are the SAME `UpgradePrompt` the assistant's own paywall
|
|
14
|
+
* uses. One upgrade journey, whatever raised it: a colleague reading
|
|
15
|
+
* "Contratar" here and "Fazer upgrade" on a gated screen would be two
|
|
16
|
+
* different products asking for the same money.
|
|
17
|
+
*/
|
|
18
|
+
export declare function StaffHireView({ member }: {
|
|
19
|
+
member: AgentStaffDef;
|
|
20
|
+
}): React.JSX.Element;
|
|
21
|
+
//# sourceMappingURL=StaffHireView.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StaffHireView.d.ts","sourceRoot":"","sources":["../../../src/components/chat/StaffHireView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,OAAO,KAAK,EAAE,aAAa,EAAQ,MAAM,eAAe,CAAA;AA8BxD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,aAAa,CAAA;CAAE,qBA0DlE"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import type { ChatStaffCard } from '../../stores/chat.store';
|
|
3
|
+
/**
|
|
4
|
+
* A colleague the tenant has not hired, offered under the reply.
|
|
5
|
+
*
|
|
6
|
+
* The sibling of {@link ConnectorSuggestionCard}, and the same argument: the
|
|
7
|
+
* card exists because the agent has no tools for this work, so the honest move
|
|
8
|
+
* is to name who does it rather than improvise. It never hires anyone — the
|
|
9
|
+
* button opens the same upgrade journey a plan-gated screen opens, and the
|
|
10
|
+
* decision stays where decisions about money belong.
|
|
11
|
+
*/
|
|
12
|
+
export declare function StaffPitchCard({ card }: {
|
|
13
|
+
card: ChatStaffCard;
|
|
14
|
+
}): React.JSX.Element;
|
|
15
|
+
//# sourceMappingURL=StaffPitchCard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StaffPitchCard.d.ts","sourceRoot":"","sources":["../../../src/components/chat/StaffPitchCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAG5D;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,qBA4C/D"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Who is answering — and, one click away, who else could be.
|
|
4
|
+
*
|
|
5
|
+
* The team used to sit as a permanent row of chips above the conversation, and
|
|
6
|
+
* that is the wrong weight for it: you talk to one colleague at a time, and the
|
|
7
|
+
* other two were spending a row of the panel restating that they exist. Now the
|
|
8
|
+
* face IS the control. It sits at the head of the column, before the panel's
|
|
9
|
+
* name, and opening it is what shows the team.
|
|
10
|
+
*
|
|
11
|
+
* Deliberately an affordance, not homework: the host answers anything and hands
|
|
12
|
+
* off on its own, so nobody has to know whose job a question is before asking
|
|
13
|
+
* it. Un-hired colleagues stay in the list behind a lock — a seat you can see
|
|
14
|
+
* is the whole offer.
|
|
15
|
+
*
|
|
16
|
+
* Renders nothing for an app with one agent or none: a picker with a single
|
|
17
|
+
* option is chrome.
|
|
18
|
+
*/
|
|
19
|
+
export declare function StaffSwitcher({ open: menuOpen, onOpenChange: setMenuOpen, }: {
|
|
20
|
+
open: boolean;
|
|
21
|
+
onOpenChange: (open: boolean) => void;
|
|
22
|
+
}): React.JSX.Element | null;
|
|
23
|
+
//# sourceMappingURL=StaffSwitcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StaffSwitcher.d.ts","sourceRoot":"","sources":["../../../src/components/chat/StaffSwitcher.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAQ9B;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EAAE,QAAQ,EACd,YAAY,EAAE,WAAW,GAC1B,EAAE;IACD,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;CACtC,4BA8EA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type * as React from 'react';
|
|
2
|
+
import type { AssistantActionIntent } from '../../lib/assistant-activity';
|
|
3
|
+
/**
|
|
4
|
+
* One face per intent, everywhere an activity is drawn.
|
|
5
|
+
*
|
|
6
|
+
* Activities declare an INTENT and never an icon, so that two plugins publishing
|
|
7
|
+
* "stop" cannot disagree about what stopping looks like. That guarantee only
|
|
8
|
+
* holds if the shell itself has one answer: the FAB pill, the strip and the
|
|
9
|
+
* panel each kept their own copy of this map, and adding an intent broke the
|
|
10
|
+
* build in three places — which is the cheap version of the failure. The
|
|
11
|
+
* expensive version is the same button wearing two icons.
|
|
12
|
+
*/
|
|
13
|
+
export declare const ACTIVITY_INTENT_ICON: Record<AssistantActionIntent, React.ComponentType<{
|
|
14
|
+
className?: string;
|
|
15
|
+
}>>;
|
|
16
|
+
//# sourceMappingURL=activity-icons.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activity-icons.d.ts","sourceRoot":"","sources":["../../../src/components/chat/activity-icons.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAA;AAEnC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AAEzE;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CACvC,qBAAqB,EACrB,KAAK,CAAC,aAAa,CAAC;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAU5C,CAAA"}
|
|
@@ -3,4 +3,6 @@ export { AssistantInvite } from './AssistantInvite';
|
|
|
3
3
|
export type { AssistantInviteProps } from './AssistantInvite';
|
|
4
4
|
export { ChatConversation } from './ChatConversation';
|
|
5
5
|
export type { ChatConversationProps } from './ChatConversation';
|
|
6
|
+
export { StaffSwitcher } from './StaffSwitcher';
|
|
7
|
+
export { AgentAvatar } from './AgentAvatar';
|
|
6
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/chat/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/chat/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConnectConsentPage.d.ts","sourceRoot":"","sources":["../../../src/components/connect/ConnectConsentPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"ConnectConsentPage.d.ts","sourceRoot":"","sources":["../../../src/components/connect/ConnectConsentPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AA2EzB,MAAM,WAAW,uBAAuB;IACtC,wFAAwF;IACxF,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;OAGG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CACvB;AAQD,wBAAgB,kBAAkB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,uBAAuB,qBAgI5E"}
|
|
@@ -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;AA4BzB,OAAO,EAAU,KAAK,gBAAgB,EAAE,MAAM,SAAS,CAAA;AA2HvD;;;;;;;;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,4BAiBA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConnectorRuns.d.ts","sourceRoot":"","sources":["../../../src/components/connect/ConnectorRuns.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"ConnectorRuns.d.ts","sourceRoot":"","sources":["../../../src/components/connect/ConnectorRuns.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAUzB,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"}
|