@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.
Files changed (157) hide show
  1. package/attachment/AttachmentChipList.d.ts +16 -4
  2. package/attachment/AttachmentChipList.d.ts.map +1 -1
  3. package/attachment/AttachmentChipList.js +106 -11
  4. package/attachment/AttachmentChipList.js.map +1 -1
  5. package/attachment/AttachmentImageLightbox.d.ts +39 -0
  6. package/attachment/AttachmentImageLightbox.d.ts.map +1 -0
  7. package/attachment/AttachmentImageLightbox.js +57 -0
  8. package/attachment/AttachmentImageLightbox.js.map +1 -0
  9. package/attachment/attachment-utils.d.ts +11 -0
  10. package/attachment/attachment-utils.d.ts.map +1 -1
  11. package/attachment/attachment-utils.js +23 -0
  12. package/attachment/attachment-utils.js.map +1 -1
  13. package/attachment/clipboard.d.ts +51 -0
  14. package/attachment/clipboard.d.ts.map +1 -0
  15. package/attachment/clipboard.js +89 -0
  16. package/attachment/clipboard.js.map +1 -0
  17. package/attachment/index.d.ts +6 -1
  18. package/attachment/index.d.ts.map +1 -1
  19. package/attachment/index.js +4 -1
  20. package/attachment/index.js.map +1 -1
  21. package/attachment/prepare-image.d.ts +43 -0
  22. package/attachment/prepare-image.d.ts.map +1 -0
  23. package/attachment/prepare-image.js +162 -0
  24. package/attachment/prepare-image.js.map +1 -0
  25. package/attachment/useAttachments.d.ts.map +1 -1
  26. package/attachment/useAttachments.js +23 -3
  27. package/attachment/useAttachments.js.map +1 -1
  28. package/attachment/useObjectUrl.d.ts +15 -0
  29. package/attachment/useObjectUrl.d.ts.map +1 -0
  30. package/attachment/useObjectUrl.js +25 -0
  31. package/attachment/useObjectUrl.js.map +1 -0
  32. package/attachment/vision-fit.d.ts +50 -0
  33. package/attachment/vision-fit.d.ts.map +1 -0
  34. package/attachment/vision-fit.js +76 -0
  35. package/attachment/vision-fit.js.map +1 -0
  36. package/composer/SessionComposer.d.ts +3 -1
  37. package/composer/SessionComposer.d.ts.map +1 -1
  38. package/composer/SessionComposer.js +50 -4
  39. package/composer/SessionComposer.js.map +1 -1
  40. package/conversation/ConversationMediaAttachment.d.ts +45 -0
  41. package/conversation/ConversationMediaAttachment.d.ts.map +1 -0
  42. package/conversation/ConversationMediaAttachment.js +153 -0
  43. package/conversation/ConversationMediaAttachment.js.map +1 -0
  44. package/conversation/ConversationTimelineView.d.ts +18 -1
  45. package/conversation/ConversationTimelineView.d.ts.map +1 -1
  46. package/conversation/ConversationTimelineView.js +14 -5
  47. package/conversation/ConversationTimelineView.js.map +1 -1
  48. package/conversation/ConversationsWorkbench.d.ts.map +1 -1
  49. package/conversation/ConversationsWorkbench.js +1 -1
  50. package/conversation/ConversationsWorkbench.js.map +1 -1
  51. package/conversation/conversationPresentation.d.ts +10 -3
  52. package/conversation/conversationPresentation.d.ts.map +1 -1
  53. package/conversation/conversationPresentation.js +10 -3
  54. package/conversation/conversationPresentation.js.map +1 -1
  55. package/conversation/index.d.ts +2 -0
  56. package/conversation/index.d.ts.map +1 -1
  57. package/conversation/index.js +1 -0
  58. package/conversation/index.js.map +1 -1
  59. package/conversation/useConversationMediaUrl.d.ts +65 -0
  60. package/conversation/useConversationMediaUrl.d.ts.map +1 -0
  61. package/conversation/useConversationMediaUrl.js +61 -0
  62. package/conversation/useConversationMediaUrl.js.map +1 -0
  63. package/execution/MessageAttachments.d.ts +52 -0
  64. package/execution/MessageAttachments.d.ts.map +1 -0
  65. package/execution/MessageAttachments.js +142 -0
  66. package/execution/MessageAttachments.js.map +1 -0
  67. package/execution/MessageEntry.d.ts +18 -0
  68. package/execution/MessageEntry.d.ts.map +1 -1
  69. package/execution/MessageEntry.js +5 -4
  70. package/execution/MessageEntry.js.map +1 -1
  71. package/execution/MessageThread.d.ts +15 -2
  72. package/execution/MessageThread.d.ts.map +1 -1
  73. package/execution/MessageThread.js +24 -7
  74. package/execution/MessageThread.js.map +1 -1
  75. package/execution/index.d.ts +2 -0
  76. package/execution/index.d.ts.map +1 -1
  77. package/execution/index.js +1 -0
  78. package/execution/index.js.map +1 -1
  79. package/github/decodeGitHubContent.d.ts +10 -5
  80. package/github/decodeGitHubContent.d.ts.map +1 -1
  81. package/github/decodeGitHubContent.js +21 -7
  82. package/github/decodeGitHubContent.js.map +1 -1
  83. package/github/useGitHubFileReader.d.ts.map +1 -1
  84. package/github/useGitHubFileReader.js +5 -5
  85. package/github/useGitHubFileReader.js.map +1 -1
  86. package/index.d.ts +5 -5
  87. package/index.d.ts.map +1 -1
  88. package/index.js +5 -4
  89. package/index.js.map +1 -1
  90. package/internal/form-primitives.d.ts +13 -0
  91. package/internal/form-primitives.d.ts.map +1 -1
  92. package/internal/form-primitives.js +13 -0
  93. package/internal/form-primitives.js.map +1 -1
  94. package/package.json +4 -4
  95. package/session/SessionViewer.js +1 -1
  96. package/session/SessionViewer.js.map +1 -1
  97. package/session/useSessionConversation.d.ts +8 -0
  98. package/session/useSessionConversation.d.ts.map +1 -1
  99. package/session/useSessionConversation.js +12 -2
  100. package/session/useSessionConversation.js.map +1 -1
  101. package/src/attachment/AttachmentChipList.tsx +330 -40
  102. package/src/attachment/AttachmentImageLightbox.tsx +156 -0
  103. package/src/attachment/__tests__/AttachmentChipList.test.tsx +326 -0
  104. package/src/attachment/__tests__/attachment-utils.test.ts +54 -0
  105. package/src/attachment/__tests__/clipboard.test.ts +110 -0
  106. package/src/attachment/__tests__/prepare-image.browser.test.ts +166 -0
  107. package/src/attachment/__tests__/prepare-image.test.ts +32 -0
  108. package/src/attachment/__tests__/vision-fit.test.ts +93 -0
  109. package/src/attachment/attachment-utils.ts +27 -0
  110. package/src/attachment/clipboard.ts +102 -0
  111. package/src/attachment/index.ts +13 -0
  112. package/src/attachment/prepare-image.ts +179 -0
  113. package/src/attachment/useAttachments.ts +26 -2
  114. package/src/attachment/useObjectUrl.ts +28 -0
  115. package/src/attachment/vision-fit.ts +90 -0
  116. package/src/composer/SessionComposer.tsx +73 -4
  117. package/src/composer/__tests__/SessionComposer-paste.test.tsx +263 -0
  118. package/src/composer/__tests__/SessionComposer-uploadGate.test.tsx +239 -0
  119. package/src/conversation/ConversationMediaAttachment.tsx +308 -0
  120. package/src/conversation/ConversationTimelineView.tsx +60 -10
  121. package/src/conversation/ConversationsWorkbench.tsx +2 -0
  122. package/src/conversation/__tests__/ConversationTimelineView.test.tsx +233 -6
  123. package/src/conversation/__tests__/a11y/conversation-surfaces.a11y.test.tsx +67 -1
  124. package/src/conversation/__tests__/useConversationMediaUrl.test.tsx +66 -0
  125. package/src/conversation/conversationPresentation.ts +10 -3
  126. package/src/conversation/index.ts +6 -0
  127. package/src/conversation/useConversationMediaUrl.ts +121 -0
  128. package/src/execution/MessageAttachments.tsx +364 -0
  129. package/src/execution/MessageEntry.tsx +38 -0
  130. package/src/execution/MessageThread.tsx +44 -4
  131. package/src/execution/__tests__/MessageEntry-attachments.test.tsx +228 -0
  132. package/src/execution/__tests__/buildThreadItems-attachments.test.ts +174 -0
  133. package/src/execution/index.ts +6 -0
  134. package/src/github/__tests__/decodeGitHubContent.test.ts +42 -1
  135. package/src/github/decodeGitHubContent.ts +22 -5
  136. package/src/github/useGitHubFileReader.ts +13 -3
  137. package/src/index.ts +16 -1
  138. package/src/internal/form-primitives.tsx +14 -0
  139. package/src/session/SessionViewer.tsx +1 -0
  140. package/src/session/__tests__/useSessionConversation.test.tsx +62 -0
  141. package/src/session/useSessionConversation.ts +21 -2
  142. package/src/workspace/FileViewer.tsx +109 -0
  143. package/src/workspace/WorkspaceFileReader.ts +55 -1
  144. package/src/workspace/__tests__/FileViewer.test.tsx +98 -0
  145. package/src/workspace/index.ts +2 -0
  146. package/styles.css +1 -1
  147. package/workspace/FileViewer.d.ts.map +1 -1
  148. package/workspace/FileViewer.js +40 -2
  149. package/workspace/FileViewer.js.map +1 -1
  150. package/workspace/WorkspaceFileReader.d.ts +29 -1
  151. package/workspace/WorkspaceFileReader.d.ts.map +1 -1
  152. package/workspace/WorkspaceFileReader.js +42 -0
  153. package/workspace/WorkspaceFileReader.js.map +1 -1
  154. package/workspace/index.d.ts +1 -1
  155. package/workspace/index.d.ts.map +1 -1
  156. package/workspace/index.js +1 -1
  157. 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,2CAmR7B"}
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). Media
41
- * retrieval is a named non-goal of this surface the placeholder tells
42
- * staff something arrived and what shape it was.
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;;;;;;;;;GASG;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"}
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). Media
59
- * retrieval is a named non-goal of this surface the placeholder tells
60
- * staff something arrived and what shape it was.
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":"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"}
1
+ {"version":3,"file":"conversationPresentation.js","sourceRoot":"","sources":["../../src/conversation/conversationPresentation.ts"],"names":[],"mappings":"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"}
@@ -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"}
@@ -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;AAUtE,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;CAC5C;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,YAAY,yDAmDvB,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