@stigmer/react 3.8.0 → 3.10.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/attachment/AttachmentChipList.d.ts +16 -4
- package/attachment/AttachmentChipList.d.ts.map +1 -1
- package/attachment/AttachmentChipList.js +106 -11
- package/attachment/AttachmentChipList.js.map +1 -1
- package/attachment/AttachmentImageLightbox.d.ts +39 -0
- package/attachment/AttachmentImageLightbox.d.ts.map +1 -0
- package/attachment/AttachmentImageLightbox.js +57 -0
- package/attachment/AttachmentImageLightbox.js.map +1 -0
- package/attachment/attachment-utils.d.ts +11 -0
- package/attachment/attachment-utils.d.ts.map +1 -1
- package/attachment/attachment-utils.js +23 -0
- package/attachment/attachment-utils.js.map +1 -1
- package/attachment/clipboard.d.ts +51 -0
- package/attachment/clipboard.d.ts.map +1 -0
- package/attachment/clipboard.js +89 -0
- package/attachment/clipboard.js.map +1 -0
- package/attachment/index.d.ts +6 -1
- package/attachment/index.d.ts.map +1 -1
- package/attachment/index.js +4 -1
- package/attachment/index.js.map +1 -1
- package/attachment/prepare-image.d.ts +43 -0
- package/attachment/prepare-image.d.ts.map +1 -0
- package/attachment/prepare-image.js +162 -0
- package/attachment/prepare-image.js.map +1 -0
- package/attachment/useAttachments.d.ts.map +1 -1
- package/attachment/useAttachments.js +23 -3
- package/attachment/useAttachments.js.map +1 -1
- package/attachment/useObjectUrl.d.ts +15 -0
- package/attachment/useObjectUrl.d.ts.map +1 -0
- package/attachment/useObjectUrl.js +25 -0
- package/attachment/useObjectUrl.js.map +1 -0
- package/attachment/vision-fit.d.ts +50 -0
- package/attachment/vision-fit.d.ts.map +1 -0
- package/attachment/vision-fit.js +76 -0
- package/attachment/vision-fit.js.map +1 -0
- package/composer/SessionComposer.d.ts +3 -1
- package/composer/SessionComposer.d.ts.map +1 -1
- package/composer/SessionComposer.js +50 -4
- package/composer/SessionComposer.js.map +1 -1
- package/conversation/ConversationMediaAttachment.d.ts +45 -0
- package/conversation/ConversationMediaAttachment.d.ts.map +1 -0
- package/conversation/ConversationMediaAttachment.js +153 -0
- package/conversation/ConversationMediaAttachment.js.map +1 -0
- package/conversation/ConversationTimelineView.d.ts +18 -1
- package/conversation/ConversationTimelineView.d.ts.map +1 -1
- package/conversation/ConversationTimelineView.js +14 -5
- package/conversation/ConversationTimelineView.js.map +1 -1
- package/conversation/ConversationsWorkbench.d.ts.map +1 -1
- package/conversation/ConversationsWorkbench.js +1 -1
- package/conversation/ConversationsWorkbench.js.map +1 -1
- package/conversation/conversationPresentation.d.ts +10 -3
- package/conversation/conversationPresentation.d.ts.map +1 -1
- package/conversation/conversationPresentation.js +10 -3
- package/conversation/conversationPresentation.js.map +1 -1
- package/conversation/index.d.ts +2 -0
- package/conversation/index.d.ts.map +1 -1
- package/conversation/index.js +1 -0
- package/conversation/index.js.map +1 -1
- package/conversation/useConversationMediaUrl.d.ts +65 -0
- package/conversation/useConversationMediaUrl.d.ts.map +1 -0
- package/conversation/useConversationMediaUrl.js +61 -0
- package/conversation/useConversationMediaUrl.js.map +1 -0
- package/execution/MessageAttachments.d.ts +52 -0
- package/execution/MessageAttachments.d.ts.map +1 -0
- package/execution/MessageAttachments.js +142 -0
- package/execution/MessageAttachments.js.map +1 -0
- package/execution/MessageEntry.d.ts +18 -0
- package/execution/MessageEntry.d.ts.map +1 -1
- package/execution/MessageEntry.js +5 -4
- package/execution/MessageEntry.js.map +1 -1
- package/execution/MessageThread.d.ts +15 -2
- package/execution/MessageThread.d.ts.map +1 -1
- package/execution/MessageThread.js +24 -7
- package/execution/MessageThread.js.map +1 -1
- package/execution/index.d.ts +2 -0
- package/execution/index.d.ts.map +1 -1
- package/execution/index.js +1 -0
- package/execution/index.js.map +1 -1
- package/github/decodeGitHubContent.d.ts +10 -5
- package/github/decodeGitHubContent.d.ts.map +1 -1
- package/github/decodeGitHubContent.js +21 -7
- package/github/decodeGitHubContent.js.map +1 -1
- package/github/useGitHubFileReader.d.ts.map +1 -1
- package/github/useGitHubFileReader.js +5 -5
- package/github/useGitHubFileReader.js.map +1 -1
- package/index.d.ts +5 -5
- package/index.d.ts.map +1 -1
- package/index.js +5 -4
- package/index.js.map +1 -1
- package/internal/form-primitives.d.ts +13 -0
- package/internal/form-primitives.d.ts.map +1 -1
- package/internal/form-primitives.js +13 -0
- package/internal/form-primitives.js.map +1 -1
- package/package.json +4 -4
- package/session/SessionViewer.js +1 -1
- package/session/SessionViewer.js.map +1 -1
- package/session/useSessionConversation.d.ts +8 -0
- package/session/useSessionConversation.d.ts.map +1 -1
- package/session/useSessionConversation.js +12 -2
- package/session/useSessionConversation.js.map +1 -1
- package/src/attachment/AttachmentChipList.tsx +330 -40
- package/src/attachment/AttachmentImageLightbox.tsx +156 -0
- package/src/attachment/__tests__/AttachmentChipList.test.tsx +326 -0
- package/src/attachment/__tests__/attachment-utils.test.ts +54 -0
- package/src/attachment/__tests__/clipboard.test.ts +110 -0
- package/src/attachment/__tests__/prepare-image.browser.test.ts +166 -0
- package/src/attachment/__tests__/prepare-image.test.ts +32 -0
- package/src/attachment/__tests__/vision-fit.test.ts +93 -0
- package/src/attachment/attachment-utils.ts +27 -0
- package/src/attachment/clipboard.ts +102 -0
- package/src/attachment/index.ts +13 -0
- package/src/attachment/prepare-image.ts +179 -0
- package/src/attachment/useAttachments.ts +26 -2
- package/src/attachment/useObjectUrl.ts +28 -0
- package/src/attachment/vision-fit.ts +90 -0
- package/src/composer/SessionComposer.tsx +73 -4
- package/src/composer/__tests__/SessionComposer-paste.test.tsx +263 -0
- package/src/composer/__tests__/SessionComposer-uploadGate.test.tsx +239 -0
- package/src/conversation/ConversationMediaAttachment.tsx +308 -0
- package/src/conversation/ConversationTimelineView.tsx +60 -10
- package/src/conversation/ConversationsWorkbench.tsx +2 -0
- package/src/conversation/__tests__/ConversationTimelineView.test.tsx +233 -6
- package/src/conversation/__tests__/a11y/conversation-surfaces.a11y.test.tsx +67 -1
- package/src/conversation/__tests__/useConversationMediaUrl.test.tsx +66 -0
- package/src/conversation/conversationPresentation.ts +10 -3
- package/src/conversation/index.ts +6 -0
- package/src/conversation/useConversationMediaUrl.ts +121 -0
- package/src/execution/MessageAttachments.tsx +364 -0
- package/src/execution/MessageEntry.tsx +38 -0
- package/src/execution/MessageThread.tsx +44 -4
- package/src/execution/__tests__/MessageEntry-attachments.test.tsx +228 -0
- package/src/execution/__tests__/buildThreadItems-attachments.test.ts +174 -0
- package/src/execution/index.ts +6 -0
- package/src/github/__tests__/decodeGitHubContent.test.ts +42 -1
- package/src/github/decodeGitHubContent.ts +22 -5
- package/src/github/useGitHubFileReader.ts +13 -3
- package/src/index.ts +16 -1
- package/src/internal/form-primitives.tsx +14 -0
- package/src/session/SessionViewer.tsx +1 -0
- package/src/session/__tests__/useSessionConversation.test.tsx +62 -0
- package/src/session/useSessionConversation.ts +21 -2
- package/src/workspace/FileViewer.tsx +109 -0
- package/src/workspace/WorkspaceFileReader.ts +55 -1
- package/src/workspace/__tests__/FileViewer.test.tsx +98 -0
- package/src/workspace/index.ts +2 -0
- package/styles.css +1 -1
- package/workspace/FileViewer.d.ts.map +1 -1
- package/workspace/FileViewer.js +40 -2
- package/workspace/FileViewer.js.map +1 -1
- package/workspace/WorkspaceFileReader.d.ts +29 -1
- package/workspace/WorkspaceFileReader.d.ts.map +1 -1
- package/workspace/WorkspaceFileReader.js +42 -0
- package/workspace/WorkspaceFileReader.js.map +1 -1
- package/workspace/index.d.ts +1 -1
- package/workspace/index.d.ts.map +1 -1
- package/workspace/index.js +1 -1
- package/workspace/index.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConversationsWorkbench.d.ts","sourceRoot":"","sources":["../../src/conversation/ConversationsWorkbench.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2DAA2D,CAAC;AAY9F,OAAO,EAAwB,KAAK,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAa5F;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;CACvC;AAED,gDAAgD;AAChD,MAAM,WAAW,2BAA2B;IAC1C,gDAAgD;IAChD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC/C,2DAA2D;IAC3D,QAAQ,CAAC,iBAAiB,EAAE,CAAC,SAAS,EAAE,oBAAoB,GAAG,IAAI,KAAK,IAAI,CAAC;IAC7E;;;OAGG;IACH,QAAQ,CAAC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAC3C;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,CAAC,EACrB,KAAK,CAAC,SAAS,GACf,CAAC,CAAC,OAAO,EAAE,yBAAyB,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;IAC9D;;;;;;OAMG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,MAAM,GAAG,IAAI,CAAC;IAChE,2EAA2E;IAC3E,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;IACpB,sDAAsD;IACtD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,GAAG,EACH,QAAQ,EACR,iBAAiB,EACjB,wBAAwB,EACxB,eAAe,EACf,WAAW,EACX,GAAG,EACH,SAAS,GACV,EAAE,2BAA2B,
|
|
1
|
+
{"version":3,"file":"ConversationsWorkbench.d.ts","sourceRoot":"","sources":["../../src/conversation/ConversationsWorkbench.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2DAA2D,CAAC;AAY9F,OAAO,EAAwB,KAAK,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAa5F;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;CACvC;AAED,gDAAgD;AAChD,MAAM,WAAW,2BAA2B;IAC1C,gDAAgD;IAChD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC/C,2DAA2D;IAC3D,QAAQ,CAAC,iBAAiB,EAAE,CAAC,SAAS,EAAE,oBAAoB,GAAG,IAAI,KAAK,IAAI,CAAC;IAC7E;;;OAGG;IACH,QAAQ,CAAC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAC3C;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,CAAC,EACrB,KAAK,CAAC,SAAS,GACf,CAAC,CAAC,OAAO,EAAE,yBAAyB,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;IAC9D;;;;;;OAMG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,MAAM,GAAG,IAAI,CAAC;IAChE,2EAA2E;IAC3E,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;IACpB,sDAAsD;IACtD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,GAAG,EACH,QAAQ,EACR,iBAAiB,EACjB,wBAAwB,EACxB,eAAe,EACf,WAAW,EACX,GAAG,EACH,SAAS,GACV,EAAE,2BAA2B,2CAqR7B"}
|
|
@@ -160,6 +160,6 @@ export function ConversationsWorkbench({ org, selected, onSelectionChange, curre
|
|
|
160
160
|
// The path from a conversation to its channel (F-11):
|
|
161
161
|
// the channel name links to the host's channel surface
|
|
162
162
|
// when a route exists.
|
|
163
|
-
(selectedChannelHref ? (_jsx("a", { href: selectedChannelHref, className: "hover:text-foreground hover:underline", children: channelName })) : (channelName))] }))] }), headerAccessoryNode] }), detail.conversation && (_jsx(ConversationAttentionBanner, { conversation: detail.conversation, participation: participation })), detail.conversation && (_jsx(ConversationControlBanner, { conversation: detail.conversation, participation: participation, unansweredCustomer: unansweredCustomer, supportsStaffReplies: descriptor?.supportsStaffReplies ?? true, currentIdentityAccountId: currentIdentityAccountId })), _jsx(ConversationTimelineView, { items: timeline.items, isLoading: timeline.isLoading, error: timeline.error, hasOlder: timeline.hasOlder, loadOlder: timeline.loadOlder, isLoadingOlder: timeline.isLoadingOlder, provider: descriptor?.id ?? null, now: now }), _jsx(ConversationComposer, { onSend: handleSend, isSending: participation.pendingCommands.has("reply") || settlingItemId !== null, disabledReason: composerDisabledReason, advisory: composerAdvisory })] }, `${selected.agentChannelId}:${selected.conversationKey}`))] }));
|
|
163
|
+
(selectedChannelHref ? (_jsx("a", { href: selectedChannelHref, className: "hover:text-foreground hover:underline", children: channelName })) : (channelName))] }))] }), headerAccessoryNode] }), detail.conversation && (_jsx(ConversationAttentionBanner, { conversation: detail.conversation, participation: participation })), detail.conversation && (_jsx(ConversationControlBanner, { conversation: detail.conversation, participation: participation, unansweredCustomer: unansweredCustomer, supportsStaffReplies: descriptor?.supportsStaffReplies ?? true, currentIdentityAccountId: currentIdentityAccountId })), _jsx(ConversationTimelineView, { items: timeline.items, agentChannelId: selected.agentChannelId, conversationKey: selected.conversationKey, isLoading: timeline.isLoading, error: timeline.error, hasOlder: timeline.hasOlder, loadOlder: timeline.loadOlder, isLoadingOlder: timeline.isLoadingOlder, provider: descriptor?.id ?? null, now: now }), _jsx(ConversationComposer, { onSend: handleSend, isSending: participation.pendingCommands.has("reply") || settlingItemId !== null, disabledReason: composerDisabledReason, advisory: composerAdvisory })] }, `${selected.agentChannelId}:${selected.conversationKey}`))] }));
|
|
164
164
|
}
|
|
165
165
|
//# sourceMappingURL=ConversationsWorkbench.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConversationsWorkbench.js","sourceRoot":"","sources":["../../src/conversation/ConversationsWorkbench.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ConversationsWorkbench.js","sourceRoot":"","sources":["../../src/conversation/ConversationsWorkbench.tsx"],"names":[],"mappings":"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"}
|
|
@@ -37,9 +37,16 @@ export type ReceiptKind = "sent" | "delivered" | "read" | "failed";
|
|
|
37
37
|
export declare function receiptOf(item: ConversationTimelineItem): ReceiptKind | null;
|
|
38
38
|
/**
|
|
39
39
|
* Placeholder copy for inbound items whose body the platform cannot
|
|
40
|
-
* render (`text` empty, `provider_message_type` names the kind)
|
|
41
|
-
*
|
|
42
|
-
*
|
|
40
|
+
* render (`text` empty, `provider_message_type` names the kind) — the
|
|
41
|
+
* placeholder tells staff something arrived and what shape it was.
|
|
42
|
+
*
|
|
43
|
+
* Since stigmer/stigmer#367 this is the FALLBACK arm of the media
|
|
44
|
+
* treatment, not the whole of it: items carrying ingested `media`
|
|
45
|
+
* render the real thing (thumbnail or document chip) when the timeline
|
|
46
|
+
* view holds the conversation address. The placeholder still covers
|
|
47
|
+
* media the platform declined to ingest (disallowed type, over the size
|
|
48
|
+
* cap — `media` unset by design) and renders without an address, where
|
|
49
|
+
* the bytes are unreachable.
|
|
43
50
|
*
|
|
44
51
|
* Returns `null` when the item needs no placeholder (it has text, or it
|
|
45
52
|
* is not a provider-typed inbound item — e.g. an attention-clear event,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversationPresentation.d.ts","sourceRoot":"","sources":["../../src/conversation/conversationPresentation.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,mBAAmB,EAIxB,KAAK,wBAAwB,EAC9B,MAAM,uEAAuE,CAAC;AAG/E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE;;;;;GAKG;AAEH,0DAA0D;AAC1D,MAAM,MAAM,sBAAsB,GAC9B,UAAU,GACV,OAAO,GACP,UAAU,GACV,UAAU,GACV,SAAS,CAAC;AAEd,sDAAsD;AACtD,wBAAgB,YAAY,CAAC,IAAI,EAAE,wBAAwB,GAAG,sBAAsB,CAanF;AAED,0EAA0E;AAC1E,wBAAgB,cAAc,CAAC,IAAI,EAAE,wBAAwB,GAAG,OAAO,CAEtE;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,eAAe,GACvB,SAAS,GACT,YAAY,GACZ,WAAW,GACX,QAAQ,GACR,YAAY,CAAC;AAEjB,+DAA+D;AAC/D,wBAAgB,aAAa,CAAC,IAAI,EAAE,wBAAwB,GAAG,eAAe,GAAG,IAAI,CAepF;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEnE,6DAA6D;AAC7D,wBAAgB,SAAS,CAAC,IAAI,EAAE,wBAAwB,GAAG,WAAW,GAAG,IAAI,CAa5E;AAED
|
|
1
|
+
{"version":3,"file":"conversationPresentation.d.ts","sourceRoot":"","sources":["../../src/conversation/conversationPresentation.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,mBAAmB,EAIxB,KAAK,wBAAwB,EAC9B,MAAM,uEAAuE,CAAC;AAG/E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE;;;;;GAKG;AAEH,0DAA0D;AAC1D,MAAM,MAAM,sBAAsB,GAC9B,UAAU,GACV,OAAO,GACP,UAAU,GACV,UAAU,GACV,SAAS,CAAC;AAEd,sDAAsD;AACtD,wBAAgB,YAAY,CAAC,IAAI,EAAE,wBAAwB,GAAG,sBAAsB,CAanF;AAED,0EAA0E;AAC1E,wBAAgB,cAAc,CAAC,IAAI,EAAE,wBAAwB,GAAG,OAAO,CAEtE;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,eAAe,GACvB,SAAS,GACT,YAAY,GACZ,WAAW,GACX,QAAQ,GACR,YAAY,CAAC;AAEjB,+DAA+D;AAC/D,wBAAgB,aAAa,CAAC,IAAI,EAAE,wBAAwB,GAAG,eAAe,GAAG,IAAI,CAepF;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEnE,6DAA6D;AAC7D,wBAAgB,SAAS,CAAC,IAAI,EAAE,wBAAwB,GAAG,WAAW,GAAG,IAAI,CAa5E;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,wBAAwB,GAAG,MAAM,GAAG,IAAI,CAwBlF;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,mBAAmB,EACjC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,GACjC,MAAM,CAIR;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,mBAAmB,EACjC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,GACjC,MAAM,GAAG,IAAI,CAIf;AAYD,yDAAyD;AACzD,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEnD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,eAAe,CAC7B,YAAY,EAAE,mBAAmB,EACjC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,EAClC,GAAG,EAAE,IAAI,GACR,kBAAkB,GAAG,IAAI,CAM3B;AAED;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEnD;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,mBAAmB,GAChC,iBAAiB,GAAG,IAAI,CAK1B;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAElE;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,CAC7C,CAAC,EAAE,wBAAwB,EAC3B,CAAC,EAAE,wBAAwB,GAC1B,MAAM,CAIR"}
|
|
@@ -55,9 +55,16 @@ export function receiptOf(item) {
|
|
|
55
55
|
}
|
|
56
56
|
/**
|
|
57
57
|
* Placeholder copy for inbound items whose body the platform cannot
|
|
58
|
-
* render (`text` empty, `provider_message_type` names the kind)
|
|
59
|
-
*
|
|
60
|
-
*
|
|
58
|
+
* render (`text` empty, `provider_message_type` names the kind) — the
|
|
59
|
+
* placeholder tells staff something arrived and what shape it was.
|
|
60
|
+
*
|
|
61
|
+
* Since stigmer/stigmer#367 this is the FALLBACK arm of the media
|
|
62
|
+
* treatment, not the whole of it: items carrying ingested `media`
|
|
63
|
+
* render the real thing (thumbnail or document chip) when the timeline
|
|
64
|
+
* view holds the conversation address. The placeholder still covers
|
|
65
|
+
* media the platform declined to ingest (disallowed type, over the size
|
|
66
|
+
* cap — `media` unset by design) and renders without an address, where
|
|
67
|
+
* the bytes are unreachable.
|
|
61
68
|
*
|
|
62
69
|
* Returns `null` when the item needs no placeholder (it has text, or it
|
|
63
70
|
* is not a provider-typed inbound item — e.g. an attention-clear event,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversationPresentation.js","sourceRoot":"","sources":["../../src/conversation/conversationPresentation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAkB,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAEL,mBAAmB,EACnB,sBAAsB,EACtB,gBAAgB,GAEjB,MAAM,uEAAuE,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,gEAAgE,CAAC;AACvG,OAAO,EAAE,mBAAmB,EAAE,MAAM,gEAAgE,CAAC;AAkBrG,sDAAsD;AACtD,MAAM,UAAU,YAAY,CAAC,IAA8B;IACzD,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;QACpB,KAAK,sBAAsB,CAAC,eAAe;YACzC,OAAO,UAAU,CAAC;QACpB,KAAK,sBAAsB,CAAC,YAAY;YACtC,OAAO,OAAO,CAAC;QACjB,KAAK,sBAAsB,CAAC,eAAe;YACzC,OAAO,UAAU,CAAC;QACpB,KAAK,sBAAsB,CAAC,eAAe;YACzC,OAAO,UAAU,CAAC;QACpB;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,cAAc,CAAC,IAA8B;IAC3D,OAAO,IAAI,CAAC,IAAI,KAAK,gBAAgB,CAAC,aAAa,CAAC;AACtD,CAAC;AAiBD,+DAA+D;AAC/D,MAAM,UAAU,aAAa,CAAC,IAA8B;IAC1D,QAAQ,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5B,KAAK,qBAAqB,CAAC,OAAO;YAChC,OAAO,SAAS,CAAC;QACnB,KAAK,qBAAqB,CAAC,UAAU;YACnC,OAAO,YAAY,CAAC;QACtB,KAAK,qBAAqB,CAAC,SAAS;YAClC,OAAO,WAAW,CAAC;QACrB,KAAK,qBAAqB,CAAC,MAAM;YAC/B,OAAO,QAAQ,CAAC;QAClB,KAAK,qBAAqB,CAAC,UAAU;YACnC,OAAO,YAAY,CAAC;QACtB;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAaD,6DAA6D;AAC7D,MAAM,UAAU,SAAS,CAAC,IAA8B;IACtD,QAAQ,IAAI,CAAC,YAAY,EAAE,CAAC;QAC1B,KAAK,mBAAmB,CAAC,YAAY;YACnC,OAAO,MAAM,CAAC;QAChB,KAAK,mBAAmB,CAAC,iBAAiB;YACxC,OAAO,WAAW,CAAC;QACrB,KAAK,mBAAmB,CAAC,YAAY;YACnC,OAAO,MAAM,CAAC;QAChB,KAAK,mBAAmB,CAAC,cAAc;YACrC,OAAO,QAAQ,CAAC;QAClB;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"conversationPresentation.js","sourceRoot":"","sources":["../../src/conversation/conversationPresentation.ts"],"names":[],"mappings":"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"}
|
package/conversation/index.d.ts
CHANGED
|
@@ -16,6 +16,8 @@ export { useConversationList } from "./useConversationList.js";
|
|
|
16
16
|
export type { UseConversationListOptions, UseConversationListReturn, } from "./useConversationList.js";
|
|
17
17
|
export { useConversationTimeline } from "./useConversationTimeline.js";
|
|
18
18
|
export type { UseConversationTimelineOptions, UseConversationTimelineReturn, } from "./useConversationTimeline.js";
|
|
19
|
+
export { useConversationMediaUrl } from "./useConversationMediaUrl.js";
|
|
20
|
+
export type { UseConversationMediaUrlOptions, UseConversationMediaUrlReturn, } from "./useConversationMediaUrl.js";
|
|
19
21
|
export { useConversationParticipation } from "./useConversationParticipation.js";
|
|
20
22
|
export type { ConversationCommand, UseConversationParticipationOptions, UseConversationParticipationReturn, } from "./useConversationParticipation.js";
|
|
21
23
|
export { useConversationsWantsHumanCount } from "./useConversationsWantsHumanCount.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/conversation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,YAAY,EACV,yBAAyB,EACzB,2BAA2B,GAC5B,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,YAAY,EACV,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,YAAY,EAAE,6BAA6B,EAAE,MAAM,+BAA+B,CAAC;AAEnF,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,YAAY,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAC;AAErF,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,YAAY,EAAE,gCAAgC,EAAE,MAAM,kCAAkC,CAAC;AAEzF,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,YAAY,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAE3E,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EACV,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,YAAY,EACV,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,YAAY,EACV,8BAA8B,EAC9B,6BAA6B,GAC9B,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,YAAY,EACV,mBAAmB,EACnB,mCAAmC,EACnC,kCAAkC,GACnC,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AACvF,YAAY,EACV,sCAAsC,EACtC,qCAAqC,GACtC,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,+BAA+B,EAC/B,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,SAAS,EACT,aAAa,EACb,eAAe,GAChB,MAAM,+BAA+B,CAAC;AACvC,YAAY,EACV,iBAAiB,EACjB,sBAAsB,EACtB,WAAW,EACX,eAAe,EACf,kBAAkB,GACnB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,mCAAmC,EACnC,oCAAoC,EACpC,kCAAkC,GACnC,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/conversation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,YAAY,EACV,yBAAyB,EACzB,2BAA2B,GAC5B,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,YAAY,EACV,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,YAAY,EAAE,6BAA6B,EAAE,MAAM,+BAA+B,CAAC;AAEnF,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,YAAY,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAC;AAErF,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,YAAY,EAAE,gCAAgC,EAAE,MAAM,kCAAkC,CAAC;AAEzF,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,YAAY,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAE3E,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EACV,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,YAAY,EACV,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,YAAY,EACV,8BAA8B,EAC9B,6BAA6B,GAC9B,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,YAAY,EACV,8BAA8B,EAC9B,6BAA6B,GAC9B,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,YAAY,EACV,mBAAmB,EACnB,mCAAmC,EACnC,kCAAkC,GACnC,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AACvF,YAAY,EACV,sCAAsC,EACtC,qCAAqC,GACtC,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,+BAA+B,EAC/B,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,SAAS,EACT,aAAa,EACb,eAAe,GAChB,MAAM,+BAA+B,CAAC;AACvC,YAAY,EACV,iBAAiB,EACjB,sBAAsB,EACtB,WAAW,EACX,eAAe,EACf,kBAAkB,GACnB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,mCAAmC,EACnC,oCAAoC,EACpC,kCAAkC,GACnC,MAAM,cAAc,CAAC"}
|
package/conversation/index.js
CHANGED
|
@@ -7,6 +7,7 @@ export { ConversationComposer } from "./ConversationComposer.js";
|
|
|
7
7
|
export { useConversation } from "./useConversation.js";
|
|
8
8
|
export { useConversationList } from "./useConversationList.js";
|
|
9
9
|
export { useConversationTimeline } from "./useConversationTimeline.js";
|
|
10
|
+
export { useConversationMediaUrl } from "./useConversationMediaUrl.js";
|
|
10
11
|
export { useConversationParticipation } from "./useConversationParticipation.js";
|
|
11
12
|
export { useConversationsWantsHumanCount } from "./useConversationsWantsHumanCount.js";
|
|
12
13
|
export { authorKindOf, awaitingIndicatorOf, compareTimelineItemsNewestFirst, conversationContactOf, conversationLabelOf, inboundPlaceholderOf, isInternalItem, receiptOf, sendAttemptOf, serviceWindowOf, } from "./conversationPresentation.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/conversation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAMrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAMjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAGzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAG3E,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAG/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAGjE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAMvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAM/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAMvE,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAOjF,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AAMvF,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,+BAA+B,EAC/B,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,SAAS,EACT,aAAa,EACb,eAAe,GAChB,MAAM,+BAA+B,CAAC;AASvC,OAAO,EACL,mCAAmC,EACnC,oCAAoC,EACpC,kCAAkC,GACnC,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/conversation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAMrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAMjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAGzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAG3E,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAG/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAGjE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAMvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAM/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAMvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAMvE,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAOjF,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AAMvF,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,+BAA+B,EAC/B,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,SAAS,EACT,aAAa,EACb,eAAe,GAChB,MAAM,+BAA+B,CAAC;AASvC,OAAO,EACL,mCAAmC,EACnC,oCAAoC,EACpC,kCAAkC,GACnC,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/** Return value of {@link useConversationMediaUrl}. */
|
|
2
|
+
export interface UseConversationMediaUrlReturn {
|
|
3
|
+
/**
|
|
4
|
+
* A freshly minted presigned download URL for the timeline item's media,
|
|
5
|
+
* or `null` when:
|
|
6
|
+
* - Fetching is skipped (`enabled` is `false`, or any address part is empty)
|
|
7
|
+
* - The request is in-flight
|
|
8
|
+
* - The request failed (including the server's uniform NOT_FOUND for
|
|
9
|
+
* items without ingested media)
|
|
10
|
+
*/
|
|
11
|
+
readonly url: string | null;
|
|
12
|
+
/** `true` while the URL request is in-flight (first load). */
|
|
13
|
+
readonly isLoading: boolean;
|
|
14
|
+
/** `true` while a background refetch is in flight. */
|
|
15
|
+
readonly isRefetching: boolean;
|
|
16
|
+
/** Error from the last failed attempt, or `null` when healthy. */
|
|
17
|
+
readonly error: Error | null;
|
|
18
|
+
/** Re-fetch the URL (e.g. to mint a fresh one after the previous expired). */
|
|
19
|
+
readonly refetch: () => void;
|
|
20
|
+
}
|
|
21
|
+
/** Options for {@link useConversationMediaUrl}. */
|
|
22
|
+
export interface UseConversationMediaUrlOptions {
|
|
23
|
+
/**
|
|
24
|
+
* Gate the request. When `false`, the hook stays idle and returns `null` —
|
|
25
|
+
* use this to defer minting a URL until it is actually needed.
|
|
26
|
+
* Defaults to `true`.
|
|
27
|
+
*/
|
|
28
|
+
readonly enabled?: boolean;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Data hook that resolves a **fresh** presigned download URL for one
|
|
32
|
+
* timeline item's ingested media (an image or document the customer sent)
|
|
33
|
+
* via `stigmer.agentChannel.getMediaDownloadUrl()`.
|
|
34
|
+
*
|
|
35
|
+
* Addressed by `(channel, conversation, item_id)` — never a storage key:
|
|
36
|
+
* the server resolves the blob from its own row, so the read path stays
|
|
37
|
+
* conversation-viewer-scoped by construction and blob capabilities never
|
|
38
|
+
* ride the wire (whatsapp-media DD-001 D4). The URL expires (about an
|
|
39
|
+
* hour); minting at view time keeps it always valid, the
|
|
40
|
+
* `useArtifactDownloadUrl` rationale.
|
|
41
|
+
*
|
|
42
|
+
* The URL is cached cross-mount by the item's full address (DD-014), so
|
|
43
|
+
* the 5s timeline poll's re-renders and a lightbox opened from a
|
|
44
|
+
* thumbnail reuse the minted URL instead of re-hitting the API.
|
|
45
|
+
*
|
|
46
|
+
* Pass empty strings (or `enabled: false`) to skip fetching — the
|
|
47
|
+
* conversation surface's established skip convention.
|
|
48
|
+
*
|
|
49
|
+
* @param agentChannelId - AgentChannel the conversation belongs to, or `""` to skip.
|
|
50
|
+
* @param conversationKey - Conversation key within the channel, or `""` to skip.
|
|
51
|
+
* @param itemId - The timeline item whose media to fetch (e.g. `"wa:<wamid>"`), or `""` to skip.
|
|
52
|
+
* @param options - Optional gating (`enabled`).
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```tsx
|
|
56
|
+
* // Render an inbound photo with an always-fresh URL.
|
|
57
|
+
* const { url, isLoading } = useConversationMediaUrl(channelId, key, item.itemId);
|
|
58
|
+
* if (isLoading) return <Skeleton />;
|
|
59
|
+
* return url ? <img src={url} alt={item.media?.filename} /> : null;
|
|
60
|
+
* ```
|
|
61
|
+
*
|
|
62
|
+
* @see useArtifactDownloadUrl — the execution-artifact counterpart this mirrors
|
|
63
|
+
*/
|
|
64
|
+
export declare function useConversationMediaUrl(agentChannelId: string, conversationKey: string, itemId: string, options?: UseConversationMediaUrlOptions): UseConversationMediaUrlReturn;
|
|
65
|
+
//# sourceMappingURL=useConversationMediaUrl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useConversationMediaUrl.d.ts","sourceRoot":"","sources":["../../src/conversation/useConversationMediaUrl.ts"],"names":[],"mappings":"AAQA,uDAAuD;AACvD,MAAM,WAAW,6BAA6B;IAC5C;;;;;;;OAOG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAE5B,8DAA8D;IAC9D,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAE5B,sDAAsD;IACtD,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAE/B,kEAAkE;IAClE,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAE7B,8EAA8E;IAC9E,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B;AAQD,mDAAmD;AACnD,MAAM,WAAW,8BAA8B;IAC7C;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,uBAAuB,CACrC,cAAc,EAAE,MAAM,EACtB,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,8BAA8B,GACvC,6BAA6B,CAgC/B"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useMemo } from "react";
|
|
3
|
+
import { create } from "@bufbuild/protobuf";
|
|
4
|
+
import { GetConversationMediaDownloadUrlInputSchema } from "@stigmer/protos/ai/stigmer/agentic/agentchannel/v1/conversation_io_pb";
|
|
5
|
+
import { useStigmer } from "../hooks.js";
|
|
6
|
+
import { useFetch } from "../internal/useFetch.js";
|
|
7
|
+
const EMPTY = { url: null };
|
|
8
|
+
/**
|
|
9
|
+
* Data hook that resolves a **fresh** presigned download URL for one
|
|
10
|
+
* timeline item's ingested media (an image or document the customer sent)
|
|
11
|
+
* via `stigmer.agentChannel.getMediaDownloadUrl()`.
|
|
12
|
+
*
|
|
13
|
+
* Addressed by `(channel, conversation, item_id)` — never a storage key:
|
|
14
|
+
* the server resolves the blob from its own row, so the read path stays
|
|
15
|
+
* conversation-viewer-scoped by construction and blob capabilities never
|
|
16
|
+
* ride the wire (whatsapp-media DD-001 D4). The URL expires (about an
|
|
17
|
+
* hour); minting at view time keeps it always valid, the
|
|
18
|
+
* `useArtifactDownloadUrl` rationale.
|
|
19
|
+
*
|
|
20
|
+
* The URL is cached cross-mount by the item's full address (DD-014), so
|
|
21
|
+
* the 5s timeline poll's re-renders and a lightbox opened from a
|
|
22
|
+
* thumbnail reuse the minted URL instead of re-hitting the API.
|
|
23
|
+
*
|
|
24
|
+
* Pass empty strings (or `enabled: false`) to skip fetching — the
|
|
25
|
+
* conversation surface's established skip convention.
|
|
26
|
+
*
|
|
27
|
+
* @param agentChannelId - AgentChannel the conversation belongs to, or `""` to skip.
|
|
28
|
+
* @param conversationKey - Conversation key within the channel, or `""` to skip.
|
|
29
|
+
* @param itemId - The timeline item whose media to fetch (e.g. `"wa:<wamid>"`), or `""` to skip.
|
|
30
|
+
* @param options - Optional gating (`enabled`).
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```tsx
|
|
34
|
+
* // Render an inbound photo with an always-fresh URL.
|
|
35
|
+
* const { url, isLoading } = useConversationMediaUrl(channelId, key, item.itemId);
|
|
36
|
+
* if (isLoading) return <Skeleton />;
|
|
37
|
+
* return url ? <img src={url} alt={item.media?.filename} /> : null;
|
|
38
|
+
* ```
|
|
39
|
+
*
|
|
40
|
+
* @see useArtifactDownloadUrl — the execution-artifact counterpart this mirrors
|
|
41
|
+
*/
|
|
42
|
+
export function useConversationMediaUrl(agentChannelId, conversationKey, itemId, options) {
|
|
43
|
+
const stigmer = useStigmer();
|
|
44
|
+
const enabled = options?.enabled ?? true;
|
|
45
|
+
const active = enabled && agentChannelId !== "" && conversationKey !== "" && itemId !== "";
|
|
46
|
+
const { data, isLoading, isRefetching, error, refetch } = useFetch(active
|
|
47
|
+
? () => stigmer.agentChannel
|
|
48
|
+
.getMediaDownloadUrl(create(GetConversationMediaDownloadUrlInputSchema, {
|
|
49
|
+
agentChannelId,
|
|
50
|
+
conversationKey,
|
|
51
|
+
itemId,
|
|
52
|
+
}))
|
|
53
|
+
.then((result) => ({ url: result.url || null }))
|
|
54
|
+
: null, [agentChannelId, conversationKey, itemId, active, stigmer], EMPTY, {
|
|
55
|
+
cacheKey: active
|
|
56
|
+
? `conversation-media-url:${agentChannelId}:${conversationKey}:${itemId}`
|
|
57
|
+
: undefined,
|
|
58
|
+
});
|
|
59
|
+
return useMemo(() => ({ url: data.url, isLoading, isRefetching, error, refetch }), [data.url, isLoading, isRefetching, error, refetch]);
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=useConversationMediaUrl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useConversationMediaUrl.js","sourceRoot":"","sources":["../../src/conversation/useConversationMediaUrl.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,0CAA0C,EAAE,MAAM,uEAAuE,CAAC;AACnI,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AA+BnD,MAAM,KAAK,GAAY,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AAYrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,UAAU,uBAAuB,CACrC,cAAsB,EACtB,eAAuB,EACvB,MAAc,EACd,OAAwC;IAExC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC;IACzC,MAAM,MAAM,GACV,OAAO,IAAI,cAAc,KAAK,EAAE,IAAI,eAAe,KAAK,EAAE,IAAI,MAAM,KAAK,EAAE,CAAC;IAE9E,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,QAAQ,CAChE,MAAM;QACJ,CAAC,CAAC,GAAG,EAAE,CACH,OAAO,CAAC,YAAY;aACjB,mBAAmB,CAClB,MAAM,CAAC,0CAA0C,EAAE;YACjD,cAAc;YACd,eAAe;YACf,MAAM;SACP,CAAC,CACH;aACA,IAAI,CAAC,CAAC,MAAM,EAAW,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC,CAAC;QAC/D,CAAC,CAAC,IAAI,EACR,CAAC,cAAc,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAC1D,KAAK,EACL;QACE,QAAQ,EAAE,MAAM;YACd,CAAC,CAAC,0BAA0B,cAAc,IAAI,eAAe,IAAI,MAAM,EAAE;YACzE,CAAC,CAAC,SAAS;KACd,CACF,CAAC;IAEF,OAAO,OAAO,CACZ,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAClE,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,CAAC,CACpD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The minimal display shape of a submitted attachment.
|
|
3
|
+
*
|
|
4
|
+
* Structurally satisfied by BOTH sources a human turn can carry — the
|
|
5
|
+
* `Attachment` proto on a persisted execution's `spec.attachments` and the
|
|
6
|
+
* `AttachmentInput` a just-submitted (pending) turn holds — so the thread
|
|
7
|
+
* renders either without conversion code or a duplicated type (DD-007).
|
|
8
|
+
*/
|
|
9
|
+
export interface MessageAttachmentView {
|
|
10
|
+
/** Original filename, e.g. `"screenshot.png"`. */
|
|
11
|
+
readonly filename?: string;
|
|
12
|
+
/** MIME type, e.g. `"image/png"`. Drives the image-vs-document treatment. */
|
|
13
|
+
readonly contentType?: string;
|
|
14
|
+
/** Storage key (`attachments/{ulid}/{filename}`) minted at upload time. */
|
|
15
|
+
readonly storageKey?: string;
|
|
16
|
+
}
|
|
17
|
+
/** Props for {@link MessageAttachments}. */
|
|
18
|
+
export interface MessageAttachmentsProps {
|
|
19
|
+
/** The turn's submitted attachments, in submission order. */
|
|
20
|
+
readonly attachments: readonly MessageAttachmentView[];
|
|
21
|
+
/**
|
|
22
|
+
* The execution the attachments were submitted to. Enables the byte-backed
|
|
23
|
+
* affordances — image previews (presigned URL) and document downloads.
|
|
24
|
+
* Omit for the optimistic pending bubble (no execution record yet) and the
|
|
25
|
+
* failed-send bubble (no record ever): images render as inert glyph tiles
|
|
26
|
+
* and documents as inert chips until a real turn brings the presign seam.
|
|
27
|
+
*/
|
|
28
|
+
readonly executionId?: string;
|
|
29
|
+
/** Additional CSS class names for the row container. */
|
|
30
|
+
readonly className?: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* The attachment row on a human turn: the durable evidence of what files were
|
|
34
|
+
* sent with the message (stigmer/stigmer#372).
|
|
35
|
+
*
|
|
36
|
+
* Image attachments render as preview-only thumbnail tiles — the image IS the
|
|
37
|
+
* chip, no filename text (the name stays in the tooltip, the accessible
|
|
38
|
+
* label, and the lightbox header), click-to-open in the shared
|
|
39
|
+
* {@link AttachmentImageLightbox} — and documents as compact click-to-download
|
|
40
|
+
* filename chips. Both follow the composer chip grammar
|
|
41
|
+
* ({@link AttachmentChipList}) so a file looks the same before and after
|
|
42
|
+
* send, but this is deliberately a separate component: the composer chip is
|
|
43
|
+
* interactive and upload-phase-bound over a local `File`, while this row is
|
|
44
|
+
* read-only over the execution record, with bytes resolved on demand from
|
|
45
|
+
* the stable storage key via presigned URLs (the `OutputRefImage` pattern —
|
|
46
|
+
* the local `File` is gone after submit).
|
|
47
|
+
*
|
|
48
|
+
* Purely presentational plus on-demand URL minting — no required wiring.
|
|
49
|
+
* All visual properties flow through `--stgm-*` tokens.
|
|
50
|
+
*/
|
|
51
|
+
export declare function MessageAttachments({ attachments, executionId, className, }: MessageAttachmentsProps): import("react/jsx-runtime").JSX.Element | null;
|
|
52
|
+
//# sourceMappingURL=MessageAttachments.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MessageAttachments.d.ts","sourceRoot":"","sources":["../../src/execution/MessageAttachments.tsx"],"names":[],"mappings":"AASA;;;;;;;GAOG;AACH,MAAM,WAAW,qBAAqB;IACpC,kDAAkD;IAClD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,6EAA6E;IAC7E,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,2EAA2E;IAC3E,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,4CAA4C;AAC5C,MAAM,WAAW,uBAAuB;IACtC,6DAA6D;IAC7D,QAAQ,CAAC,WAAW,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACvD;;;;;;OAMG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,wDAAwD;IACxD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,WAAW,EACX,WAAW,EACX,SAAS,GACV,EAAE,uBAAuB,kDAgEzB"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useState } from "react";
|
|
4
|
+
import { cn } from "@stigmer/theme";
|
|
5
|
+
import { AttachmentImageLightbox } from "../attachment/AttachmentImageLightbox.js";
|
|
6
|
+
import { UNSTYLED_BUTTON } from "../internal/form-primitives.js";
|
|
7
|
+
import { useArtifactDownload } from "./useArtifactDownload.js";
|
|
8
|
+
import { useArtifactDownloadUrl } from "./useArtifactDownloadUrl.js";
|
|
9
|
+
/**
|
|
10
|
+
* The attachment row on a human turn: the durable evidence of what files were
|
|
11
|
+
* sent with the message (stigmer/stigmer#372).
|
|
12
|
+
*
|
|
13
|
+
* Image attachments render as preview-only thumbnail tiles — the image IS the
|
|
14
|
+
* chip, no filename text (the name stays in the tooltip, the accessible
|
|
15
|
+
* label, and the lightbox header), click-to-open in the shared
|
|
16
|
+
* {@link AttachmentImageLightbox} — and documents as compact click-to-download
|
|
17
|
+
* filename chips. Both follow the composer chip grammar
|
|
18
|
+
* ({@link AttachmentChipList}) so a file looks the same before and after
|
|
19
|
+
* send, but this is deliberately a separate component: the composer chip is
|
|
20
|
+
* interactive and upload-phase-bound over a local `File`, while this row is
|
|
21
|
+
* read-only over the execution record, with bytes resolved on demand from
|
|
22
|
+
* the stable storage key via presigned URLs (the `OutputRefImage` pattern —
|
|
23
|
+
* the local `File` is gone after submit).
|
|
24
|
+
*
|
|
25
|
+
* Purely presentational plus on-demand URL minting — no required wiring.
|
|
26
|
+
* All visual properties flow through `--stgm-*` tokens.
|
|
27
|
+
*/
|
|
28
|
+
export function MessageAttachments({ attachments, executionId, className, }) {
|
|
29
|
+
// One lightbox instance serves the whole row, tracked by storage key
|
|
30
|
+
// (direct identity). It mounts OUTSIDE the role="list" container — a
|
|
31
|
+
// <dialog> is not valid inside the chips' <span> elements, and a
|
|
32
|
+
// non-listitem child inside the list would break its a11y ownership
|
|
33
|
+
// (same reasoning as the composer's chip list).
|
|
34
|
+
const [previewKey, setPreviewKey] = useState(null);
|
|
35
|
+
const previewed = previewKey !== null
|
|
36
|
+
? (attachments.find((a) => a.storageKey === previewKey) ?? null)
|
|
37
|
+
: null;
|
|
38
|
+
if (attachments.length === 0)
|
|
39
|
+
return null;
|
|
40
|
+
return (_jsxs(_Fragment, { children: [_jsx("div", { className: cn("flex flex-wrap items-center gap-1.5", className), role: "list", "aria-label": "Submitted attachments", children: attachments.map((attachment, i) => {
|
|
41
|
+
const isImage = attachment.contentType?.startsWith("image/") ?? false;
|
|
42
|
+
const key = attachment.storageKey ?? `${displayName(attachment)}-${i}`;
|
|
43
|
+
if (isImage && executionId && attachment.storageKey) {
|
|
44
|
+
return (_jsx(ImagePreviewChip, { attachment: attachment, executionId: executionId, onPreview: () => setPreviewKey(attachment.storageKey) }, key));
|
|
45
|
+
}
|
|
46
|
+
if (isImage && !executionId) {
|
|
47
|
+
// No execution record — the optimistic pending bubble or a
|
|
48
|
+
// failed send. The tile keeps the image grammar but stays
|
|
49
|
+
// STATIC (a glyph, not a pulse): a failed send never gets an
|
|
50
|
+
// executionId, so a pulse here would be a permanent false
|
|
51
|
+
// "loading" signal. On the pending bubble the real turn lands
|
|
52
|
+
// under the same bridge key and brings the presign seam.
|
|
53
|
+
return _jsx(ImageGlyphTile, { name: displayName(attachment) }, key);
|
|
54
|
+
}
|
|
55
|
+
return (_jsx(DocumentChip, { attachment: attachment, executionId: executionId }, key));
|
|
56
|
+
}) }), previewed && executionId && previewed.storageKey && (_jsx(AttachmentPreviewLightbox, { attachment: previewed, executionId: executionId, onClose: () => setPreviewKey(null) }))] }));
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Display name for an attachment: the filename, falling back to the storage
|
|
60
|
+
* key's basename (`attachments/{ulid}/{filename}` always ends in it).
|
|
61
|
+
*/
|
|
62
|
+
function displayName(attachment) {
|
|
63
|
+
if (attachment.filename)
|
|
64
|
+
return attachment.filename;
|
|
65
|
+
const key = attachment.storageKey ?? "";
|
|
66
|
+
const base = key.slice(key.lastIndexOf("/") + 1);
|
|
67
|
+
return base || "attachment";
|
|
68
|
+
}
|
|
69
|
+
// ---------------------------------------------------------------------------
|
|
70
|
+
// Image attachment — a preview-only tile mirroring the composer's grammar
|
|
71
|
+
// ---------------------------------------------------------------------------
|
|
72
|
+
/**
|
|
73
|
+
* The preview-only image tile: the thumbnail IS the chip, minted from the
|
|
74
|
+
* stable storage key at view time — no filename text (the name stays in the
|
|
75
|
+
* tooltip, the accessible label, and the lightbox header). If the URL can't
|
|
76
|
+
* be resolved (revoked storage, transient API failure), the chip degrades to
|
|
77
|
+
* the document treatment — a generic icon with the download affordance —
|
|
78
|
+
* never a broken-image glyph.
|
|
79
|
+
*/
|
|
80
|
+
function ImagePreviewChip({ attachment, executionId, onPreview, }) {
|
|
81
|
+
const { url, error } = useArtifactDownloadUrl(executionId, attachment.storageKey ?? null);
|
|
82
|
+
const name = displayName(attachment);
|
|
83
|
+
if (error) {
|
|
84
|
+
return _jsx(DocumentChip, { attachment: attachment, executionId: executionId });
|
|
85
|
+
}
|
|
86
|
+
return (_jsx("span", { role: "listitem", "aria-label": name, title: name, className: "inline-flex", children: _jsx("button", { type: "button", onClick: onPreview, "aria-label": `Preview ${name}`, className: cn(UNSTYLED_BUTTON, "relative block h-14 w-14 overflow-hidden rounded-md focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"), children: url ? (_jsx("img", { src: url, alt: "", "aria-hidden": "true", loading: "lazy", className: "h-full w-full object-cover" })) : (
|
|
87
|
+
// Pulse placeholder while the presigned URL is minted — pulse
|
|
88
|
+
// means work is genuinely in flight (contrast ImageGlyphTile).
|
|
89
|
+
// Same footprint as the image, so no layout shift.
|
|
90
|
+
_jsx("span", { className: "block h-full w-full animate-pulse bg-muted", "aria-hidden": "true" })) }) }));
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* The inert image tile for a turn with no execution record yet (optimistic
|
|
94
|
+
* pending bubble) or ever (failed send). Keeps the image grammar — same
|
|
95
|
+
* footprint as {@link ImagePreviewChip} — but shows a STATIC glyph, not a
|
|
96
|
+
* pulse: a pulse promises bytes that, on a failed send, will never arrive.
|
|
97
|
+
*/
|
|
98
|
+
function ImageGlyphTile({ name }) {
|
|
99
|
+
return (_jsx("span", { role: "listitem", "aria-label": name, title: name, className: "inline-flex h-14 w-14 items-center justify-center rounded-md bg-muted-subtle", children: _jsx(ImageGlyph, {}) }));
|
|
100
|
+
}
|
|
101
|
+
// ---------------------------------------------------------------------------
|
|
102
|
+
// Document attachment — compact chip, click-to-download
|
|
103
|
+
// ---------------------------------------------------------------------------
|
|
104
|
+
/**
|
|
105
|
+
* The compact treatment for documents (and for any attachment before its
|
|
106
|
+
* execution record exists). With an execution id, the chip is a download
|
|
107
|
+
* button — a fresh URL is minted at click time via {@link useArtifactDownload},
|
|
108
|
+
* saved under the original filename. Without one (pending bubble), it is an
|
|
109
|
+
* inert label: evidence the file was sent, affordances once the record lands.
|
|
110
|
+
*/
|
|
111
|
+
function DocumentChip({ attachment, executionId, }) {
|
|
112
|
+
const { download, isDownloading } = useArtifactDownload(executionId ?? null);
|
|
113
|
+
const name = displayName(attachment);
|
|
114
|
+
const downloadable = executionId != null && !!attachment.storageKey;
|
|
115
|
+
const content = (_jsxs(_Fragment, { children: [_jsx(FileGlyph, {}), _jsx("span", { className: "min-w-0 truncate", children: name })] }));
|
|
116
|
+
return (_jsx("span", { role: "listitem", "aria-label": name, title: name, className: "inline-flex max-w-[200px] items-center rounded-md bg-muted-subtle px-2 py-0.5 text-xs text-foreground", children: downloadable ? (_jsx("button", { type: "button", onClick: () => void download(attachment.storageKey, name), disabled: isDownloading, "aria-label": `Download ${name}`, className: cn(UNSTYLED_BUTTON, "flex min-w-0 items-center gap-1 rounded-sm text-inherit [font:inherit] hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", isDownloading && "opacity-70"), children: content })) : (_jsx("span", { className: "flex min-w-0 items-center gap-1", children: content })) }));
|
|
117
|
+
}
|
|
118
|
+
// ---------------------------------------------------------------------------
|
|
119
|
+
// Lightbox bridge
|
|
120
|
+
// ---------------------------------------------------------------------------
|
|
121
|
+
/**
|
|
122
|
+
* Feeds the previewed attachment's presigned URL to the shared
|
|
123
|
+
* {@link AttachmentImageLightbox}. The URL hook is cross-mount cached by
|
|
124
|
+
* storage key (DD-014), so opening the lightbox reuses the thumbnail's minted
|
|
125
|
+
* URL instead of a second RPC; `src` is `null` for at most the first frame.
|
|
126
|
+
*/
|
|
127
|
+
function AttachmentPreviewLightbox({ attachment, executionId, onClose, }) {
|
|
128
|
+
const { url } = useArtifactDownloadUrl(executionId, attachment.storageKey ?? null);
|
|
129
|
+
return (_jsx(AttachmentImageLightbox, { src: url, filename: displayName(attachment), open: true, onClose: onClose }));
|
|
130
|
+
}
|
|
131
|
+
/** Generic picture glyph for the inert {@link ImageGlyphTile}. */
|
|
132
|
+
function ImageGlyph() {
|
|
133
|
+
return (_jsxs("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", className: "shrink-0 text-muted-foreground", "aria-hidden": "true", children: [_jsx("rect", { x: "3", y: "3", width: "18", height: "18", rx: "2" }), _jsx("circle", { cx: "8.5", cy: "8.5", r: "1.5" }), _jsx("path", { d: "M21 15l-5-5L5 21" })] }));
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Generic document glyph — the same geometry as the composer chip's icon so
|
|
137
|
+
* the two surfaces read as one family.
|
|
138
|
+
*/
|
|
139
|
+
function FileGlyph() {
|
|
140
|
+
return (_jsxs("svg", { width: "10", height: "10", viewBox: "0 0 14 14", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", className: "shrink-0 text-muted-foreground", "aria-hidden": "true", children: [_jsx("path", { d: "M8 1H4C3.45 1 3 1.45 3 2V12C3 12.55 3.45 13 4 13H10C10.55 13 11 12.55 11 12V4L8 1Z" }), _jsx("path", { d: "M8 1V4H11" })] }));
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=MessageAttachments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MessageAttachments.js","sourceRoot":"","sources":["../../src/execution/MessageAttachments.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { AgentMessage } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/message_pb";
|
|
2
2
|
import { type InteractionMode } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
3
|
+
import { type MessageAttachmentView } from "./MessageAttachments.js";
|
|
3
4
|
/** Props for {@link MessageEntry}. */
|
|
4
5
|
export interface MessageEntryProps {
|
|
5
6
|
/** The agent message to render. */
|
|
@@ -32,6 +33,23 @@ export interface MessageEntryProps {
|
|
|
32
33
|
* non-human messages.
|
|
33
34
|
*/
|
|
34
35
|
readonly interactionMode?: InteractionMode;
|
|
36
|
+
/**
|
|
37
|
+
* The turn's submitted attachments, stamped by the thread builder on
|
|
38
|
+
* `MESSAGE_HUMAN` bubbles from the execution's `spec.attachments` (or the
|
|
39
|
+
* pending submit context). Renders as a {@link MessageAttachments} row
|
|
40
|
+
* above the prose. Ignored for non-human messages.
|
|
41
|
+
*
|
|
42
|
+
* A `MessageEntry` slot override that delegates to the built-in inherits
|
|
43
|
+
* attachment rendering; one that ignores this prop renders text only.
|
|
44
|
+
*/
|
|
45
|
+
readonly attachments?: readonly MessageAttachmentView[];
|
|
46
|
+
/**
|
|
47
|
+
* The execution the attachments belong to — enables their byte-backed
|
|
48
|
+
* affordances (image previews, document downloads) via presigned URLs.
|
|
49
|
+
* Absent on the optimistic pending bubble, where attachments render as
|
|
50
|
+
* inert chips until the real execution record replaces it.
|
|
51
|
+
*/
|
|
52
|
+
readonly executionId?: string;
|
|
35
53
|
}
|
|
36
54
|
/**
|
|
37
55
|
* Renders a single message in the conversation thread.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageEntry.d.ts","sourceRoot":"","sources":["../../src/execution/MessageEntry.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iEAAiE,CAAC;AACpG,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,8DAA8D,CAAC;
|
|
1
|
+
{"version":3,"file":"MessageEntry.d.ts","sourceRoot":"","sources":["../../src/execution/MessageEntry.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iEAAiE,CAAC;AACpG,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,8DAA8D,CAAC;AAOtE,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,yBAAyB,CAAC;AAIjC,sCAAsC;AACtC,MAAM,WAAW,iBAAiB;IAChC,mCAAmC;IACnC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,yDAAyD;IACzD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B;;;;;;;;;OASG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC;;;;;;OAMG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,eAAe,CAAC;IAC3C;;;;;;;;OAQG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACxD;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,YAAY,yDAuDvB,CAAC"}
|
|
@@ -6,6 +6,7 @@ import { MessageType, } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/
|
|
|
6
6
|
import { cn } from "@stigmer/theme";
|
|
7
7
|
import { MARKDOWN_COMPONENTS, unwrapEnclosingMarkdownFence, } from "../internal/markdown-components.js";
|
|
8
8
|
import { InteractionModeBadge } from "./InteractionModeBadge.js";
|
|
9
|
+
import { MessageAttachments, } from "./MessageAttachments.js";
|
|
9
10
|
import { PlanDocumentMessage } from "./PlanDocumentMessage.js";
|
|
10
11
|
import { useRenderTracer } from "../internal/dev/index.js";
|
|
11
12
|
/**
|
|
@@ -32,7 +33,7 @@ import { useRenderTracer } from "../internal/dev/index.js";
|
|
|
32
33
|
* <MessageEntry message={agentMessage} />
|
|
33
34
|
* ```
|
|
34
35
|
*/
|
|
35
|
-
export const MessageEntry = memo(function MessageEntry({ message, className, onEdit, isPlanDocument, interactionMode, }) {
|
|
36
|
+
export const MessageEntry = memo(function MessageEntry({ message, className, onEdit, isPlanDocument, interactionMode, attachments, executionId, }) {
|
|
36
37
|
useRenderTracer("MessageEntry", {
|
|
37
38
|
messageType: message.type,
|
|
38
39
|
contentLength: message.content.length,
|
|
@@ -40,7 +41,7 @@ export const MessageEntry = memo(function MessageEntry({ message, className, onE
|
|
|
40
41
|
});
|
|
41
42
|
switch (message.type) {
|
|
42
43
|
case MessageType.MESSAGE_HUMAN:
|
|
43
|
-
return (_jsx(HumanMessage, { content: message.content, className: className, onEdit: onEdit, interactionMode: interactionMode }));
|
|
44
|
+
return (_jsx(HumanMessage, { content: message.content, className: className, onEdit: onEdit, interactionMode: interactionMode, attachments: attachments, executionId: executionId }));
|
|
44
45
|
case MessageType.MESSAGE_AI:
|
|
45
46
|
// A completed Plan turn's plan is a document, not a bubble. The flag is
|
|
46
47
|
// only ever set on a settled message, so the streaming path is untouched.
|
|
@@ -56,8 +57,8 @@ export const MessageEntry = memo(function MessageEntry({ message, className, onE
|
|
|
56
57
|
return null;
|
|
57
58
|
}
|
|
58
59
|
});
|
|
59
|
-
function HumanMessage({ content, className, onEdit, interactionMode, }) {
|
|
60
|
-
return (_jsxs("div", { role: "article", "aria-label": "User message", className: cn("group relative ms-[20%] rounded-lg bg-muted-subtle px-4 py-3", className), children: [interactionMode !== undefined && (_jsx(InteractionModeBadge, { mode: interactionMode, className: "mb-1.5" })), _jsx("p", { className: "text-sm text-foreground whitespace-pre-wrap", children: content }), onEdit && (_jsx("button", { type: "button", onClick: onEdit, "aria-label": "Edit message", title: "Edit", className: cn("absolute -top-2.5 -right-2.5 inline-flex h-7 w-7 items-center justify-center rounded-full", "border border-border bg-card text-muted-foreground shadow-sm transition", "hover:text-foreground hover:bg-accent-hover", "opacity-0 group-hover:opacity-100 focus-visible:opacity-100", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"), children: _jsx(EditIcon, {}) }))] }));
|
|
60
|
+
function HumanMessage({ content, className, onEdit, interactionMode, attachments, executionId, }) {
|
|
61
|
+
return (_jsxs("div", { role: "article", "aria-label": "User message", className: cn("group relative ms-[20%] rounded-lg bg-muted-subtle px-4 py-3", className), children: [interactionMode !== undefined && (_jsx(InteractionModeBadge, { mode: interactionMode, className: "mb-1.5" })), attachments && attachments.length > 0 && (_jsx(MessageAttachments, { attachments: attachments, executionId: executionId, className: "mb-2" })), _jsx("p", { className: "text-sm text-foreground whitespace-pre-wrap", children: content }), onEdit && (_jsx("button", { type: "button", onClick: onEdit, "aria-label": "Edit message", title: "Edit", className: cn("absolute -top-2.5 -right-2.5 inline-flex h-7 w-7 items-center justify-center rounded-full", "border border-border bg-card text-muted-foreground shadow-sm transition", "hover:text-foreground hover:bg-accent-hover", "opacity-0 group-hover:opacity-100 focus-visible:opacity-100", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"), children: _jsx(EditIcon, {}) }))] }));
|
|
61
62
|
}
|
|
62
63
|
/**
|
|
63
64
|
* The Build-from-plan turn's user entry: a compact pill in the user-turn
|