@ai-matrx/messaging 0.4.0 → 0.7.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/CHANGELOG.md +79 -0
- package/README.md +2 -1
- package/dist/index.cjs +4 -17
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +34 -12
- package/dist/index.d.ts +34 -12
- package/dist/index.js +4 -17
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +9 -19
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +34 -12
- package/dist/react.d.ts +34 -12
- package/dist/react.js +7 -17
- package/dist/react.js.map +1 -1
- package/package.json +3 -2
package/dist/react.d.cts
CHANGED
|
@@ -17,10 +17,22 @@ import { RealtimeClientLike, RealtimeManager } from '@ai-matrx/realtime';
|
|
|
17
17
|
* is the JSON boundary — `metadata` and `action_data` are host/DB-generated
|
|
18
18
|
* shapes this package does not own (the data 0.2.1 `Json = unknown` lesson).
|
|
19
19
|
*/
|
|
20
|
-
/**
|
|
21
|
-
|
|
20
|
+
/**
|
|
21
|
+
* Nominal id types. A conversation id can never be passed where a user id goes.
|
|
22
|
+
*
|
|
23
|
+
* 🚨 THE MARKER IS A NAMED PROPERTY, NOT A `unique symbol`. This package ships
|
|
24
|
+
* two entries built as two separate bundles, so a `declare const brand: unique
|
|
25
|
+
* symbol` is DECLARED TWICE — and two unique symbols are two different types.
|
|
26
|
+
* `ConversationId` from `@ai-matrx/messaging` then does not match
|
|
27
|
+
* `ConversationId` from `@ai-matrx/messaging/react`, which makes the two
|
|
28
|
+
* entries unusable together: the first consumer hit exactly that, calling
|
|
29
|
+
* `asConversationId` from the core and passing it to a hook. A structural
|
|
30
|
+
* marker is identical in both declarations, so the brands unify — and it still
|
|
31
|
+
* cannot be produced by accident, which is all nominal typing needs to do.
|
|
32
|
+
* (The marker is types-only; nothing writes it at runtime.)
|
|
33
|
+
*/
|
|
22
34
|
type Brand<T, B extends string> = T & {
|
|
23
|
-
readonly
|
|
35
|
+
readonly __mxBrand: B;
|
|
24
36
|
};
|
|
25
37
|
type ConversationId = Brand<string, "ConversationId">;
|
|
26
38
|
type MessageId = Brand<string, "MessageId">;
|
|
@@ -531,8 +543,25 @@ type MessagingSupabaseClient = SupabaseLike & RealtimeClientLike;
|
|
|
531
543
|
* — which in a large org is every page.
|
|
532
544
|
*/
|
|
533
545
|
|
|
534
|
-
/** The schema. Messaging
|
|
546
|
+
/** The TABLES' schema. Messaging tables are never in `public`. */
|
|
535
547
|
declare const MESSAGING_SCHEMA = "communication";
|
|
548
|
+
/**
|
|
549
|
+
* 🚨 THE RPCS LIVE IN `public`, AND THE TABLES DO NOT. THIS IS NOT A TYPO.
|
|
550
|
+
*
|
|
551
|
+
* Matrx Main's messaging tables moved into `communication` during the schema
|
|
552
|
+
* reorg; the five auth-checked SECURITY DEFINER functions stayed in `public`,
|
|
553
|
+
* where PostgREST exposes them by default and where every existing caller and
|
|
554
|
+
* GRANT already pointed. Calling them on `communication` fails with PGRST202
|
|
555
|
+
* ("no matches were found in the schema cache") on EVERY read — which is what
|
|
556
|
+
* happened the first time this package touched the live database, and what no
|
|
557
|
+
* amount of checking the SQL by inspection had caught.
|
|
558
|
+
*
|
|
559
|
+
* Verify before changing either constant:
|
|
560
|
+
* select n.nspname, p.proname from pg_proc p
|
|
561
|
+
* join pg_namespace n on n.oid = p.pronamespace
|
|
562
|
+
* where p.proname like '%_dm_%';
|
|
563
|
+
*/
|
|
564
|
+
declare const MESSAGING_RPC_SCHEMA = "public";
|
|
536
565
|
declare const TABLES: {
|
|
537
566
|
readonly conversations: "dm_conversations";
|
|
538
567
|
readonly participants: "dm_conversation_participants";
|
|
@@ -1298,13 +1327,6 @@ declare function formatConversationTime(isoString: string | null, now?: number,
|
|
|
1298
1327
|
declare function formatMessageTime(isoString: string, locale?: string): string;
|
|
1299
1328
|
/** The separator between day groups in a thread. */
|
|
1300
1329
|
declare function formatDateSeparator(isoString: string, now?: number, locale?: string): string;
|
|
1301
|
-
declare function getInitials(name: string): string;
|
|
1302
|
-
/**
|
|
1303
|
-
* A stable palette index for an avatar with no image. Deterministic on the id,
|
|
1304
|
-
* so the same person is the same color on every device and every reload — a
|
|
1305
|
-
* random color per render is a surprisingly loud bug.
|
|
1306
|
-
*/
|
|
1307
|
-
declare function avatarPaletteIndex(seed: string, buckets?: number): number;
|
|
1308
1330
|
/**
|
|
1309
1331
|
* Group consecutive messages by the same sender within a window, the way every
|
|
1310
1332
|
* good chat UI does — one avatar and one name per burst.
|
|
@@ -1403,4 +1425,4 @@ declare function summarizeText(content: string, maxLength?: number): string;
|
|
|
1403
1425
|
/** Serialize picked references into a fence the platform's other readers accept. */
|
|
1404
1426
|
declare function composeFence(references: readonly MatrxReference[]): string;
|
|
1405
1427
|
|
|
1406
|
-
export { type ActionChoice, type ActionContext, type ActionHandler, type ActionOutcome, type ActionReceipt, type ActionRegistry, type ActorPresentation, AgentTag, type AiCapability, type AiResult, AlertIcon, type Attachment, Avatar, BotIcon, CheckIcon, ChevronLeftIcon, type ClientMessageId, ClockIcon, CloseIcon, Composer, type Conversation, type ConversationCursor, type ConversationId, ConversationList, type ConversationListProps, type ConversationRowWrapperProps, ConversationSkeleton, type ConversationSummary, type ConversationThread, type ConversationType, ConversationView, type ConversationViewProps, type DeliveryState, DeliveryTick, DoubleCheckIcon, type DraftMessage, EmptyState, type EngineDiagnostic, type IncomingMessageContext, type JsonObject, type JsonValue, LinkIcon, MESSAGING_EVENTS, MESSAGING_SCHEMA, type MatrxReference, type Message, type MessageAction, MessageActionChips, type MessageActionRenderProps, type MessageActionRenderer, MessageBubble, type MessageCursor, type MessageGroup, type MessageId, type MessageKind, type MessageWrapperProps, type MessagingAgents, type MessagingAi, type MessagingAiOptions, type MessagingEngine, type MessagingEngineOptions, MessagingError, type MessagingErrorCode, type MessagingHost, type MessagingIdentity, MessagingInbox, type MessagingInboxProps, MessagingProvider, type MessagingProviderProps, type MessagingRepository, type MessagingSnapshot, type MessagingStore, type OrganizationId, type Outbox, type OutboxEntry, type OutboxOptions, type OutboxStorage, type Page, PaperclipIcon, type Participant, type ParticipantRole, PlusIcon, type PostgrestFilterLike, type PostgrestLikeResponse, type PostgrestTableLike, RPCS, type ReadCache, type ReadCacheOptions, ReferenceCard, type ReferenceRenderer, ReplyIcon, type RepositoryOptions, type SchemaLike, SearchIcon, SendIcon, type SessionResolver, SparklesIcon, type SupabaseLike, TABLES, type TextSegment, TypingDots, type UseComposerResult, type UseConversationResult, type UseConversationsResult, type UseMessageActionResult, type UseMessagingAiResult, type UseTypistsResult, type UserId, type UserSummary, UsersIcon, asClientMessageId, asConversationId, asMessageId, asOrganizationId, asUserId,
|
|
1428
|
+
export { type ActionChoice, type ActionContext, type ActionHandler, type ActionOutcome, type ActionReceipt, type ActionRegistry, type ActorPresentation, AgentTag, type AiCapability, type AiResult, AlertIcon, type Attachment, Avatar, BotIcon, CheckIcon, ChevronLeftIcon, type ClientMessageId, ClockIcon, CloseIcon, Composer, type Conversation, type ConversationCursor, type ConversationId, ConversationList, type ConversationListProps, type ConversationRowWrapperProps, ConversationSkeleton, type ConversationSummary, type ConversationThread, type ConversationType, ConversationView, type ConversationViewProps, type DeliveryState, DeliveryTick, DoubleCheckIcon, type DraftMessage, EmptyState, type EngineDiagnostic, type IncomingMessageContext, type JsonObject, type JsonValue, LinkIcon, MESSAGING_EVENTS, MESSAGING_RPC_SCHEMA, MESSAGING_SCHEMA, type MatrxReference, type Message, type MessageAction, MessageActionChips, type MessageActionRenderProps, type MessageActionRenderer, MessageBubble, type MessageCursor, type MessageGroup, type MessageId, type MessageKind, type MessageWrapperProps, type MessagingAgents, type MessagingAi, type MessagingAiOptions, type MessagingEngine, type MessagingEngineOptions, MessagingError, type MessagingErrorCode, type MessagingHost, type MessagingIdentity, MessagingInbox, type MessagingInboxProps, MessagingProvider, type MessagingProviderProps, type MessagingRepository, type MessagingSnapshot, type MessagingStore, type OrganizationId, type Outbox, type OutboxEntry, type OutboxOptions, type OutboxStorage, type Page, PaperclipIcon, type Participant, type ParticipantRole, PlusIcon, type PostgrestFilterLike, type PostgrestLikeResponse, type PostgrestTableLike, RPCS, type ReadCache, type ReadCacheOptions, ReferenceCard, type ReferenceRenderer, ReplyIcon, type RepositoryOptions, type SchemaLike, SearchIcon, SendIcon, type SessionResolver, SparklesIcon, type SupabaseLike, TABLES, type TextSegment, TypingDots, type UseComposerResult, type UseConversationResult, type UseConversationsResult, type UseMessageActionResult, type UseMessagingAiResult, type UseTypistsResult, type UserId, type UserSummary, UsersIcon, asClientMessageId, asConversationId, asMessageId, asOrganizationId, asUserId, composeFence, conversationTopic, createActionRegistry, createMemoryOutboxStorage, createMessagingAi, createMessagingEngine, createMessagingRepository, createMessagingStore, createOutbox, createReadCache, createWebOutboxStorage, extractReferences, formatConversationTime, formatDateSeparator, formatLastSeen, formatMessageTime, formatTypists, groupMessages, inboxTopic, invalidResponse, isSameDay, messagingClientId, normalizeMessagingError, optimisticMessage, participantNames, projectConversationSummary, projectMessage, projectMessageAction, projectParticipantRole, projectUserSummary, resolveActor, splitText, summarizeText, useComposer, useConversation, useConversations, useMessageAction, useMessagingAi, useMessagingHost, useMessagingSnapshot, useOnlineUserIds, useRequiredMessagingHost, useTypists };
|
package/dist/react.d.ts
CHANGED
|
@@ -17,10 +17,22 @@ import { RealtimeClientLike, RealtimeManager } from '@ai-matrx/realtime';
|
|
|
17
17
|
* is the JSON boundary — `metadata` and `action_data` are host/DB-generated
|
|
18
18
|
* shapes this package does not own (the data 0.2.1 `Json = unknown` lesson).
|
|
19
19
|
*/
|
|
20
|
-
/**
|
|
21
|
-
|
|
20
|
+
/**
|
|
21
|
+
* Nominal id types. A conversation id can never be passed where a user id goes.
|
|
22
|
+
*
|
|
23
|
+
* 🚨 THE MARKER IS A NAMED PROPERTY, NOT A `unique symbol`. This package ships
|
|
24
|
+
* two entries built as two separate bundles, so a `declare const brand: unique
|
|
25
|
+
* symbol` is DECLARED TWICE — and two unique symbols are two different types.
|
|
26
|
+
* `ConversationId` from `@ai-matrx/messaging` then does not match
|
|
27
|
+
* `ConversationId` from `@ai-matrx/messaging/react`, which makes the two
|
|
28
|
+
* entries unusable together: the first consumer hit exactly that, calling
|
|
29
|
+
* `asConversationId` from the core and passing it to a hook. A structural
|
|
30
|
+
* marker is identical in both declarations, so the brands unify — and it still
|
|
31
|
+
* cannot be produced by accident, which is all nominal typing needs to do.
|
|
32
|
+
* (The marker is types-only; nothing writes it at runtime.)
|
|
33
|
+
*/
|
|
22
34
|
type Brand<T, B extends string> = T & {
|
|
23
|
-
readonly
|
|
35
|
+
readonly __mxBrand: B;
|
|
24
36
|
};
|
|
25
37
|
type ConversationId = Brand<string, "ConversationId">;
|
|
26
38
|
type MessageId = Brand<string, "MessageId">;
|
|
@@ -531,8 +543,25 @@ type MessagingSupabaseClient = SupabaseLike & RealtimeClientLike;
|
|
|
531
543
|
* — which in a large org is every page.
|
|
532
544
|
*/
|
|
533
545
|
|
|
534
|
-
/** The schema. Messaging
|
|
546
|
+
/** The TABLES' schema. Messaging tables are never in `public`. */
|
|
535
547
|
declare const MESSAGING_SCHEMA = "communication";
|
|
548
|
+
/**
|
|
549
|
+
* 🚨 THE RPCS LIVE IN `public`, AND THE TABLES DO NOT. THIS IS NOT A TYPO.
|
|
550
|
+
*
|
|
551
|
+
* Matrx Main's messaging tables moved into `communication` during the schema
|
|
552
|
+
* reorg; the five auth-checked SECURITY DEFINER functions stayed in `public`,
|
|
553
|
+
* where PostgREST exposes them by default and where every existing caller and
|
|
554
|
+
* GRANT already pointed. Calling them on `communication` fails with PGRST202
|
|
555
|
+
* ("no matches were found in the schema cache") on EVERY read — which is what
|
|
556
|
+
* happened the first time this package touched the live database, and what no
|
|
557
|
+
* amount of checking the SQL by inspection had caught.
|
|
558
|
+
*
|
|
559
|
+
* Verify before changing either constant:
|
|
560
|
+
* select n.nspname, p.proname from pg_proc p
|
|
561
|
+
* join pg_namespace n on n.oid = p.pronamespace
|
|
562
|
+
* where p.proname like '%_dm_%';
|
|
563
|
+
*/
|
|
564
|
+
declare const MESSAGING_RPC_SCHEMA = "public";
|
|
536
565
|
declare const TABLES: {
|
|
537
566
|
readonly conversations: "dm_conversations";
|
|
538
567
|
readonly participants: "dm_conversation_participants";
|
|
@@ -1298,13 +1327,6 @@ declare function formatConversationTime(isoString: string | null, now?: number,
|
|
|
1298
1327
|
declare function formatMessageTime(isoString: string, locale?: string): string;
|
|
1299
1328
|
/** The separator between day groups in a thread. */
|
|
1300
1329
|
declare function formatDateSeparator(isoString: string, now?: number, locale?: string): string;
|
|
1301
|
-
declare function getInitials(name: string): string;
|
|
1302
|
-
/**
|
|
1303
|
-
* A stable palette index for an avatar with no image. Deterministic on the id,
|
|
1304
|
-
* so the same person is the same color on every device and every reload — a
|
|
1305
|
-
* random color per render is a surprisingly loud bug.
|
|
1306
|
-
*/
|
|
1307
|
-
declare function avatarPaletteIndex(seed: string, buckets?: number): number;
|
|
1308
1330
|
/**
|
|
1309
1331
|
* Group consecutive messages by the same sender within a window, the way every
|
|
1310
1332
|
* good chat UI does — one avatar and one name per burst.
|
|
@@ -1403,4 +1425,4 @@ declare function summarizeText(content: string, maxLength?: number): string;
|
|
|
1403
1425
|
/** Serialize picked references into a fence the platform's other readers accept. */
|
|
1404
1426
|
declare function composeFence(references: readonly MatrxReference[]): string;
|
|
1405
1427
|
|
|
1406
|
-
export { type ActionChoice, type ActionContext, type ActionHandler, type ActionOutcome, type ActionReceipt, type ActionRegistry, type ActorPresentation, AgentTag, type AiCapability, type AiResult, AlertIcon, type Attachment, Avatar, BotIcon, CheckIcon, ChevronLeftIcon, type ClientMessageId, ClockIcon, CloseIcon, Composer, type Conversation, type ConversationCursor, type ConversationId, ConversationList, type ConversationListProps, type ConversationRowWrapperProps, ConversationSkeleton, type ConversationSummary, type ConversationThread, type ConversationType, ConversationView, type ConversationViewProps, type DeliveryState, DeliveryTick, DoubleCheckIcon, type DraftMessage, EmptyState, type EngineDiagnostic, type IncomingMessageContext, type JsonObject, type JsonValue, LinkIcon, MESSAGING_EVENTS, MESSAGING_SCHEMA, type MatrxReference, type Message, type MessageAction, MessageActionChips, type MessageActionRenderProps, type MessageActionRenderer, MessageBubble, type MessageCursor, type MessageGroup, type MessageId, type MessageKind, type MessageWrapperProps, type MessagingAgents, type MessagingAi, type MessagingAiOptions, type MessagingEngine, type MessagingEngineOptions, MessagingError, type MessagingErrorCode, type MessagingHost, type MessagingIdentity, MessagingInbox, type MessagingInboxProps, MessagingProvider, type MessagingProviderProps, type MessagingRepository, type MessagingSnapshot, type MessagingStore, type OrganizationId, type Outbox, type OutboxEntry, type OutboxOptions, type OutboxStorage, type Page, PaperclipIcon, type Participant, type ParticipantRole, PlusIcon, type PostgrestFilterLike, type PostgrestLikeResponse, type PostgrestTableLike, RPCS, type ReadCache, type ReadCacheOptions, ReferenceCard, type ReferenceRenderer, ReplyIcon, type RepositoryOptions, type SchemaLike, SearchIcon, SendIcon, type SessionResolver, SparklesIcon, type SupabaseLike, TABLES, type TextSegment, TypingDots, type UseComposerResult, type UseConversationResult, type UseConversationsResult, type UseMessageActionResult, type UseMessagingAiResult, type UseTypistsResult, type UserId, type UserSummary, UsersIcon, asClientMessageId, asConversationId, asMessageId, asOrganizationId, asUserId,
|
|
1428
|
+
export { type ActionChoice, type ActionContext, type ActionHandler, type ActionOutcome, type ActionReceipt, type ActionRegistry, type ActorPresentation, AgentTag, type AiCapability, type AiResult, AlertIcon, type Attachment, Avatar, BotIcon, CheckIcon, ChevronLeftIcon, type ClientMessageId, ClockIcon, CloseIcon, Composer, type Conversation, type ConversationCursor, type ConversationId, ConversationList, type ConversationListProps, type ConversationRowWrapperProps, ConversationSkeleton, type ConversationSummary, type ConversationThread, type ConversationType, ConversationView, type ConversationViewProps, type DeliveryState, DeliveryTick, DoubleCheckIcon, type DraftMessage, EmptyState, type EngineDiagnostic, type IncomingMessageContext, type JsonObject, type JsonValue, LinkIcon, MESSAGING_EVENTS, MESSAGING_RPC_SCHEMA, MESSAGING_SCHEMA, type MatrxReference, type Message, type MessageAction, MessageActionChips, type MessageActionRenderProps, type MessageActionRenderer, MessageBubble, type MessageCursor, type MessageGroup, type MessageId, type MessageKind, type MessageWrapperProps, type MessagingAgents, type MessagingAi, type MessagingAiOptions, type MessagingEngine, type MessagingEngineOptions, MessagingError, type MessagingErrorCode, type MessagingHost, type MessagingIdentity, MessagingInbox, type MessagingInboxProps, MessagingProvider, type MessagingProviderProps, type MessagingRepository, type MessagingSnapshot, type MessagingStore, type OrganizationId, type Outbox, type OutboxEntry, type OutboxOptions, type OutboxStorage, type Page, PaperclipIcon, type Participant, type ParticipantRole, PlusIcon, type PostgrestFilterLike, type PostgrestLikeResponse, type PostgrestTableLike, RPCS, type ReadCache, type ReadCacheOptions, ReferenceCard, type ReferenceRenderer, ReplyIcon, type RepositoryOptions, type SchemaLike, SearchIcon, SendIcon, type SessionResolver, SparklesIcon, type SupabaseLike, TABLES, type TextSegment, TypingDots, type UseComposerResult, type UseConversationResult, type UseConversationsResult, type UseMessageActionResult, type UseMessagingAiResult, type UseTypistsResult, type UserId, type UserSummary, UsersIcon, asClientMessageId, asConversationId, asMessageId, asOrganizationId, asUserId, composeFence, conversationTopic, createActionRegistry, createMemoryOutboxStorage, createMessagingAi, createMessagingEngine, createMessagingRepository, createMessagingStore, createOutbox, createReadCache, createWebOutboxStorage, extractReferences, formatConversationTime, formatDateSeparator, formatLastSeen, formatMessageTime, formatTypists, groupMessages, inboxTopic, invalidResponse, isSameDay, messagingClientId, normalizeMessagingError, optimisticMessage, participantNames, projectConversationSummary, projectMessage, projectMessageAction, projectParticipantRole, projectUserSummary, resolveActor, splitText, summarizeText, useComposer, useConversation, useConversations, useMessageAction, useMessagingAi, useMessagingHost, useMessagingSnapshot, useOnlineUserIds, useRequiredMessagingHost, useTypists };
|
package/dist/react.js
CHANGED
|
@@ -1358,6 +1358,7 @@ function createReadCache(options) {
|
|
|
1358
1358
|
|
|
1359
1359
|
// src/core/repository.ts
|
|
1360
1360
|
var MESSAGING_SCHEMA = "communication";
|
|
1361
|
+
var MESSAGING_RPC_SCHEMA = "public";
|
|
1361
1362
|
var TABLES = {
|
|
1362
1363
|
conversations: "dm_conversations",
|
|
1363
1364
|
participants: "dm_conversation_participants",
|
|
@@ -1392,6 +1393,7 @@ function createMessagingRepository(options) {
|
|
|
1392
1393
|
...options.now !== void 0 ? { now: options.now } : {}
|
|
1393
1394
|
});
|
|
1394
1395
|
const db = () => client.schema(MESSAGING_SCHEMA);
|
|
1396
|
+
const rpcDb = () => client.schema(MESSAGING_RPC_SCHEMA);
|
|
1395
1397
|
async function withSessionRetry(operation, run) {
|
|
1396
1398
|
try {
|
|
1397
1399
|
return await run();
|
|
@@ -1409,7 +1411,7 @@ function createMessagingRepository(options) {
|
|
|
1409
1411
|
}
|
|
1410
1412
|
}
|
|
1411
1413
|
async function rpc(fn, args, operation) {
|
|
1412
|
-
const { data, error } = await
|
|
1414
|
+
const { data, error } = await rpcDb().rpc(fn, args);
|
|
1413
1415
|
if (error !== null) throw normalizeMessagingError(error, operation);
|
|
1414
1416
|
return data;
|
|
1415
1417
|
}
|
|
@@ -1907,20 +1909,6 @@ function formatDateSeparator(isoString, now = Date.now(), locale) {
|
|
|
1907
1909
|
day: "numeric"
|
|
1908
1910
|
});
|
|
1909
1911
|
}
|
|
1910
|
-
function getInitials(name) {
|
|
1911
|
-
const parts = name.trim().split(/\s+/).filter(Boolean);
|
|
1912
|
-
if (parts.length === 0) return "?";
|
|
1913
|
-
const first = parts[0]?.[0] ?? "";
|
|
1914
|
-
const last = parts.length > 1 ? parts.at(-1)?.[0] ?? "" : "";
|
|
1915
|
-
return `${first}${last}`.toUpperCase() || "?";
|
|
1916
|
-
}
|
|
1917
|
-
function avatarPaletteIndex(seed, buckets = 8) {
|
|
1918
|
-
let hash = 0;
|
|
1919
|
-
for (let index = 0; index < seed.length; index += 1) {
|
|
1920
|
-
hash = hash * 31 + seed.charCodeAt(index) | 0;
|
|
1921
|
-
}
|
|
1922
|
-
return Math.abs(hash) % buckets;
|
|
1923
|
-
}
|
|
1924
1912
|
function groupMessages(messages, args = {}) {
|
|
1925
1913
|
const windowMs = args.windowMs ?? 5 * MINUTE;
|
|
1926
1914
|
const now = args.now ?? Date.now();
|
|
@@ -2289,6 +2277,9 @@ function resolveActor(message, sender) {
|
|
|
2289
2277
|
};
|
|
2290
2278
|
}
|
|
2291
2279
|
|
|
2280
|
+
// src/react/parts.tsx
|
|
2281
|
+
import { avatarPaletteIndex, getInitials } from "@ai-matrx/kit/format";
|
|
2282
|
+
|
|
2292
2283
|
// src/react/icons.tsx
|
|
2293
2284
|
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
2294
2285
|
function Icon(props) {
|
|
@@ -3045,6 +3036,7 @@ export {
|
|
|
3045
3036
|
EmptyState,
|
|
3046
3037
|
LinkIcon,
|
|
3047
3038
|
MESSAGING_EVENTS,
|
|
3039
|
+
MESSAGING_RPC_SCHEMA,
|
|
3048
3040
|
MESSAGING_SCHEMA,
|
|
3049
3041
|
MessageActionChips,
|
|
3050
3042
|
MessageBubble,
|
|
@@ -3067,7 +3059,6 @@ export {
|
|
|
3067
3059
|
asMessageId,
|
|
3068
3060
|
asOrganizationId,
|
|
3069
3061
|
asUserId,
|
|
3070
|
-
avatarPaletteIndex,
|
|
3071
3062
|
composeFence,
|
|
3072
3063
|
conversationTopic,
|
|
3073
3064
|
createActionRegistry,
|
|
@@ -3085,7 +3076,6 @@ export {
|
|
|
3085
3076
|
formatLastSeen,
|
|
3086
3077
|
formatMessageTime,
|
|
3087
3078
|
formatTypists,
|
|
3088
|
-
getInitials,
|
|
3089
3079
|
groupMessages,
|
|
3090
3080
|
inboxTopic,
|
|
3091
3081
|
invalidResponse,
|