@hiver/connector-agent 4.16.1 → 4.18.0-slackm2-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/README.md +9 -9
  2. package/app/hig-slack/HigSlackConnectModalIsland.d.ts +19 -0
  3. package/app/hig-slack/HigSlackConnectModalIsland.d.ts.map +1 -0
  4. package/app/hig-slack/HigSlackSection.d.ts +15 -0
  5. package/app/hig-slack/HigSlackSection.d.ts.map +1 -0
  6. package/app/hig-slack/index.d.ts +15 -0
  7. package/app/hig-slack/index.d.ts.map +1 -0
  8. package/app/hig-slack/provider.d.ts +21 -0
  9. package/app/hig-slack/provider.d.ts.map +1 -0
  10. package/app/hig-slack/style.d.ts +38 -0
  11. package/app/hig-slack/style.d.ts.map +1 -0
  12. package/app/omni-slack/SlackConnectModalIsland.d.ts +26 -0
  13. package/app/omni-slack/SlackConnectModalIsland.d.ts.map +1 -0
  14. package/app/omni-slack/index.d.ts +14 -0
  15. package/app/omni-slack/index.d.ts.map +1 -0
  16. package/app/omni-slack/provider.d.ts +15 -0
  17. package/app/omni-slack/provider.d.ts.map +1 -0
  18. package/constants/tracking-events.d.ts +8 -0
  19. package/constants/tracking-events.d.ts.map +1 -1
  20. package/features/email-logger/omni/components/LogEmailPill.d.ts.map +1 -1
  21. package/features/email-logger/omni/components/LogEmailPill.test.d.ts +2 -0
  22. package/features/email-logger/omni/components/LogEmailPill.test.d.ts.map +1 -0
  23. package/features/slack/api/channels.d.ts +11 -0
  24. package/features/slack/api/channels.d.ts.map +1 -0
  25. package/features/slack/api/conversations.d.ts +41 -0
  26. package/features/slack/api/conversations.d.ts.map +1 -0
  27. package/features/slack/api/effective-config.d.ts +21 -0
  28. package/features/slack/api/effective-config.d.ts.map +1 -0
  29. package/features/slack/api/index.d.ts +4 -0
  30. package/features/slack/api/index.d.ts.map +1 -0
  31. package/features/slack/api/linked-conv.d.ts +33 -0
  32. package/features/slack/api/linked-conv.d.ts.map +1 -0
  33. package/features/slack/api/members.d.ts +10 -0
  34. package/features/slack/api/members.d.ts.map +1 -0
  35. package/features/slack/api/messages.d.ts +10 -0
  36. package/features/slack/api/messages.d.ts.map +1 -0
  37. package/features/slack/api/normalise.d.ts +3 -0
  38. package/features/slack/api/normalise.d.ts.map +1 -0
  39. package/features/slack/api/users.d.ts +11 -0
  40. package/features/slack/api/users.d.ts.map +1 -0
  41. package/features/slack/avatar/SlackAvatar.d.ts +20 -0
  42. package/features/slack/avatar/SlackAvatar.d.ts.map +1 -0
  43. package/features/slack/avatar/cache.d.ts +10 -0
  44. package/features/slack/avatar/cache.d.ts.map +1 -0
  45. package/features/slack/avatar/index.d.ts +2 -0
  46. package/features/slack/avatar/index.d.ts.map +1 -0
  47. package/features/slack/components/AnimatedDots.d.ts +2 -0
  48. package/features/slack/components/AnimatedDots.d.ts.map +1 -0
  49. package/features/slack/components/HeroIllustration.d.ts +14 -0
  50. package/features/slack/components/HeroIllustration.d.ts.map +1 -0
  51. package/features/slack/components/LinkedConversationPanel/ChannelStateView.d.ts +21 -0
  52. package/features/slack/components/LinkedConversationPanel/ChannelStateView.d.ts.map +1 -0
  53. package/features/slack/components/LinkedConversationPanel/ChannelThreadGroup.d.ts +28 -0
  54. package/features/slack/components/LinkedConversationPanel/ChannelThreadGroup.d.ts.map +1 -0
  55. package/features/slack/components/LinkedConversationPanel/Composer.d.ts +50 -0
  56. package/features/slack/components/LinkedConversationPanel/Composer.d.ts.map +1 -0
  57. package/features/slack/components/LinkedConversationPanel/ConfirmDeleteModal.d.ts +24 -0
  58. package/features/slack/components/LinkedConversationPanel/ConfirmDeleteModal.d.ts.map +1 -0
  59. package/features/slack/components/LinkedConversationPanel/DeletedTombstone.d.ts +16 -0
  60. package/features/slack/components/LinkedConversationPanel/DeletedTombstone.d.ts.map +1 -0
  61. package/features/slack/components/LinkedConversationPanel/LinkedChannelHeader.d.ts +21 -0
  62. package/features/slack/components/LinkedConversationPanel/LinkedChannelHeader.d.ts.map +1 -0
  63. package/features/slack/components/LinkedConversationPanel/LoadOlderMessages.d.ts +16 -0
  64. package/features/slack/components/LinkedConversationPanel/LoadOlderMessages.d.ts.map +1 -0
  65. package/features/slack/components/LinkedConversationPanel/MentionPicker.d.ts +27 -0
  66. package/features/slack/components/LinkedConversationPanel/MentionPicker.d.ts.map +1 -0
  67. package/features/slack/components/LinkedConversationPanel/MessageItem.d.ts +31 -0
  68. package/features/slack/components/LinkedConversationPanel/MessageItem.d.ts.map +1 -0
  69. package/features/slack/components/LinkedConversationPanel/NotMemberTooltip.d.ts +5 -0
  70. package/features/slack/components/LinkedConversationPanel/NotMemberTooltip.d.ts.map +1 -0
  71. package/features/slack/components/LinkedConversationPanel/ReconnectSlackBanner.d.ts +15 -0
  72. package/features/slack/components/LinkedConversationPanel/ReconnectSlackBanner.d.ts.map +1 -0
  73. package/features/slack/components/LinkedConversationPanel/ThreadDetailView.d.ts +22 -0
  74. package/features/slack/components/LinkedConversationPanel/ThreadDetailView.d.ts.map +1 -0
  75. package/features/slack/components/LinkedConversationPanel/ThreadSkeleton.d.ts +3 -0
  76. package/features/slack/components/LinkedConversationPanel/ThreadSkeleton.d.ts.map +1 -0
  77. package/features/slack/components/LinkedConversationPanel/__tests__/MessageItem.test.d.ts +2 -0
  78. package/features/slack/components/LinkedConversationPanel/__tests__/MessageItem.test.d.ts.map +1 -0
  79. package/features/slack/components/LinkedConversationPanel/index.d.ts +27 -0
  80. package/features/slack/components/LinkedConversationPanel/index.d.ts.map +1 -0
  81. package/features/slack/components/LinkedConversationPanel/style.d.ts +147 -0
  82. package/features/slack/components/LinkedConversationPanel/style.d.ts.map +1 -0
  83. package/features/slack/components/SlackConnectModal.d.ts +29 -0
  84. package/features/slack/components/SlackConnectModal.d.ts.map +1 -0
  85. package/features/slack/components/SlackConversationTab.d.ts +10 -0
  86. package/features/slack/components/SlackConversationTab.d.ts.map +1 -0
  87. package/features/slack/components/SlackLogo.d.ts +11 -0
  88. package/features/slack/components/SlackLogo.d.ts.map +1 -0
  89. package/features/slack/components/StartModal/MemberSelect.d.ts +9 -0
  90. package/features/slack/components/StartModal/MemberSelect.d.ts.map +1 -0
  91. package/features/slack/components/StartModal/MentionTextarea.d.ts +28 -0
  92. package/features/slack/components/StartModal/MentionTextarea.d.ts.map +1 -0
  93. package/features/slack/components/StartModal/SelectField.d.ts +19 -0
  94. package/features/slack/components/StartModal/SelectField.d.ts.map +1 -0
  95. package/features/slack/components/StartModal/SlackChannelTab.d.ts +23 -0
  96. package/features/slack/components/StartModal/SlackChannelTab.d.ts.map +1 -0
  97. package/features/slack/components/StartModal/SlackThreadTab.d.ts +26 -0
  98. package/features/slack/components/StartModal/SlackThreadTab.d.ts.map +1 -0
  99. package/features/slack/components/StartModal/TabIcon.d.ts +16 -0
  100. package/features/slack/components/StartModal/TabIcon.d.ts.map +1 -0
  101. package/features/slack/components/StartModal/__tests__/MemberSelect.test.d.ts +2 -0
  102. package/features/slack/components/StartModal/__tests__/MemberSelect.test.d.ts.map +1 -0
  103. package/features/slack/components/StartModal/dropdownOmni.d.ts +121 -0
  104. package/features/slack/components/StartModal/dropdownOmni.d.ts.map +1 -0
  105. package/features/slack/components/StartModal/index.d.ts +27 -0
  106. package/features/slack/components/StartModal/index.d.ts.map +1 -0
  107. package/features/slack/components/StartModal/style.d.ts +39 -0
  108. package/features/slack/components/StartModal/style.d.ts.map +1 -0
  109. package/features/slack/components/figma-tokens.d.ts +94 -0
  110. package/features/slack/components/figma-tokens.d.ts.map +1 -0
  111. package/features/slack/components/style.d.ts +54 -0
  112. package/features/slack/components/style.d.ts.map +1 -0
  113. package/features/slack/constants/api.d.ts +13 -0
  114. package/features/slack/constants/api.d.ts.map +1 -0
  115. package/features/slack/context.d.ts +99 -0
  116. package/features/slack/context.d.ts.map +1 -0
  117. package/features/slack/hooks/__tests__/useOlderMessages.test.d.ts +2 -0
  118. package/features/slack/hooks/__tests__/useOlderMessages.test.d.ts.map +1 -0
  119. package/features/slack/hooks/useLeftChannelGuard.d.ts +5 -0
  120. package/features/slack/hooks/useLeftChannelGuard.d.ts.map +1 -0
  121. package/features/slack/hooks/useOlderMessages.d.ts +51 -0
  122. package/features/slack/hooks/useOlderMessages.d.ts.map +1 -0
  123. package/features/slack/hooks/useSlackTabLabel.d.ts +23 -0
  124. package/features/slack/hooks/useSlackTabLabel.d.ts.map +1 -0
  125. package/features/slack/messageType.d.ts +16 -0
  126. package/features/slack/messageType.d.ts.map +1 -0
  127. package/features/slack/types/wire.d.ts +205 -0
  128. package/features/slack/types/wire.d.ts.map +1 -0
  129. package/features/slack/utils/emoji.d.ts +7 -0
  130. package/features/slack/utils/emoji.d.ts.map +1 -0
  131. package/features/slack/utils/format-timestamp.d.ts +3 -0
  132. package/features/slack/utils/format-timestamp.d.ts.map +1 -0
  133. package/features/slack/utils/mentions.d.ts +18 -0
  134. package/features/slack/utils/mentions.d.ts.map +1 -0
  135. package/features/slack/utils/render-mentions.d.ts +15 -0
  136. package/features/slack/utils/render-mentions.d.ts.map +1 -0
  137. package/features/slack/utils/slack-links.d.ts +23 -0
  138. package/features/slack/utils/slack-links.d.ts.map +1 -0
  139. package/features/slack/utils/text.d.ts +7 -0
  140. package/features/slack/utils/text.d.ts.map +1 -0
  141. package/features/toast-message/ToastRoot.d.ts.map +1 -1
  142. package/index.d.ts +11 -0
  143. package/index.d.ts.map +1 -1
  144. package/index.es.js +20208 -13642
  145. package/index.umd.js +1226 -427
  146. package/main-dev.d.ts.map +1 -1
  147. package/package.json +1 -1
  148. package/testing/mocks/handlers/fetch-cards.d.ts +2 -2
  149. package/testing/mocks/handlers/slack.d.ts +36 -0
  150. package/testing/mocks/handlers/slack.d.ts.map +1 -0
  151. package/testing/mocks/handlers.d.ts.map +1 -1
@@ -0,0 +1,51 @@
1
+ import { RefObject } from 'react';
2
+ import { SlackMessage, SlackOlderPage, SlackThreadGroup } from '../types/wire';
3
+ /**
4
+ * Older-page pagination state for a scrollable list (messages in thread mode,
5
+ * thread-roots in channel mode).
6
+ *
7
+ * Reconciles the live, polled "page 0" window (owned by a useQuery upstream)
8
+ * with on-demand older history: page 0 stays cheap on the 5s poll, while
9
+ * older pages are fetched imperatively here and held in session-local state
10
+ * that is NEVER re-polled (frozen history). The render layer merges
11
+ * `olderItems` with the polled window, deduping by `getKey`.
12
+ *
13
+ * The first older fetch seeds its cursor from page 0's `nextCursor`
14
+ * (`seedCursor`); each subsequent fetch walks back via the previous page's
15
+ * cursor. Scroll position is preserved across prepends so the viewport
16
+ * stays anchored on the same row.
17
+ */
18
+ interface UseOlderArgs {
19
+ /** Fetch one older page given the cursor (before_ts) and page-size hint. */
20
+ fetchPage: (beforeTs: string, pageSize?: number) => Promise<SlackOlderPage>;
21
+ /** Page-0 cursor (oldest ts of the live window) — seeds the first fetch. */
22
+ seedCursor?: string | null;
23
+ /** Page-0 page-size hint, forwarded to the server. */
24
+ seedPageSize?: number;
25
+ /** Scroll container; used to preserve scroll position across prepend. */
26
+ scrollRef: RefObject<HTMLElement | null>;
27
+ /** Clears accumulated older pages when it changes (e.g. conv/thread id). */
28
+ resetKey: string;
29
+ /** Fired once per SUCCESSFUL older-page fetch (not per scroll event). */
30
+ onLoaded?: () => void;
31
+ }
32
+ export interface UseOlderMessagesResult {
33
+ olderMessages: SlackMessage[];
34
+ loadOlder: () => void;
35
+ isLoadingOlder: boolean;
36
+ olderError: boolean;
37
+ canLoadOlder: boolean;
38
+ }
39
+ /** Thread mode: accumulate older messages (dedup by externalMessageId). */
40
+ export declare function useOlderMessages(args: UseOlderArgs): UseOlderMessagesResult;
41
+ export interface UseOlderThreadsResult {
42
+ olderThreads: SlackThreadGroup[];
43
+ loadOlder: () => void;
44
+ isLoadingOlder: boolean;
45
+ olderError: boolean;
46
+ canLoadOlder: boolean;
47
+ }
48
+ /** Channel mode: accumulate older thread-roots (dedup by rootTs). */
49
+ export declare function useOlderThreads(args: UseOlderArgs): UseOlderThreadsResult;
50
+ export {};
51
+ //# sourceMappingURL=useOlderMessages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useOlderMessages.d.ts","sourceRoot":"","sources":["../../../../src/features/slack/hooks/useOlderMessages.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAElG;;;;;;;;;;;;;;GAcG;AACH,UAAU,YAAY;IACpB,4EAA4E;IAC5E,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IAC5E,4EAA4E;IAC5E,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,sDAAsD;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,SAAS,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IACzC,4EAA4E;IAC5E,QAAQ,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AAwGD,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,2EAA2E;AAC3E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,YAAY,GAAG,sBAAsB,CAO3E;AAED,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,gBAAgB,EAAE,CAAC;IACjC,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,qEAAqE;AACrE,wBAAgB,eAAe,CAAC,IAAI,EAAE,YAAY,GAAG,qBAAqB,CAOzE"}
@@ -0,0 +1,23 @@
1
+ interface SlackTabLabel {
2
+ label: string;
3
+ /** True once we have a confirmed link; lets the host render a
4
+ * Slack icon next to the channel name (vs the generic "Slack"
5
+ * fallback) and apply any active-link styling. */
6
+ isLinked: boolean;
7
+ }
8
+ /**
9
+ * Resolves the tab label outlook-ui renders in its conversation
10
+ * tab bar.
11
+ *
12
+ * - Pre-link: "Slack" (host renders Slack icon + label)
13
+ * - Linked: channel name (e.g. "l2-escalations-zap") from
14
+ * external_conversation; host still renders the Slack
15
+ * icon so the user knows it's the Slack tab.
16
+ *
17
+ * Lives on the connectors-ui side because the linked-conv lookup
18
+ * already happens here for the tab content. Avoids the host
19
+ * duplicating that fetch just to compute a label.
20
+ */
21
+ export declare function useSlackTabLabel(hiverConvId: string): SlackTabLabel;
22
+ export {};
23
+ //# sourceMappingURL=useSlackTabLabel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSlackTabLabel.d.ts","sourceRoot":"","sources":["../../../../src/features/slack/hooks/useSlackTabLabel.ts"],"names":[],"mappings":"AAEA,UAAU,aAAa;IACrB,KAAK,EAAE,MAAM,CAAC;IACd;;uDAEmD;IACnD,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,CAiBnE"}
@@ -0,0 +1,16 @@
1
+ import { SlackMessage } from './types/wire';
2
+ /**
3
+ * Slack message-type policy lives on the UI side: the API sends the raw
4
+ * Slack `subtype` and the client decides what to do with it. Today that
5
+ * means hiding the reply affordance for system messages; a future
6
+ * milestone can branch rendering (e.g. a centered "X joined" notice)
7
+ * off the same field.
8
+ *
9
+ * These system subtypes are channel lifecycle events that Slack does NOT
10
+ * allow thread replies on — attempting to reply 500s on their side.
11
+ */
12
+ export declare const NON_REPLYABLE_SUBTYPES: ReadonlySet<string>;
13
+ /** Ordinary messages (no subtype) are replyable; system subtypes above
14
+ * are not. Unknown subtypes default to replyable. */
15
+ export declare const isReplyable: (message: Pick<SlackMessage, "subtype">) => boolean;
16
+ //# sourceMappingURL=messageType.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messageType.d.ts","sourceRoot":"","sources":["../../../src/features/slack/messageType.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE;;;;;;;;;GASG;AACH,eAAO,MAAM,sBAAsB,EAAE,WAAW,CAAC,MAAM,CAerD,CAAC;AAEH;sDACsD;AACtD,eAAO,MAAM,WAAW,YAAa,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,KAAG,OACH,CAAC"}
@@ -0,0 +1,205 @@
1
+ /**
2
+ * Wire types for the Slack agent endpoints in custom-integrations.
3
+ *
4
+ * GET responses use camelCase keys; POST responses currently return
5
+ * `author` as a raw snake_case dict (known backend inconsistency —
6
+ * see plan-slack-m1-ui Backend status, 2026-06-09). The client
7
+ * normalises in api/index.ts so the UI layer only sees one shape.
8
+ */
9
+ export interface SlackMessageAuthor {
10
+ externalUserId: string;
11
+ /** Backend leaves this null when the message author hasn't been
12
+ * enriched via users.info (e.g. fresh chat.postMessage responses).
13
+ * UI falls back to externalUserId for display. */
14
+ name: string | null;
15
+ avatarUrl?: string | null;
16
+ isSelf: boolean;
17
+ }
18
+ export interface SlackMessageAuthorRaw {
19
+ external_user_id: string;
20
+ name: string | null;
21
+ avatar_url?: string | null;
22
+ is_self: boolean;
23
+ }
24
+ /**
25
+ * One aggregated emoji reaction on a message. The backend rolls up Slack's
26
+ * per-user `reaction_added` / `reaction_removed` events into a count and a
27
+ * per-viewer `includesSelf` flag (computed like author.isSelf, by comparing
28
+ * the reactors against the viewer's own Slack id). Display-only in M1 — no
29
+ * add/remove affordance.
30
+ */
31
+ export interface SlackReaction {
32
+ /** Slack emoji shortcode WITHOUT the surrounding colons, e.g. "thumbsup",
33
+ * "+1", "tada". Rendered to a glyph via renderSlackEmoji(`:${emoji}:`);
34
+ * unknown/custom workspace shortcodes fall back to the raw `:name:`. */
35
+ emoji: string;
36
+ /** Number of users who reacted with this emoji (>= 1). */
37
+ count: number;
38
+ /** True when the current viewer is among the reactors — drives the
39
+ * highlighted pill state. */
40
+ includesSelf: boolean;
41
+ }
42
+ export interface SlackMessage {
43
+ externalMessageId: string;
44
+ externalThreadTs?: string;
45
+ channelId: string;
46
+ author: SlackMessageAuthor;
47
+ text: string;
48
+ postedAt: string;
49
+ editedAt?: string | null;
50
+ deletedAt?: string | null;
51
+ clientMsgId?: string;
52
+ /** Raw Slack message subtype (e.g. 'channel_join', 'channel_leave');
53
+ * null/undefined for ordinary user messages. The UI derives
54
+ * replyability (and any future type-specific rendering) from this —
55
+ * see isReplyable(). */
56
+ subtype?: string | null;
57
+ /** Inbound emoji reactions aggregated by the backend, newest-emoji-last
58
+ * (Slack's `reactions[]` order). Absent or empty when the message has no
59
+ * reactions. Display-only in M1. */
60
+ reactions?: SlackReaction[];
61
+ /** UI-only flag for an in-flight outbound send. Never on the wire —
62
+ * the optimistic row gets dropped when refetchQueries lands the
63
+ * server's canonical state. */
64
+ isPending?: boolean;
65
+ }
66
+ /** Whether a link points at a single Slack thread (UI-5) or a whole
67
+ * channel (B4). Channel mode renders every thread in the channel. */
68
+ export type SlackTargetKind = 'thread' | 'channel';
69
+ /** Channel-mode grouping (B4): one Slack thread — a root message plus
70
+ * its replies (oldest-first). Sourced from the backend's `threads[]`. */
71
+ export interface SlackThreadGroup {
72
+ rootTs: string;
73
+ root: SlackMessage;
74
+ replies: SlackMessage[];
75
+ replyCount: number;
76
+ /** Older-reply pagination cursor contract (see SlackOlderPage).
77
+ * isTrimmed: older replies exist beyond this page. nextCursor: oldest
78
+ * reply ts in this page (pass as the next before_ts), null when
79
+ * exhausted. pageSize: window size used. */
80
+ isTrimmed?: boolean;
81
+ nextCursor?: string | null;
82
+ pageSize?: number;
83
+ /** externalUserId → display name for the `<@id>` mentions in this thread's
84
+ * bodies, resolved by id server-side (so it covers users who aren't current
85
+ * channel members). Present on the get_thread drill-in. */
86
+ mentions?: Record<string, string>;
87
+ }
88
+ /** Why the current viewer can't post into the linked channel. Backend
89
+ * computes this per-request against the viewer's OWN Slack token:
90
+ * - 'not_in_channel' → public channel the viewer left; history is
91
+ * still readable, so we keep it visible and show
92
+ * a "not a member" banner over a disabled composer
93
+ * - 'no_access' → private channel the viewer isn't in (or can no
94
+ * longer resolve) → "You don't have access"
95
+ * - 'channel_unavailable' → channel archived/deleted → "no longer available"
96
+ * - 'slack_not_connected' → no active Slack auth for this viewer
97
+ * Null/undefined when the viewer can post. */
98
+ export type SlackPostBlockReason = 'not_in_channel' | 'no_access' | 'channel_unavailable' | 'slack_not_connected';
99
+ export interface ExternalConversation {
100
+ hiverConvId: string;
101
+ channelId: string;
102
+ channelName: string;
103
+ externalThreadTs?: string;
104
+ /** 'channel' → render `threads` grouped; 'thread' (default) → render
105
+ * the flat `messages` list with a pinned parent. */
106
+ targetKind?: SlackTargetKind;
107
+ messages: SlackMessage[];
108
+ /** Present in channel mode: one entry per Slack thread in the linked
109
+ * channel. Undefined in thread mode. */
110
+ threads?: SlackThreadGroup[];
111
+ isTrimmed?: boolean;
112
+ /** Oldest message ts in this page — pass back as before_ts to fetch the
113
+ * preceding page. Null/undefined when older history is exhausted. */
114
+ nextCursor?: string | null;
115
+ /** Window size the server used for this page (default 25, max 50). */
116
+ pageSize?: number;
117
+ /** Per-viewer composer hint (computed against the viewer's own Slack
118
+ * token). Defaults to true when the server omits it. */
119
+ viewerCanPost?: boolean;
120
+ /** Reason the composer is blocked when viewerCanPost is false. */
121
+ viewerPostBlockReason?: SlackPostBlockReason | null;
122
+ /** externalUserId → display name for every `<@id>` mentioned across this
123
+ * response's bodies, resolved by id server-side. Unlike the channel-members
124
+ * roster, this covers mentions of users who aren't current members
125
+ * (joined-then-left, or mentioned-but-never-joined). The panel merges it
126
+ * into its mention-render map so those tokens render as `@DisplayName`. */
127
+ mentions?: Record<string, string>;
128
+ }
129
+ /** Result of an imperative older-page fetch (NOT polled — fetched on
130
+ * demand when the agent scrolls to the top). `messages` carries the
131
+ * older thread replies (thread mode); `threads` carries older thread
132
+ * roots (channel mode). The render layer merges these with the live
133
+ * polled page-0 window, deduping by externalMessageId. */
134
+ export interface SlackOlderPage {
135
+ messages: SlackMessage[];
136
+ threads?: SlackThreadGroup[];
137
+ /** Oldest ts in this page; pass as the next before_ts. Null when the
138
+ * server reports no older history remains. */
139
+ nextCursor?: string | null;
140
+ /** Whether older history still exists beyond this page. */
141
+ isTrimmed: boolean;
142
+ /** Window size used by the server for this page. */
143
+ pageSize: number;
144
+ }
145
+ export interface MemberResolutionReport {
146
+ added: Array<{
147
+ email: string;
148
+ externalUserId: string;
149
+ }>;
150
+ notOnSlack: string[];
151
+ }
152
+ export interface StartExistingChannelRequest {
153
+ hiverConvId: string;
154
+ channelId: string;
155
+ messageText: string;
156
+ }
157
+ export interface StartNewChannelRequest {
158
+ hiverConvId: string;
159
+ channelName: string;
160
+ /** Backend wants a bool; UI state holds a UX-friendly enum and
161
+ * transforms at the API boundary (see StartModal). */
162
+ isPrivate: boolean;
163
+ memberEmails: string[];
164
+ messageText: string;
165
+ }
166
+ export interface StartResponse {
167
+ externalConversationId: string;
168
+ channelId: string;
169
+ externalThreadTs?: string;
170
+ postedMessage: SlackMessage;
171
+ memberResolutionReport?: MemberResolutionReport;
172
+ }
173
+ export interface PostMessageRequest {
174
+ hiverConvId: string;
175
+ text: string;
176
+ /** Channel mode (B4): root ts of the thread to reply into. Omit to
177
+ * post a new top-level message (a new thread) to the channel. */
178
+ externalThreadTs?: string;
179
+ }
180
+ export interface ChannelMember {
181
+ externalUserId: string;
182
+ name: string;
183
+ avatarUrl?: string;
184
+ }
185
+ /**
186
+ * A Slack workspace user — seeds the create-channel member picker (UI-4).
187
+ * Unlike ChannelMember (members of an already-linked channel), this carries
188
+ * `email` because the new-channel invite is keyed on email: the agent picks
189
+ * users here, but StartModal submits their emails as `memberEmails` and the
190
+ * backend resolves them via users.lookupByEmail. Sourced from Slack's
191
+ * users.list (user-token scopes users:read + users:read.email).
192
+ */
193
+ export interface SlackUser {
194
+ externalUserId: string;
195
+ name: string;
196
+ email: string;
197
+ avatarUrl?: string;
198
+ }
199
+ export interface SlackChannel {
200
+ externalChannelId: string;
201
+ name: string;
202
+ isPrivate: boolean;
203
+ isMember: boolean;
204
+ }
205
+ //# sourceMappingURL=wire.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wire.d.ts","sourceRoot":"","sources":["../../../../src/features/slack/types/wire.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Replace Slack `:shortcode:` tokens in a message with their unicode glyphs.
3
+ * Unknown / custom shortcodes are left untouched (no regression). Display-only:
4
+ * the stored/edited text keeps the original colon form for re-send.
5
+ */
6
+ export declare const renderSlackEmoji: (text: string) => string;
7
+ //# sourceMappingURL=emoji.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emoji.d.ts","sourceRoot":"","sources":["../../../../src/features/slack/utils/emoji.ts"],"names":[],"mappings":"AAaA;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,SAAU,MAAM,KAAG,MAAwC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare const formatTime: (timestamp: string) => string;
2
+ export declare const formatAbsoluteTime: (timestamp: string) => string;
3
+ //# sourceMappingURL=format-timestamp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-timestamp.d.ts","sourceRoot":"","sources":["../../../../src/features/slack/utils/format-timestamp.ts"],"names":[],"mappings":"AAoCA,eAAO,MAAM,UAAU,cAAe,MAAM,KAAG,MAI9C,CAAC;AAKF,eAAO,MAAM,kBAAkB,cAAe,MAAM,KAAG,MAKtD,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { ChannelMember } from '../types/wire';
2
+ export interface MentionRef {
3
+ /** "@DisplayName" literal as it appears in the textarea. */
4
+ displayText: string;
5
+ externalUserId: string;
6
+ }
7
+ /** Substring (case-insensitive) filter for the @-mention dropdown. Shared by
8
+ * the picker (what it renders) and the composers (what Enter selects) so the
9
+ * two never drift. */
10
+ export declare const filterMembers: (members: ChannelMember[], query: string) => ChannelMember[];
11
+ /**
12
+ * Rewrite each tracked "@DisplayName" to Slack's `<@external_user_id>` mention
13
+ * syntax before sending, so the mentioned user is actually notified. Only
14
+ * mentions picked from the dropdown are converted — a hand-typed "@Sarah" is
15
+ * sent literally (no fake-mention guessing).
16
+ */
17
+ export declare const toSlackMentions: (text: string, mentions: MentionRef[]) => string;
18
+ //# sourceMappingURL=mentions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mentions.d.ts","sourceRoot":"","sources":["../../../../src/features/slack/utils/mentions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE,MAAM,WAAW,UAAU;IACzB,4DAA4D;IAC5D,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;uBAEuB;AACvB,eAAO,MAAM,aAAa,YAAa,aAAa,EAAE,SAAS,MAAM,KAAG,aAAa,EACV,CAAC;AAE5E;;;;;GAKG;AACH,eAAO,MAAM,eAAe,SAAU,MAAM,YAAY,UAAU,EAAE,KAAG,MAItE,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { ReactNode } from 'react';
2
+ /**
3
+ * Display-only: render Slack's raw `<@USER_ID>` mention tokens. A token
4
+ * whose id resolves to a known channel member becomes a `@DisplayName`
5
+ * rendered in medium weight (500) but the SAME colour as the surrounding
6
+ * body text — it inherits, no colour override. An UNRESOLVED id renders as
7
+ * plain `@<id>`. The stored/edited text keeps the raw token so a re-send
8
+ * preserves the real Slack mention.
9
+ *
10
+ * Shared by `MessageItem` (the full linked-conv panel rows) and the HIG
11
+ * `HigSlackSection` last-message preview so the two never drift — the
12
+ * section reuses this renderer rather than re-implementing it (§0 Addendum).
13
+ */
14
+ export declare const renderTextWithMentions: (text: string, names?: Map<string, string>) => ReactNode[];
15
+ //# sourceMappingURL=render-mentions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-mentions.d.ts","sourceRoot":"","sources":["../../../../src/features/slack/utils/render-mentions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,sBAAsB,SAAU,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,KAAG,SAAS,EAwB3F,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { SlackTargetKind } from '../types/wire';
2
+ interface ChannelRedirectArgs {
3
+ channelId?: string;
4
+ /** Thread root ts (ExternalConversation.externalThreadTs) — deep-linked as
5
+ * `message_ts` in thread mode so Slack opens on the parent message. */
6
+ threadTs?: string;
7
+ targetKind?: SlackTargetKind;
8
+ }
9
+ /**
10
+ * Build a Slack `app_redirect` deep link to a linked channel (or thread).
11
+ *
12
+ * Resolves the Phase-2 URL-source question (summary §6): a correct link is
13
+ * constructible **client-side** from data already on the wire — `channelId`
14
+ * (plus the thread ts in thread mode) — so no workspace domain / backend
15
+ * permalink field is required. `app_redirect` opens the Slack desktop/web app on
16
+ * the channel; in thread mode `message_ts` deep-links the parent message.
17
+ *
18
+ * Returns `undefined` when there's no `channelId`, so the band can omit the URL
19
+ * row and fall back to the `Channel:`-only Phase-1 layout.
20
+ */
21
+ export declare const buildChannelRedirectUrl: ({ channelId, threadTs, targetKind }: ChannelRedirectArgs) => string | undefined;
22
+ export {};
23
+ //# sourceMappingURL=slack-links.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slack-links.d.ts","sourceRoot":"","sources":["../../../../src/features/slack/utils/slack-links.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAEnE,UAAU,mBAAmB;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;4EACwE;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,eAAe,CAAC;CAC9B;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,uBAAuB,wCAIjC,mBAAmB,KAAG,MAAM,GAAG,SAKjC,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * True when `value` contains at least one visible glyph once invisible /
3
+ * zero-width characters and surrounding whitespace are stripped. Use this for
4
+ * "is the field empty?" / Send-enabled checks instead of `value.trim()`.
5
+ */
6
+ export declare const hasVisibleContent: (value: string) => boolean;
7
+ //# sourceMappingURL=text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../../src/features/slack/utils/text.ts"],"names":[],"mappings":"AAaA;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,UAAW,MAAM,KAAG,OAAkE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ToastRoot.d.ts","sourceRoot":"","sources":["../../../src/features/toast-message/ToastRoot.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAA8B,MAAM,OAAO,CAAC;AAuBvD,eAAO,MAAM,kBAAkB,QAAO,IAIrC,CAAC;AAEF,UAAU,cAAc;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,SAAS,EAAE,EAAE,CAAC,cAAc,CA4CxC,CAAC"}
1
+ {"version":3,"file":"ToastRoot.d.ts","sourceRoot":"","sources":["../../../src/features/toast-message/ToastRoot.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAA8B,MAAM,OAAO,CAAC;AA0BvD,eAAO,MAAM,kBAAkB,QAAO,IAIrC,CAAC;AAEF,UAAU,cAAc;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,SAAS,EAAE,EAAE,CAAC,cAAc,CA4CxC,CAAC"}
package/index.d.ts CHANGED
@@ -9,6 +9,17 @@ export type { ISectionItems, IActionButtons, ISections, IMetaData, ITemplateUpda
9
9
  export { EmailLogger, GmailLogObserver } from './app/email-logger';
10
10
  export { OmniEmailLogger } from './app/omni-email-logger';
11
11
  export type { OmniEmailLoggerProps } from './app/omni-email-logger';
12
+ export { OmniSlackTab } from './app/omni-slack';
13
+ export type { OmniSlackTabProps } from './app/omni-slack';
14
+ export { SlackConnectModalIsland } from './app/omni-slack/SlackConnectModalIsland';
15
+ export type { SlackConnectModalIslandProps } from './app/omni-slack/SlackConnectModalIsland';
16
+ export { HigSlackTab } from './app/hig-slack';
17
+ export type { HigSlackTabProps } from './app/hig-slack';
18
+ export { HigSlackSection } from './app/hig-slack/HigSlackSection';
19
+ export type { HigSlackSectionProps } from './app/hig-slack/HigSlackSection';
20
+ export { HigSlackConnectModalIsland } from './app/hig-slack/HigSlackConnectModalIsland';
21
+ export type { HigSlackConnectModalIslandProps } from './app/hig-slack/HigSlackConnectModalIsland';
22
+ export { useSlackTabLabel } from './features/slack/hooks/useSlackTabLabel';
12
23
  export { fetchAppCfValues, fetchDeferredAppCfValues } from './api/appCustomField';
13
24
  export type { AppCfValuesRequest, AppCfValuesResponse, AppFieldValue, AppFieldValueStatus } from './api/appCustomField';
14
25
  export { useConnectorSelectedEmail } from './store/connectorEmailStore';
package/index.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,IAAI,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AACnH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,0BAA0B,EAC1B,mBAAmB,EACnB,sBAAsB,EACvB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC9G,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,YAAY,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAClF,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACxH,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,IAAI,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AACnH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,0BAA0B,EAC1B,mBAAmB,EACnB,sBAAsB,EACvB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC9G,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,YAAY,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAG1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AACnF,YAAY,EAAE,4BAA4B,EAAE,MAAM,0CAA0C,CAAC;AAI7F,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,YAAY,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAG5E,OAAO,EAAE,0BAA0B,EAAE,MAAM,4CAA4C,CAAC;AACxF,YAAY,EAAE,+BAA+B,EAAE,MAAM,4CAA4C,CAAC;AAIlG,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAClF,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACxH,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC"}