@arbidocs/blocks 0.5.27 → 0.5.29

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 (159) hide show
  1. package/dist/{ConnectedCallDock-5DFRWT2D.js → ConnectedCallDock-FDGMFTS5.js} +11 -11
  2. package/dist/{ConnectedCallDock-5DFRWT2D.js.map → ConnectedCallDock-FDGMFTS5.js.map} +1 -1
  3. package/dist/{ConnectedCallDock-UZ447IPL.cjs → ConnectedCallDock-ZIX2ZJCD.cjs} +12 -12
  4. package/dist/{ConnectedCallDock-UZ447IPL.cjs.map → ConnectedCallDock-ZIX2ZJCD.cjs.map} +1 -1
  5. package/dist/{ConnectedCallRoom-MRC375AN.js → ConnectedCallRoom-VJIHEJ4X.js} +11 -11
  6. package/dist/{ConnectedCallRoom-MRC375AN.js.map → ConnectedCallRoom-VJIHEJ4X.js.map} +1 -1
  7. package/dist/{ConnectedCallRoom-SECNWUNO.cjs → ConnectedCallRoom-WZQVXDDW.cjs} +12 -12
  8. package/dist/{ConnectedCallRoom-SECNWUNO.cjs.map → ConnectedCallRoom-WZQVXDDW.cjs.map} +1 -1
  9. package/dist/{ConnectedNativeDocxComparison-5VOMPGV5.js → ConnectedNativeDocxComparison-7ZC7BRY4.js} +14 -14
  10. package/dist/{ConnectedNativeDocxComparison-5VOMPGV5.js.map → ConnectedNativeDocxComparison-7ZC7BRY4.js.map} +1 -1
  11. package/dist/{ConnectedNativeDocxComparison-ZJ44DWVV.cjs → ConnectedNativeDocxComparison-KSLSDAAP.cjs} +15 -15
  12. package/dist/{ConnectedNativeDocxComparison-ZJ44DWVV.cjs.map → ConnectedNativeDocxComparison-KSLSDAAP.cjs.map} +1 -1
  13. package/dist/{ConnectedNativeDocxEditor-KQEYRN4T.cjs → ConnectedNativeDocxEditor-5E64Q7FX.cjs} +15 -15
  14. package/dist/{ConnectedNativeDocxEditor-KQEYRN4T.cjs.map → ConnectedNativeDocxEditor-5E64Q7FX.cjs.map} +1 -1
  15. package/dist/{ConnectedNativeDocxEditor-CSD3YIPD.js → ConnectedNativeDocxEditor-B5KDDPRY.js} +13 -13
  16. package/dist/{ConnectedNativeDocxEditor-CSD3YIPD.js.map → ConnectedNativeDocxEditor-B5KDDPRY.js.map} +1 -1
  17. package/dist/{ConnectedStreamedWordArtifact-OTC4CAYP.cjs → ConnectedStreamedWordArtifact-RLU5VYGO.cjs} +15 -15
  18. package/dist/ConnectedStreamedWordArtifact-RLU5VYGO.cjs.map +1 -0
  19. package/dist/{ConnectedStreamedWordArtifact-ZPI76QX2.js → ConnectedStreamedWordArtifact-YCQSIGXL.js} +14 -14
  20. package/dist/ConnectedStreamedWordArtifact-YCQSIGXL.js.map +1 -0
  21. package/dist/{WorkspaceTableView-LS6LFKBE.js → WorkspaceTableView-62PJLX7V.js} +8 -8
  22. package/dist/{WorkspaceTableView-LS6LFKBE.js.map → WorkspaceTableView-62PJLX7V.js.map} +1 -1
  23. package/dist/{WorkspaceTableView-5I3KWZ5I.cjs → WorkspaceTableView-BUWRSR42.cjs} +10 -10
  24. package/dist/{WorkspaceTableView-5I3KWZ5I.cjs.map → WorkspaceTableView-BUWRSR42.cjs.map} +1 -1
  25. package/dist/agents/index.cjs +371 -371
  26. package/dist/agents/index.js +9 -9
  27. package/dist/calls/index.cjs +2 -2
  28. package/dist/calls/index.js +2 -2
  29. package/dist/chat/index.cjs +166 -166
  30. package/dist/chat/index.js +8 -8
  31. package/dist/{chunk-ORVJFY72.cjs → chunk-3IRIITUW.cjs} +7 -7
  32. package/dist/{chunk-ORVJFY72.cjs.map → chunk-3IRIITUW.cjs.map} +1 -1
  33. package/dist/{chunk-5DA4LSMC.js → chunk-3OKBEVP3.js} +3 -3
  34. package/dist/{chunk-5DA4LSMC.js.map → chunk-3OKBEVP3.js.map} +1 -1
  35. package/dist/{chunk-SQQULKT4.cjs → chunk-3PQPA5K6.cjs} +12 -12
  36. package/dist/{chunk-SQQULKT4.cjs.map → chunk-3PQPA5K6.cjs.map} +1 -1
  37. package/dist/{chunk-EZLZ3MDU.cjs → chunk-4RMI6D64.cjs} +3 -3
  38. package/dist/{chunk-EZLZ3MDU.cjs.map → chunk-4RMI6D64.cjs.map} +1 -1
  39. package/dist/{chunk-LMT6VLBN.js → chunk-4UREQY5X.js} +3 -3
  40. package/dist/{chunk-LMT6VLBN.js.map → chunk-4UREQY5X.js.map} +1 -1
  41. package/dist/{chunk-TL5VXRNT.cjs → chunk-52GITM4V.cjs} +91 -91
  42. package/dist/{chunk-TL5VXRNT.cjs.map → chunk-52GITM4V.cjs.map} +1 -1
  43. package/dist/{chunk-T5DBNUVF.cjs → chunk-CJWZYK5K.cjs} +5 -5
  44. package/dist/{chunk-T5DBNUVF.cjs.map → chunk-CJWZYK5K.cjs.map} +1 -1
  45. package/dist/{chunk-2CO5PMOE.cjs → chunk-CPJ2B3QQ.cjs} +4 -4
  46. package/dist/{chunk-2CO5PMOE.cjs.map → chunk-CPJ2B3QQ.cjs.map} +1 -1
  47. package/dist/{chunk-RP3IOGFT.cjs → chunk-CRUCMRFC.cjs} +9 -9
  48. package/dist/{chunk-RP3IOGFT.cjs.map → chunk-CRUCMRFC.cjs.map} +1 -1
  49. package/dist/{chunk-L2C7WV6D.js → chunk-DF2GSH4D.js} +3 -3
  50. package/dist/{chunk-L2C7WV6D.js.map → chunk-DF2GSH4D.js.map} +1 -1
  51. package/dist/{chunk-C4GMH6TZ.js → chunk-DNGA25ZA.js} +3 -3
  52. package/dist/{chunk-C4GMH6TZ.js.map → chunk-DNGA25ZA.js.map} +1 -1
  53. package/dist/{chunk-THNTNAYI.js → chunk-DV25UPJ7.js} +3 -3
  54. package/dist/{chunk-THNTNAYI.js.map → chunk-DV25UPJ7.js.map} +1 -1
  55. package/dist/{chunk-R4K5L6QY.js → chunk-EJSVRT3G.js} +6 -6
  56. package/dist/{chunk-R4K5L6QY.js.map → chunk-EJSVRT3G.js.map} +1 -1
  57. package/dist/{chunk-I45LDMQU.cjs → chunk-EVYUYVH2.cjs} +5 -5
  58. package/dist/{chunk-I45LDMQU.cjs.map → chunk-EVYUYVH2.cjs.map} +1 -1
  59. package/dist/{chunk-YD3RN2FY.cjs → chunk-F72ZD5Q2.cjs} +3 -3
  60. package/dist/{chunk-YD3RN2FY.cjs.map → chunk-F72ZD5Q2.cjs.map} +1 -1
  61. package/dist/{chunk-WP4IDJBA.js → chunk-G3MZ5S2Q.js} +3 -3
  62. package/dist/{chunk-WP4IDJBA.js.map → chunk-G3MZ5S2Q.js.map} +1 -1
  63. package/dist/{chunk-OJBOHLAH.js → chunk-GJI5PEGR.js} +3 -3
  64. package/dist/{chunk-OJBOHLAH.js.map → chunk-GJI5PEGR.js.map} +1 -1
  65. package/dist/{chunk-G6O77PJD.js → chunk-H72SWOUS.js} +3 -3
  66. package/dist/{chunk-G6O77PJD.js.map → chunk-H72SWOUS.js.map} +1 -1
  67. package/dist/{chunk-75Z5AUMM.js → chunk-JS7KJRKG.js} +3 -3
  68. package/dist/{chunk-75Z5AUMM.js.map → chunk-JS7KJRKG.js.map} +1 -1
  69. package/dist/{chunk-XMUYSOYU.js → chunk-KKBYWVEL.js} +5 -5
  70. package/dist/{chunk-XMUYSOYU.js.map → chunk-KKBYWVEL.js.map} +1 -1
  71. package/dist/{chunk-WL57N2KJ.cjs → chunk-LXB756TN.cjs} +3 -3
  72. package/dist/{chunk-WL57N2KJ.cjs.map → chunk-LXB756TN.cjs.map} +1 -1
  73. package/dist/{chunk-LDAV4UDA.js → chunk-OGADWN5L.js} +3 -3
  74. package/dist/{chunk-LDAV4UDA.js.map → chunk-OGADWN5L.js.map} +1 -1
  75. package/dist/{chunk-LX3JJYVP.cjs → chunk-OQCUIN6Z.cjs} +5 -5
  76. package/dist/{chunk-LX3JJYVP.cjs.map → chunk-OQCUIN6Z.cjs.map} +1 -1
  77. package/dist/{chunk-6EEVMPOH.js → chunk-OZRGYS3J.js} +3 -3
  78. package/dist/{chunk-6EEVMPOH.js.map → chunk-OZRGYS3J.js.map} +1 -1
  79. package/dist/{chunk-A3WHSTRX.js → chunk-OZSAQJO4.js} +3 -3
  80. package/dist/{chunk-A3WHSTRX.js.map → chunk-OZSAQJO4.js.map} +1 -1
  81. package/dist/{chunk-5OEDXFPX.cjs → chunk-QHWDV2VB.cjs} +3 -3
  82. package/dist/{chunk-5OEDXFPX.cjs.map → chunk-QHWDV2VB.cjs.map} +1 -1
  83. package/dist/{chunk-Z2BAYT2U.cjs → chunk-R3HZBTE3.cjs} +4 -4
  84. package/dist/{chunk-Z2BAYT2U.cjs.map → chunk-R3HZBTE3.cjs.map} +1 -1
  85. package/dist/{chunk-ADH5KQZW.cjs → chunk-SN7X7C7H.cjs} +3 -3
  86. package/dist/{chunk-ADH5KQZW.cjs.map → chunk-SN7X7C7H.cjs.map} +1 -1
  87. package/dist/{chunk-WBBUUEER.cjs → chunk-SQAVWMGV.cjs} +55 -55
  88. package/dist/{chunk-WBBUUEER.cjs.map → chunk-SQAVWMGV.cjs.map} +1 -1
  89. package/dist/{chunk-P57ASK2E.cjs → chunk-T3JW5BYG.cjs} +4 -4
  90. package/dist/{chunk-P57ASK2E.cjs.map → chunk-T3JW5BYG.cjs.map} +1 -1
  91. package/dist/{chunk-ZWL7GPQX.js → chunk-TKOP6WMD.js} +3 -3
  92. package/dist/{chunk-ZWL7GPQX.js.map → chunk-TKOP6WMD.js.map} +1 -1
  93. package/dist/{chunk-LOFESOAW.js → chunk-TY76UEFK.js} +5 -5
  94. package/dist/{chunk-LOFESOAW.js.map → chunk-TY76UEFK.js.map} +1 -1
  95. package/dist/{chunk-DEB2YRCN.js → chunk-UXIMEFEF.js} +7 -7
  96. package/dist/{chunk-DEB2YRCN.js.map → chunk-UXIMEFEF.js.map} +1 -1
  97. package/dist/{chunk-ROV3FG3J.js → chunk-W43S7COD.js} +3 -3
  98. package/dist/{chunk-ROV3FG3J.js.map → chunk-W43S7COD.js.map} +1 -1
  99. package/dist/{chunk-4Y4724GI.cjs → chunk-W5PKYJX5.cjs} +3 -3
  100. package/dist/{chunk-4Y4724GI.cjs.map → chunk-W5PKYJX5.cjs.map} +1 -1
  101. package/dist/{chunk-F5T4R7CN.cjs → chunk-WY626DNG.cjs} +10 -10
  102. package/dist/{chunk-F5T4R7CN.cjs.map → chunk-WY626DNG.cjs.map} +1 -1
  103. package/dist/{chunk-6PFVCAWJ.cjs → chunk-XDFH6ONO.cjs} +13 -13
  104. package/dist/{chunk-6PFVCAWJ.cjs.map → chunk-XDFH6ONO.cjs.map} +1 -1
  105. package/dist/{chunk-OUCSQ3IE.js → chunk-XGUN44A4.js} +7 -7
  106. package/dist/{chunk-OUCSQ3IE.js.map → chunk-XGUN44A4.js.map} +1 -1
  107. package/dist/collaboration/index.cjs +9 -9
  108. package/dist/collaboration/index.js +1 -1
  109. package/dist/connect/docx.cjs +17 -17
  110. package/dist/connect/docx.js +13 -13
  111. package/dist/connect/index.cjs +3006 -2274
  112. package/dist/connect/index.cjs.map +1 -1
  113. package/dist/connect/index.d.ts +2 -0
  114. package/dist/connect/index.js +784 -57
  115. package/dist/connect/index.js.map +1 -1
  116. package/dist/connect/viewer.cjs +24 -24
  117. package/dist/connect/viewer.js +14 -14
  118. package/dist/connection/projects/ConnectedProjectPage.d.ts +1 -0
  119. package/dist/connection/projects/ProjectDetailsForm.d.ts +1 -0
  120. package/dist/connection/report-problem/CaptureBar.d.ts +11 -0
  121. package/dist/connection/report-problem/ConnectedReportProblem.d.ts +9 -0
  122. package/dist/connection/report-problem/ReportProblemDialog.d.ts +25 -0
  123. package/dist/connection/report-problem/index.d.ts +4 -0
  124. package/dist/connection/report-problem/screen-capture.d.ts +14 -0
  125. package/dist/connection/report-problem/screenshot-annotations.d.ts +53 -0
  126. package/dist/connection/report-problem/useReportProblem.d.ts +12 -0
  127. package/dist/connection/runtime/ConnectedAppRuntime.d.ts +6 -0
  128. package/dist/connection/runtime/index.d.ts +1 -0
  129. package/dist/connection/runtime/usePausedMutationNotice.d.ts +10 -0
  130. package/dist/connection/runtime/usePaymentReturn.d.ts +1 -0
  131. package/dist/connection/runtime/useReleaseStaleModalState.d.ts +1 -0
  132. package/dist/connection/runtime/useRetiredModelNotice.d.ts +1 -0
  133. package/dist/facts/index.cjs +57 -57
  134. package/dist/facts/index.js +5 -5
  135. package/dist/files/index.cjs +2 -2
  136. package/dist/files/index.js +2 -2
  137. package/dist/home/index.cjs +29 -29
  138. package/dist/home/index.js +4 -4
  139. package/dist/index.cjs +763 -702
  140. package/dist/index.cjs.map +1 -1
  141. package/dist/index.d.ts +1 -0
  142. package/dist/index.js +78 -20
  143. package/dist/index.js.map +1 -1
  144. package/dist/settings/TipsEditorDialog.d.ts +3 -3
  145. package/dist/settings/index.cjs +156 -156
  146. package/dist/settings/index.js +3 -3
  147. package/dist/shell/index.cjs +1 -1
  148. package/dist/shell/index.js +1 -1
  149. package/dist/studio/index.cjs +8 -8
  150. package/dist/studio/index.js +7 -7
  151. package/dist/tips/index.d.ts +1 -0
  152. package/dist/tips/registry.d.ts +98 -0
  153. package/dist/workflow-canvas/index.cjs +62 -62
  154. package/dist/workflow-canvas/index.js +12 -12
  155. package/node_modules/@arbidocs/coedit/package.json +1 -1
  156. package/package.json +5 -5
  157. package/src/blocks.css +13 -2
  158. package/dist/ConnectedStreamedWordArtifact-OTC4CAYP.cjs.map +0 -1
  159. package/dist/ConnectedStreamedWordArtifact-ZPI76QX2.js.map +0 -1
@@ -1,22 +1,29 @@
1
1
  "use client";
2
- import { useBillingSupport, formatMoney, isProProject, useSelfExtId, addonCharge, formatPeriodEnd, quoteParts, taxDetail, money2, ANNUAL_PREMIUM_AI_NOTE, totalWithTaxWord, planBadgeView, DEFAULT_SPEND_CAP_PENCE, findProPrices, packPrice, calcSavingsPercent, parseBudgetPounds, isAddonBudgetZero, useRewardBalance, getQuotaItems, aiUsageResetTimestamp, formatResetDate, ZERO_BUDGET_MESSAGE, CAP_REACHED_MESSAGE, PRO_PACKS, planNameForPacks, proTierName, STORAGE_BLOCK_GB, ADDON_BLOCK_AI_GBP, quoteError, POSTCODE_COUNTRIES, addonPrice, checkoutBlockPriceText, quoteTotalLine, apiErrorDetail, checkoutItemsLabel, projectGroupBilling, SUGGESTED_DAILY_CAP_PER_USER, FREE_STORAGE_MB, FREE_AI_GBP, PRO_AI_GBP, PRO_STORAGE_GB, plusVat, planPreviewLines, PAY_TODAY_UNPRICED, TAX_LOCATION_INVALID, FREE_COLLABORATORS, MAX_CHECKOUT_BLOCKS, reduceBounds, splitBlocks, autoRoom, nextRemovedBlockSize, stepLabel, addStepCaption, blocksLabel, MIN_AUTO_TOPUP_THRESHOLD_GBP, USAGE_CAP_LABEL, USAGE_CAP_HELP, PLAN_CHOICE_PACKS, nextPeriodBody, addonSettingsBody, budgetSavedMessage } from '../chunk-G6O77PJD.js';
3
- export { CAP_REACHED_MESSAGE, ZERO_BUDGET_MESSAGE, aiUsageResetTimestamp, formatMoney, formatResetDate, getQuotaItems, isAddonBudgetZero, isProProject, planBadgeView, planName, projectGroupBilling, useBillingSupport, useRewardBalance } from '../chunk-G6O77PJD.js';
2
+ import { useBillingSupport, formatMoney, isProProject, useSelfExtId, addonCharge, formatPeriodEnd, quoteParts, taxDetail, money2, ANNUAL_PREMIUM_AI_NOTE, totalWithTaxWord, planBadgeView, DEFAULT_SPEND_CAP_PENCE, findProPrices, packPrice, calcSavingsPercent, parseBudgetPounds, isAddonBudgetZero, useRewardBalance, getQuotaItems, aiUsageResetTimestamp, formatResetDate, ZERO_BUDGET_MESSAGE, CAP_REACHED_MESSAGE, PRO_PACKS, planNameForPacks, proTierName, STORAGE_BLOCK_GB, ADDON_BLOCK_AI_GBP, quoteError, POSTCODE_COUNTRIES, addonPrice, checkoutBlockPriceText, quoteTotalLine, apiErrorDetail, checkoutItemsLabel, projectGroupBilling, SUGGESTED_DAILY_CAP_PER_USER, FREE_STORAGE_MB, FREE_AI_GBP, PRO_AI_GBP, PRO_STORAGE_GB, plusVat, planPreviewLines, PAY_TODAY_UNPRICED, TAX_LOCATION_INVALID, FREE_COLLABORATORS, MAX_CHECKOUT_BLOCKS, reduceBounds, splitBlocks, autoRoom, nextRemovedBlockSize, stepLabel, addStepCaption, blocksLabel, MIN_AUTO_TOPUP_THRESHOLD_GBP, USAGE_CAP_LABEL, USAGE_CAP_HELP, PLAN_CHOICE_PACKS, nextPeriodBody, addonSettingsBody, budgetSavedMessage } from '../chunk-H72SWOUS.js';
3
+ export { CAP_REACHED_MESSAGE, ZERO_BUDGET_MESSAGE, aiUsageResetTimestamp, formatMoney, formatResetDate, getQuotaItems, isAddonBudgetZero, isProProject, planBadgeView, planName, projectGroupBilling, useBillingSupport, useRewardBalance } from '../chunk-H72SWOUS.js';
4
4
  import { getRoleBadgeClass, formatRole, getRoleDescription, PageLoading, WorkspacePageFrame, WorkspaceIdentityPanel, WorkspaceProjectSlot, WorkspaceAudienceLine, CommonWorkspaceToggle, ExpandableSection, LeaveFooter, ProjectPicker, WorkspaceTypeBadge, WorkspaceList, WorkspaceGroup, WorkspaceCard } from '../chunk-SBHWRN2D.js';
5
5
  import { isAgentAccount, workspaceConversationCount, workspaceDocumentCount, isListedWorkspace, WORKSPACE_CATEGORY_FILTERS, projectFilterId, workspaceFilterAttributes, groupWorkspacesByProject, workspaceGroupStats, byRecentUpdate } from '../chunk-57CG33XJ.js';
6
6
  import { SharedFileView, SharedFilesInbox } from '../chunk-4ML5AMMO.js';
7
- import { buildFactCitations, citedVersionRef, chronologyFactBodies, docIdsOf, toFactCitations, FactsToolbar, FactsFieldsButton, FactComposer, FactDateInput, FactSourcesRow, FactsLoading, FactsLoadError, FactsEmptyState, FactsCalendar, FactsGanttPane, FactsBulkBar, FactSourceGroup, EMPTY_FACT_DATE_FIELDS, withoutChunk, factDateSpanToFields, FactFieldRow, FactLabelsCell, enableFactTableColumnResize, withChunk, factDateFieldsToSpan, createFactColumns, FactRowActions, withoutDoc, withDoc, sourceDocCount, DEFAULT_FACT_COLUMN_LABELS } from '../chunk-75Z5AUMM.js';
8
- import { HomeLoadError, HomeFrame, HomeMain, HomeCenteredScroll, HomeCenteredColumn, DashboardRoot, DashboardBand, DashboardColumns, RecentList, DashboardAction, FactsStrip, FactMark, CreateTile } from '../chunk-OJBOHLAH.js';
7
+ import { buildFactCitations, citedVersionRef, chronologyFactBodies, docIdsOf, toFactCitations, FactsToolbar, FactsFieldsButton, FactComposer, FactDateInput, FactSourcesRow, FactsLoading, FactsLoadError, FactsEmptyState, FactsCalendar, FactsGanttPane, FactsBulkBar, FactSourceGroup, EMPTY_FACT_DATE_FIELDS, withoutChunk, factDateSpanToFields, FactFieldRow, FactLabelsCell, enableFactTableColumnResize, withChunk, factDateFieldsToSpan, createFactColumns, FactRowActions, withoutDoc, withDoc, sourceDocCount, DEFAULT_FACT_COLUMN_LABELS } from '../chunk-JS7KJRKG.js';
8
+ import { HomeLoadError, HomeFrame, HomeMain, HomeCenteredScroll, HomeCenteredColumn, DashboardRoot, DashboardBand, DashboardColumns, RecentList, DashboardAction, FactsStrip, FactMark, CreateTile } from '../chunk-GJI5PEGR.js';
9
9
  import { ProjectBandTitle, PlainBandTitle } from '../chunk-RQKWYKZY.js';
10
10
  import '../chunk-WZ63HE2C.js';
11
- import { MessageJsonTree, DraggableHeader, ProfileCard, AvatarPicker, IdentityVerificationCard, IdentityVerificationDialog, RequireVerified, PasswordChangeDialog, EMAIL_NOTIFICATION_KEYS, EMAIL_NOTIFICATION_CATEGORIES, NotificationCategoryList, toNotificationCategories, toActiveSessionViews, ActiveSessionsDialog, LogoutDialog, toLogoutSessionViews, DeleteAccountDialog, toDeleteBlockerViews, PremiumModelsFrame, ConnectionsLoading, ConnectionsError, ConnectionsEmpty, UsageToggle, SettingsPage, UsageSummary, AppearanceSettings, UsageLineChart, SyncDialogBody, SyncField, SyncSelect, SyncSmallNote, SyncLoading, SyncReconnectNotice, SyncNote, SyncTreeFrame, SyncLinkRow, SyncLinkButton, SyncOptions, SyncOptionToggle, SyncDialogFooter, InvoicesDialog, PlanDialogFrame, ProjectList, RenameDialog, SharedProjectsSection, SharedProjectRow, MoreInfo, MoreInfoList, UsagePanel, UsageQuotaHint, UsageSection, UsageLegend, UsageProportionBar, UsageActionButton, ProjectDetailHeader, PlanBadge, ProjectDetailSection, PlanStack, PlanNotice, PlanPickerCard, PlanPickerHeader, PricingToggle, PromoCodeInput, PlanActionButton, QuotaExceededDialogView, InviteContactsDialog, WelcomeDialog, applyTriStateFilters, PanelFrame, PanelAddButton, PanelFrameBody, PanelScroll, PanelActionsRow, applyInvertedIndexFilter, ConfigSwitcherBar, PanelNote, ProjectRow, QuotaMeter, FilterChip, buildInvertedIndex, serverConnectionView, ServerConnectionButton, ModelProviderLabel, SyncFolderRow, SyncFolderStatus, PlanTierOption, PlanActionRow, SubscriptionStatusView, DailyCapField, PlanInfoPopover, PlanCardGrid, ReferralRewardSummary, CheckoutDialogFrame, ConnectionCard, ReferralRewardNote } from '../chunk-6EEVMPOH.js';
12
- export { ConnectedAssistantDock, redlineStats, textToArtifact, toRedlineMarkdown, useConnectedAiTask, useConnectedChat, useSemanticSearch, useWorkspaceDocs } from '../chunk-LDAV4UDA.js';
13
- import { useConnectedWorkspaceRole, useConnectedWorkflowScopeSource, ConnectedWorkflowDocumentsField, ConnectedWorkflowLauncher, ConnectedNativeDocxEditor, toWorkflowFieldDocument } from '../chunk-OUCSQ3IE.js';
14
- export { ConnectedWorkflowDocumentsField, ConnectedWorkflowLauncher, ConnectedWorkflowsTable, DEFAULT_CONNECTED_WORKFLOWS_TABLE_LABELS, toWorkflowFieldDocument, useConnectedAgentOptions, useConnectedWorkflowScopeSource, useConnectedWorkspaceRole, useDocxCommentTarget, useNativeDocxSupport } from '../chunk-OUCSQ3IE.js';
15
- import { ConnectedMarkdown, InternalDocLink, ExternalLink, DocumentWorkspaceContext } from '../chunk-C4GMH6TZ.js';
16
- export { ConnectedDocumentToolsProvider, ConnectedMarkdown, DocumentChip, DocumentWorkspaceContext, ExternalLink, InternalDocLink, MailChip, MermaidDiagram, WorkspaceDocumentReference, useDocumentViewerSupport, useDocumentWorkspace, useViewerDraftDocument, useViewerIsDetached, useViewerPassageCitation, useViewerStreamingDocument } from '../chunk-C4GMH6TZ.js';
11
+ import { MessageJsonTree, DraggableHeader, ProfileCard, AvatarPicker, IdentityVerificationCard, IdentityVerificationDialog, RequireVerified, PasswordChangeDialog, EMAIL_NOTIFICATION_KEYS, EMAIL_NOTIFICATION_CATEGORIES, NotificationCategoryList, toNotificationCategories, toActiveSessionViews, ActiveSessionsDialog, LogoutDialog, toLogoutSessionViews, DeleteAccountDialog, toDeleteBlockerViews, PremiumModelsFrame, ConnectionsLoading, ConnectionsError, ConnectionsEmpty, UsageToggle, SettingsPage, UsageSummary, AppearanceSettings, UsageLineChart, SyncDialogBody, SyncField, SyncSelect, SyncSmallNote, SyncLoading, SyncReconnectNotice, SyncNote, SyncTreeFrame, SyncLinkRow, SyncLinkButton, SyncOptions, SyncOptionToggle, SyncDialogFooter, InvoicesDialog, PlanDialogFrame, ProjectList, RenameDialog, SharedProjectsSection, SharedProjectRow, MoreInfo, MoreInfoList, UsagePanel, UsageQuotaHint, UsageSection, UsageLegend, UsageProportionBar, UsageActionButton, ProjectDetailHeader, PlanBadge, ProjectDetailSection, PlanStack, PlanNotice, PlanPickerCard, PlanPickerHeader, PricingToggle, PromoCodeInput, PlanActionButton, QuotaExceededDialogView, InviteContactsDialog, WelcomeDialog, applyTriStateFilters, PanelFrame, PanelAddButton, PanelFrameBody, PanelScroll, PanelActionsRow, applyInvertedIndexFilter, ConfigSwitcherBar, PanelNote, ProjectRow, QuotaMeter, FilterChip, buildInvertedIndex, serverConnectionView, ServerConnectionButton, ModelProviderLabel, SyncFolderRow, SyncFolderStatus, PlanTierOption, PlanActionRow, SubscriptionStatusView, DailyCapField, PlanInfoPopover, PlanCardGrid, ReferralRewardSummary, CheckoutDialogFrame, ConnectionCard, ReferralRewardNote } from '../chunk-OZRGYS3J.js';
12
+ export { ConnectedAssistantDock, redlineStats, textToArtifact, toRedlineMarkdown, useConnectedAiTask, useConnectedChat, useSemanticSearch, useWorkspaceDocs } from '../chunk-OGADWN5L.js';
13
+ import { useTranscriptRuns, TranscriptEntry, ThreadCallLogCard, RecordingCard, useMeetingThreadMessages, threadTranscriptRuns, useProvisionalSpeakers, TranscriptRunsContext, ProvisionalSpeakers, CallConversationEmpty } from '../chunk-A634VUNB.js';
14
+ export { useMeetingThreadMessages } from '../chunk-A634VUNB.js';
15
+ import { parseCallLogDetail } from '../chunk-S3YRRD54.js';
16
+ import { useConnectedWorkspaceRole, useConnectedWorkflowScopeSource, ConnectedWorkflowDocumentsField, ConnectedWorkflowLauncher, ConnectedNativeDocxEditor, toWorkflowFieldDocument } from '../chunk-XGUN44A4.js';
17
+ export { ConnectedWorkflowDocumentsField, ConnectedWorkflowLauncher, ConnectedWorkflowsTable, DEFAULT_CONNECTED_WORKFLOWS_TABLE_LABELS, toWorkflowFieldDocument, useConnectedAgentOptions, useConnectedWorkflowScopeSource, useConnectedWorkspaceRole, useDocxCommentTarget, useNativeDocxSupport } from '../chunk-XGUN44A4.js';
18
+ import { ConnectedMarkdown, InternalDocLink, ExternalLink, DocumentWorkspaceContext } from '../chunk-DNGA25ZA.js';
19
+ export { ConnectedDocumentToolsProvider, ConnectedMarkdown, DocumentChip, DocumentWorkspaceContext, ExternalLink, InternalDocLink, MailChip, MermaidDiagram, WorkspaceDocumentReference, useDocumentViewerSupport, useDocumentWorkspace, useViewerDraftDocument, useViewerIsDetached, useViewerPassageCitation, useViewerStreamingDocument } from '../chunk-DNGA25ZA.js';
17
20
  import { ExplorerFileTile, formatFolderSegment, hasFolderProviderIcon, FolderProviderIcon, ExplorerFolderTile, StatusPill, FailedStageIcon, DocumentNameCellFrame, DocumentRowMenu, visibilityToggleTooltip, FolderCell, FolderCommandList, RelatedDocsCell, FilterButton, DOCUMENTS_ROW_HEIGHT_INITIAL, searchExplorerDocuments, buildExplorerEntries, collectFolderDocs, joinFolderPath, getExplorerDisplayName, RECENTLY_DELETED_HINT, RECENTLY_DELETED_HINT_PLURAL, canDeleteDocument, ExplorerFrame, ExplorerStage, ExplorerScroller, ExplorerLoadingTiles, ExplorerEmpty, ExplorerMarquee, ExplorerDropOverlay, ExplorerDragPreview, CheckboxCell, TagColumnHeader, ExplorerFileTooltip, visibilityAudience, TagFormRoot, TagFormNameField, TagFormSelectField, TagFormNote, TagFormOptionsEditor, TagFormInstructionField, TagFormMeta, TagFormFooter, TagFormSharedToggle, FilesViewCenter, FilesFilterBar, TransferProgressView, TransferResumeBanner, ExportResultsReport, TransferScopeChooser, TransferKindsPicker, TransferReferencesChooser, ExportMethodChooser, ExportWorkspacePicker, TransferConflictChooser, TransferPlanSummary, ExportFooter, ExportModalTitle, ROW_MIN, rowHeightForLines, linesForRowHeight, RowDensityControl, VendorLogo, FolderFilterButton, FolderPickerRow, UploadFrame, UploadContainer, SelectedFilesList, RejectedFilesList, UploadErrorMessage, UploadProgress, PrivacyExplainerModal, MultiSelectCellEditor, DOCUMENT_TYPE_OPTIONS, DEFAULT_DOCUMENT_COLUMNS, shareStateOf, BulkActionsBar, shareTooltipFor, parseFolderSegments, AiReviewDialogView, MoveToFolderDialog, sortFields, filterFieldsByName, fieldsApplyBarCopy, FieldsEditorRoot, FieldsEditorToolbar, FieldsEditorList, FieldRow, FieldsEmptyState, fieldsEmptyText, FieldsApplyBar, FieldsManagerDefinition, FieldsManagerBody, FieldsManagerTitle, BulkTagEditorDialog, BulkReplaceDialog, FieldValue, FieldFolderSelect, FieldFolderValue, FieldNativeSelect, FieldWithAttribution, EMAIL_VIEW_COLUMNS, useGridViews, ViewSelectorMenu, FilesAddMenu, applyColumnLayout, applyViewColumns, sortExplorerFiles, FilesPage, UrlInputDialog, FilesPageHeader, FilesToolbar, ExplorerFileNavigator, NavigatorPickerBar, FilesPageMain, DocumentGrid, resolveDocumentGridLayout, FilesModalFooter, BulkLabelSelectView, confirmHideFromMembers, DocumentsFolderButton, FilesTagsButton, UploadSourceSection, UploadSourcePicker, UploadBrowseButtons, canEditDocumentFields, FieldLabelsSelect, ShareToggle, FieldAttribution, UploadDropArea, canChangeVisibility, UploadUrlButton } from '../chunk-46XON6PW.js';
18
21
  import { ViewToggle, DocumentViewToggle } from '../chunk-JJA6GQKH.js';
19
22
  import { ModalBreadcrumbHeader, ModalCrumbs } from '../chunk-RC6VTY2H.js';
23
+ import { useDocumentFilter, useConnectedTags, useConnectedDocuments, useConnectedConversations, useListedDocuments, listedDocuments } from '../chunk-5ETT7ZIO.js';
24
+ export { isListedDocument, useConnectedConversations, useConnectedDocuments, useConnectedTags, useDocumentFilter, useListedDocuments } from '../chunk-5ETT7ZIO.js';
25
+ import { useConnectedWorkspace, useConnection, useOptionalConnection, ConnectionProvider } from '../chunk-IZJ3BOJO.js';
26
+ export { SESSION_EXPIRED_MESSAGE, isAuthenticated, useConnectedWorkspace, useConnection } from '../chunk-IZJ3BOJO.js';
20
27
  import { SignatureCertificate, SignDocumentDialog } from '../chunk-PQU6LE7U.js';
21
28
  import '../chunk-6HKLTYNN.js';
22
29
  import { SettingsSection, SettingsCard, SettingsActionRow, SettingsRow, SettingsDangerZone, SettingsPanel, SettingsDisclosure } from '../chunk-MZA7GMOH.js';
@@ -24,7 +31,7 @@ import '../chunk-MTSKK3BN.js';
24
31
  import '../chunk-LU23I2HS.js';
25
32
  import { FactSourcesPanel, FactPassageItem } from '../chunk-HFZ45FD3.js';
26
33
  import '../chunk-IA5BYEO7.js';
27
- import { EntityTooltip, EntityTooltipHeader, EntityTooltipSection, EntityTooltipHint, SharedCell, WorkspaceActivityList, WorkspaceNotificationMenu, ThreadFollowMenuItem, ThreadFollowButton, TagTable, TagPicker, tagsPageNouns, entitiesPhrase, ExtractEntitiesDialog, GridRowNavigator, LoadingIndicator, EntityIdentityBar, IDENTITY_NAME_MAX_LENGTH, EntityTooltipStats, tagTableDocx, documentCount, tagTableLabels, TagDetail, tagDetailLabels, tagNoteLabel, tagKindDescription, Toolbar, glossaryEntries, glossaryDocx, glossaryMarkdown, glossaryFileName } from '../chunk-L2C7WV6D.js';
34
+ import { EntityTooltip, EntityTooltipHeader, EntityTooltipSection, EntityTooltipHint, SharedCell, WorkspaceActivityList, WorkspaceNotificationMenu, ThreadFollowMenuItem, ThreadFollowButton, TagTable, TagPicker, tagsPageNouns, entitiesPhrase, ExtractEntitiesDialog, GridRowNavigator, LoadingIndicator, EntityIdentityBar, IDENTITY_NAME_MAX_LENGTH, EntityTooltipStats, tagTableDocx, documentCount, tagTableLabels, TagDetail, tagDetailLabels, tagNoteLabel, tagKindDescription, Toolbar, glossaryEntries, glossaryDocx, glossaryMarkdown, glossaryFileName } from '../chunk-DF2GSH4D.js';
28
35
  import { MemberAvatarStack } from '../chunk-FUPAGAZB.js';
29
36
  import { renderSearchSnippet, SearchGroupHeader, isMeaningMatch, extractHighlightTerms, passesRelevanceCutoff, groupSearchResults, SearchPillToggle, SearchPagination, SearchPageFrame, SearchPageHeader, ApplyLabelDialog, SearchPageBody, SearchToolbarRow, SearchBar, SearchControlsBar, RelevanceThreshold, SearchTotalsHeadline, ApplyLabelButton, getSearchMatchHint, SearchResultsMain, SearchResultsInner, SearchErrorBanner, SearchResultList, SearchGroupCard, SearchNoResults, SearchEmptyState } from '../chunk-G4IYES7G.js';
30
37
  import { SearchHit } from '../chunk-AYAWG2CM.js';
@@ -36,18 +43,19 @@ import '../chunk-UJE32SST.js';
36
43
  import '../chunk-NHZK64TQ.js';
37
44
  import { PlainMailBodyEditor, MemberNameCell, MemberMutedText, MemberRoleCell, MemberListLoading, MemberBulkActions, buildMailFolderTree, MailFolderTree, AddContactsResults, AddContactsForm, emailTokens, EMPTY_CONTACT_FORM, contactToForm, contactStatusLabel, summarizeImport, matchesContact, contactName, primaryEmail, draftMailCompose, replyMailCompose, emptyMailCompose, MailGrid, MailMessageView, DmThreadFrame, DmAccessRequestBanner, planContactInvites, MAX_INVITE_EMAILS, summarizeUnsentInvites, applyContactInviteResults, summarizeContactInvites, failContactInvites, validateContactForm, inviteEmail, formToContactCard, DEFAULT_CONTACT_OUTCOME_LABELS, contactOutcomeMessage, MailDocumentPicker, parseMailRecipients } from '../chunk-H7L43DIE.js';
38
45
  import '../chunk-NBV56SGU.js';
46
+ import { DmThreadHeader, DmInviteChip } from '../chunk-2S3LT5KE.js';
39
47
  import { ErrorBoundary } from '../chunk-EQ3WRY2N.js';
40
48
  import { LabelMultiSelectView } from '../chunk-JMQLTMJ7.js';
41
49
  import { workspaceKindColor, WorkspaceIdentity, SidebarBadgeRow, ActionCluster, prefetchChunk } from '../chunk-PXYP3DM5.js';
42
- import { PassagePill, useCopyText } from '../chunk-MTHAQGJB.js';
43
50
  import '../chunk-K4BGOPGG.js';
51
+ import { useHost, ArbiHost } from '../chunk-T4P237N6.js';
44
52
  import '../chunk-ZCOVDK2E.js';
45
53
  import { isDefinitionsLabel, DOCX_MIME_TYPE, toDefinitionSource, definitionLabels } from '../chunk-IYUKJESY.js';
46
54
  import { decodeWhitespaceEntities } from '../chunk-AF6RDAJF.js';
47
- import { EntityChip, StepTraceSummary, StepTrace, getCurrentAgentStepPresentation, AssistantEntity, ThreadActivity, SubAgentLane, getAgentStepPresentation, stepAccent, MODEL_TIER_ICON_MAP, StepRow, StepNarration, StepSummary, StepDetail, StepOutcome, StepParams, GoalCriteria, SubStepGroup, MODEL_TIER_LABELS, fromPlanSteps, latestMessageTime, isSupersededStop, compactThreadActivity, unnotifiedMentions, notifiedLabel, linkedRunsFromActivity, getModelIcon, SubagentRoster, buildLibrarySkills, filterLibrarySkills, SKILL_SOURCE_LABELS, SKILL_TYPE_LABELS, SkillViewToggle, SkillFilterChips, SkillTile, SkillGenerateForm, SkillLibraryDetail, parseSkillFrontmatter, SKILL_MAIN_FILENAME, SkillEditForm, DEFAULT_AGENT_CAPABILITIES, stripPersonaPreamble, AgentCreator, DEFAULT_AGENT_TYPES, DEFAULT_AGENT_TEMPLATES, AgentAvatarField, isValidAgentName, AgentConnectInstructions, TaskRunsDialog, TaskActivityDialog, WorkflowStepBar, ConsentPage, ConsentCard, ConsentHeader, ConsentNotice, ConsentSection, ConsentBulletList, ConsentStrong, ConsentText, ConfigForm, AgentEditView, AgentMainView, AgentCreatedView, AgentCreateView, WorkflowRunStatus, ThreadStatusLine, WorkflowThreadStrip, WorkflowStepAction, WorkflowThreadStartedBy, TaskFlow, useWorkflowUsage, WEB_WORKFLOWS, DASHBOARD_PINNED, CUSTOM_TASK, REMIND_TASK, DASHBOARD_OPERATIONS, sortByRecentUse, taskComposerToCreateRequest, taskComposerToUpdateRequest, composerToWorkflowUpdate, moveTargets, workflowToComposerValues, REMIND_TASK_ID, CUSTOM_TASK_ID, taskToComposerValues, TaskComposer, renderWorkflowIcon, AUTOMATION_EVENTS, TaskPlan, TaskStartDialog, ThreadLauncher, NewThreadDialog, GENERATE_IMAGE_ID, IMAGE_ASPECT_AUTO, deriveAnnotationName, ANNOTATE_ID, recordWorkflowUse, openWorkflowLaunch, useWorkflowLaunchRequest, AgentBar, AgentBarNotes, AgentBarQueuedNote, AgentBarProbeAnswer, BUILTIN_SKILLS, TaskEmptyState, ConsentMessage, CopyableUrl, ConsentPermissionList, ConsentActions, ConsentFootnote, AgentBarStatus, AgentBarIconButton, AgentBarMenu, composePersona, newThreadToRequest, importSkillFile, importSkillFromUrl, WorkflowRunner, skillSlug, serializeSkill, toPlanSteps, useWorkflowView, STATUS_LABELS, asTaskStatus, workflowToSkillMarkdown, closeWorkflowLaunch } from '../chunk-R4K5L6QY.js';
55
+ import { EntityChip, StepTraceSummary, StepTrace, getCurrentAgentStepPresentation, AssistantEntity, ThreadActivity, SubAgentLane, getAgentStepPresentation, stepAccent, MODEL_TIER_ICON_MAP, StepRow, StepNarration, StepSummary, StepDetail, StepOutcome, StepParams, GoalCriteria, SubStepGroup, MODEL_TIER_LABELS, fromPlanSteps, latestMessageTime, isSupersededStop, compactThreadActivity, unnotifiedMentions, notifiedLabel, linkedRunsFromActivity, getModelIcon, SubagentRoster, buildLibrarySkills, filterLibrarySkills, SKILL_SOURCE_LABELS, SKILL_TYPE_LABELS, SkillViewToggle, SkillFilterChips, SkillTile, SkillGenerateForm, SkillLibraryDetail, parseSkillFrontmatter, SKILL_MAIN_FILENAME, SkillEditForm, DEFAULT_AGENT_CAPABILITIES, stripPersonaPreamble, AgentCreator, DEFAULT_AGENT_TYPES, DEFAULT_AGENT_TEMPLATES, AgentAvatarField, isValidAgentName, AgentConnectInstructions, TaskRunsDialog, TaskActivityDialog, WorkflowStepBar, ConsentPage, ConsentCard, ConsentHeader, ConsentNotice, ConsentSection, ConsentBulletList, ConsentStrong, ConsentText, ConfigForm, AgentEditView, AgentMainView, AgentCreatedView, AgentCreateView, WorkflowRunStatus, ThreadStatusLine, WorkflowThreadStrip, WorkflowStepAction, WorkflowThreadStartedBy, TaskFlow, useWorkflowUsage, WEB_WORKFLOWS, DASHBOARD_PINNED, CUSTOM_TASK, REMIND_TASK, DASHBOARD_OPERATIONS, sortByRecentUse, taskComposerToCreateRequest, taskComposerToUpdateRequest, composerToWorkflowUpdate, moveTargets, workflowToComposerValues, REMIND_TASK_ID, CUSTOM_TASK_ID, taskToComposerValues, TaskComposer, renderWorkflowIcon, AUTOMATION_EVENTS, TaskPlan, TaskStartDialog, ThreadLauncher, NewThreadDialog, GENERATE_IMAGE_ID, IMAGE_ASPECT_AUTO, deriveAnnotationName, ANNOTATE_ID, recordWorkflowUse, openWorkflowLaunch, useWorkflowLaunchRequest, AgentBar, AgentBarNotes, AgentBarQueuedNote, AgentBarProbeAnswer, BUILTIN_SKILLS, TaskEmptyState, ConsentMessage, CopyableUrl, ConsentPermissionList, ConsentActions, ConsentFootnote, AgentBarStatus, AgentBarIconButton, AgentBarMenu, composePersona, newThreadToRequest, importSkillFile, importSkillFromUrl, WorkflowRunner, skillSlug, serializeSkill, toPlanSteps, useWorkflowView, STATUS_LABELS, asTaskStatus, workflowToSkillMarkdown, closeWorkflowLaunch } from '../chunk-EJSVRT3G.js';
48
56
  import { MultiSelect } from '../chunk-CQCC7LE7.js';
49
- import { PersonPill, documentScopeLabels, matchWorkflowScope } from '../chunk-XMUYSOYU.js';
50
- import { SectionLabel } from '../chunk-ZWL7GPQX.js';
57
+ import { PersonPill, documentScopeLabels, matchWorkflowScope } from '../chunk-KKBYWVEL.js';
58
+ import { SectionLabel } from '../chunk-TKOP6WMD.js';
51
59
  import { TriStateFilterMenu } from '../chunk-G4GLDQLY.js';
52
60
  import '../chunk-M4S75AEJ.js';
53
61
  import '../chunk-5LXQPP2K.js';
@@ -55,6 +63,8 @@ import { SelectionBar, SelectionBarAction } from '../chunk-NUNKSZKU.js';
55
63
  import '../chunk-RLWIUUQ5.js';
56
64
  import { FilterInput } from '../chunk-YU2KUMGE.js';
57
65
  import '../chunk-WBCGVEJX.js';
66
+ import { TabHeader } from '../chunk-ABEKUV6L.js';
67
+ import { EmptyState } from '../chunk-P6GHJSLR.js';
58
68
  import { GridView } from '../chunk-7F5Z4K5W.js';
59
69
  import { StreamedArtifactFrame } from '../chunk-LOJVUGBJ.js';
60
70
  import { DEFAULT_PASSWORD_RULES, AccountRecoveryDialog, promptSaveCredential, useFragmentCredentials, AuthLayout, AuthHeading, AuthField, AuthInput, AuthFieldBadge, AuthLink, AuthNote, RevealablePasswordInput, AuthConsent, AuthSubmitButton, AuthDivider, AuthAlert, RecoveryKeyDialog, parseAuthError, AuthOfflineBadge, AuthTabs, splitAuthHash, withTrailingFragment } from '../chunk-VN4FSGBR.js';
@@ -62,30 +72,20 @@ import { PasswordStrengthInput } from '../chunk-P6OLZGQA.js';
62
72
  import { attendeeKey, upcomingOf, conferenceUrl, isWebinarConference, canJoinEvent, calendarToListItem, buildGridEvents, pendingCreateToGrid, newEventDraft, MiniMonth, CalendarList, CalendarGrid, printCalendar, EventDetails, ScopeDialog, CalendarFormDialog, ProposeTimeDialog, isCalendarAttachment, parseIcsInvite, formatEventWhen, groupSlotsByDay, publicBookingMessage, formatSlotRange, zoneOptions, buildTimeChangeRequest, eventToDraft, needsScope, validateDraft, CALENDAR_DEFAULT_LABELS, buildCreateBody, buildDeleteTarget, EventEditor, toSettingsValue, CalendarSettingsForm, describeCalendarError, normalizeFeedUrl, parseOverlayLink, isAllDayDraft, draftRangeUtc, freeBusyToRows, SchedulingAssistant, applySuggestion, toSuggestionViews, bookingLink, defaultRoomWindow, bookingToForm, emptyBookingForm, slugify, WeeklyHoursEditor, validateBookingForm, formToBookingBody, WEEKDAY_NAMES, formatBusy, buildEditRequest } from '../chunk-AWVGKHJT.js';
63
73
  import { detectTimeZone, utcToDate, formatPlainDate, formatInZone, safeZone, todayInZone, addDays, listTimeZones, wallToUtc } from '../chunk-OJIX5NBN.js';
64
74
  import { DocumentPicker } from '../chunk-WNDIVNPT.js';
65
- import { useTranscriptRuns, TranscriptEntry, ThreadCallLogCard, RecordingCard, useMeetingThreadMessages, threadTranscriptRuns, useProvisionalSpeakers, TranscriptRunsContext, ProvisionalSpeakers, CallConversationEmpty } from '../chunk-A634VUNB.js';
66
- export { useMeetingThreadMessages } from '../chunk-A634VUNB.js';
67
- import { parseCallLogDetail } from '../chunk-S3YRRD54.js';
68
- import { useDocumentFilter, useConnectedTags, useConnectedDocuments, useConnectedConversations, useListedDocuments, listedDocuments } from '../chunk-5ETT7ZIO.js';
69
- export { isListedDocument, useConnectedConversations, useConnectedDocuments, useConnectedTags, useDocumentFilter, useListedDocuments } from '../chunk-5ETT7ZIO.js';
70
- import { useConnectedWorkspace, useConnection, useOptionalConnection, ConnectionProvider } from '../chunk-IZJ3BOJO.js';
71
- export { SESSION_EXPIRED_MESSAGE, isAuthenticated, useConnectedWorkspace, useConnection } from '../chunk-IZJ3BOJO.js';
72
- import { DmThreadHeader, DmInviteChip } from '../chunk-2S3LT5KE.js';
73
- import { useHost, ArbiHost } from '../chunk-T4P237N6.js';
74
- import { TabHeader } from '../chunk-ABEKUV6L.js';
75
- import { EmptyState } from '../chunk-P6GHJSLR.js';
76
- import { useLongPaste, useRecipientDraft, SlashMenu, ContextUsageBar, findMessageDocument, getParticipantTints, flashMessage, parseSlashTokenInProgress, buildSlashItems, filterSlashItems, copyMessageToClipboard, BranchControls, ThreadVisualizer, downloadTableAsCsv, useOpenCitation, ModelAutoIcon, ModelTierIcon, ModelDot, ModelPricingTip, ModelPickerPopover, ModelOption, ModelMenuDivider, ModelTierOption, ModelConfigureButton, ModelMenuMessage, ModelPickerTrigger, ModelTriggerContent, ModelOptionLabel, ConversationBody, ConversationMain, ConversationLoading, PendingAnswerBar, ComposerTools, PaModeBadge, ComposerAccessories, DraftingDocChip } from '../chunk-ROV3FG3J.js';
77
- import { ComposerSend, ComposerVoiceButton, Composer, MessageActionMenu, MessageActionButton, MessageFooter, MessageRoot, MessageContent, MessageAuthor, MessageBubble, MessageByline, MessageSubagentBadge, MessageBody, MessageNarration, useStreamAnnouncement, MessageList, WorkflowStepChip, MessageSources, ChatPage, ConversationEmpty, MessageAlert, ComposerDock, ComposerContainer, ScrollToBottom } from '../chunk-LOFESOAW.js';
75
+ import { useLongPaste, useRecipientDraft, SlashMenu, ContextUsageBar, findMessageDocument, getParticipantTints, flashMessage, parseSlashTokenInProgress, buildSlashItems, filterSlashItems, copyMessageToClipboard, BranchControls, ThreadVisualizer, downloadTableAsCsv, useOpenCitation, ModelAutoIcon, ModelTierIcon, ModelDot, ModelPricingTip, ModelPickerPopover, ModelOption, ModelMenuDivider, ModelTierOption, ModelConfigureButton, ModelMenuMessage, ModelPickerTrigger, ModelTriggerContent, ModelOptionLabel, ConversationBody, ConversationMain, ConversationLoading, PendingAnswerBar, ComposerTools, PaModeBadge, ComposerAccessories, DraftingDocChip } from '../chunk-W43S7COD.js';
76
+ import { ComposerSend, ComposerVoiceButton, Composer, MessageActionMenu, MessageActionButton, MessageFooter, MessageRoot, MessageContent, MessageAuthor, MessageBubble, MessageByline, MessageSubagentBadge, MessageBody, MessageNarration, useStreamAnnouncement, MessageList, WorkflowStepChip, MessageSources, ChatPage, ConversationEmpty, MessageAlert, ComposerDock, ComposerContainer, ScrollToBottom } from '../chunk-TY76UEFK.js';
77
+ import { ConversationFilter } from '../chunk-6AMCMKTF.js';
78
78
  import { workspaceDocIdFromHref } from '../chunk-DDCMLHXF.js';
79
79
  import '../chunk-7XF5SFJ2.js';
80
- import { useMentionAutocomplete, stepStatesFromActivity, stepDocuments, splitDocRef, stepPhase, stepKindOf, STEP_KIND_ICONS, stepLevels, canAssign, assigneeName, runFieldsOf, initialRunInputs, workflowSteps, runThreadTitle, stepFields } from '../chunk-THNTNAYI.js';
80
+ import { buildDeepLinkPath, buildDeepLinkUrl } from '../chunk-7Q5INDUS.js';
81
+ import { useMentionAutocomplete, stepStatesFromActivity, stepDocuments, splitDocRef, stepPhase, stepKindOf, STEP_KIND_ICONS, stepLevels, canAssign, assigneeName, runFieldsOf, initialRunInputs, workflowSteps, runThreadTitle, stepFields } from '../chunk-DV25UPJ7.js';
81
82
  import { mergeSkillWorkflows, composeWorkflowPrompt, isEmptyWorkflowScope, inputsFromContext, workflowsAccepting, promptFieldName, validateInputs, defaultInputs, buildLaunch } from '../chunk-TZGBRLPK.js';
82
83
  import '../chunk-AUS3KBHJ.js';
83
- import { fmtDate, initials } from '../chunk-5VYJP6XD.js';
84
+ import '../chunk-NPLYHR2E.js';
84
85
  import { useIsPhone, useMediaQuery } from '../chunk-SLSBJRWW.js';
85
86
  import { useListKeyNav, MentionMenu } from '../chunk-GAGYAHYO.js';
86
- import { ConversationFilter } from '../chunk-6AMCMKTF.js';
87
- import { buildDeepLinkPath, buildDeepLinkUrl } from '../chunk-7Q5INDUS.js';
88
- import '../chunk-NPLYHR2E.js';
87
+ import { PassagePill, useCopyText } from '../chunk-MTHAQGJB.js';
88
+ import { fmtDate, initials } from '../chunk-5VYJP6XD.js';
89
89
  import { useBlocksEnvironment, useOpenWorkflow, useRequestedSettingsSection, useIntentRequest, mailDraftRequest, useCalendarViewStore, conversationStartRequest } from '../chunk-SSRFSSIT.js';
90
90
  export { requestCalendarComposer, requestCalendarEvent, useCalendarViewStore } from '../chunk-SSRFSSIT.js';
91
91
  import { ConfirmDialog } from '../chunk-U4HWVCRN.js';
@@ -93,11 +93,11 @@ import { ModalHeader, ModalScaffold, ModalSection, ModalSectionTitle } from '../
93
93
  import '../chunk-7F6CBP3Z.js';
94
94
  import '../chunk-VUNV25KB.js';
95
95
  import { QueryClient, useQueryClient, QueryClientProvider } from '@tanstack/react-query';
96
- import { useWorkspaces, ArbiBotHeadIcon, IN_FLIGHT_DOCUMENT_STATUSES, useOfflineDocumentIds, useOpenViewerDocumentId, FINISHED_DOCUMENT_STATUSES, useMailPolicy, useProcessingTasks, resolveDocumentStatus, useArbi, useIsCreatingTag, useUpdateDocuments, useDeleteDocuments, useRenameFolder, useDownloadDocuments, useTags, useDocumentHostActions, useDocumentThumbnails, HtmlIcon, useArbiSessionState, selectDraft, useArbiSessionStore, useAudioRecorder, MicRecordingOverlay, useArbiWsStatus, useArbiWsStore, useUserSettings, useProcessingTask, useDocumentPendingSync, useWorkspaceUsers, useMessageTimer, useDocuments, useAvailableModels, formatGbp, CitationRenderer, useArbiSession, buildMentionCandidates, useConversations, ASSISTANT_MENTION_LABEL, useConversationItems, useDeleteMessage, useArbiHost, transcriptSegmentOf, useConfig, useThinkingContent, useCreateFact, useCreateFacts, workflowStepOf, stripSpeakerPrefix, MessageArtifactCard, useConversationData, useBranchNavigation, useSkills, useBuiltinCommands, useDocumentsSupport, useConversationActivity, useMessageDetails, useWorkflows, getWorkspaceKind, resolveConfigModel, useRunConversation, useWorkspaceActivity, callLink, openCall, startDmCall, calendarQueryKeys, mailQueryKeys, arbiQueryKeys, invalidateConversationLists, isWorkspaceNotificationType, useNotifications, useDeleteNotifications, useMarkNotificationsRead, useCallsEnabled, serverNotificationBellEntry, documentDisplayName, useWorkspaceNotificationLevel, useFollowThread, useUploadSkillFiles, useSaveSkill, useSetSkillVisibility, useDeleteSkill, useSkillSource, useAgentModels, useMcpTools, useAgentConfig, useAgentWorkspaces, useCreateAgent, useSaveAgentConfig, useGrantAgentAccess, useRevokeAgentAccess, useGenerateAgentAvatar, useWorkflowRuns, useAgents, ArtifactCanvas, ConversationScope, useConversation, useTagKindSchema, useCreateTag, useSetTagValues, useUpdateTagKindSchema, useUpdateTag, useFacts, useDeleteTag, useExtractEntities, useEntityExtractionDocIds, useStartWorkspaceTransfer, useResumeWorkspaceTransfer, useCancelWorkspaceTransfer, useWorkspaceTransfer, useWorkspaceTransfers, useWorkspaceExportDownload, usePlanWorkspaceTransfer, isTransferResumable, isTransferFinished, useShellWorkspaces, useProfile, useUpdateProfile, useRequestEmailChange, useConfirmEmailChange, useNameEditor, useAvatarCrop, useEmailChange, ImageCropModal, useIdentityVerification, usePasswordChange, usePasswordChangeForm, useNotificationPreferences, useSessions, useCurrentSessionId, useTerminateSession, useSignOut, useDeleteAccount, useDeleteAccountFlow, useMailClient, defaultMailAlias, useClaimNativeAlias, useMailOnline, useConnectMailAccount, useDisconnectMailAccount, useMailAccounts, useUpdateUserSettings, useConnectorVendorVisibility, useConnectorCatalog, useMyConnectors, useDisconnectConnector, useSlackConnection, useDisconnectSlack, isMailboxSyncVendor, isSharePointVendor, useWorkspaceTrash, useInvalidateStorage, useStorageActions, useStorageItems, useStorageItemNames, useStorageProjects, useUserUsageToday, useStorageSnapshots, useUpdateWorkspace, useAddWorkspaceMembers, useRemoveWorkspaceMembers, useSetWorkspaceMemberRoles, toShellWorkspace, useEnableMailboxSync, useMailboxFolders, useEnableDriveSync, useDriveFolderChildren, connectorErrorStatus, useProjectInvoices, useProjects, useUpdateProjectFields, useChargeWatch, useAddonQuote, STILL_WORKING, useProjectBillingPortal, useProjectUsage, useIsSlow, useProducts, useCreateProject, useDeleteProject, useRefreshProject, useBoxRole, useContacts, useInviteContacts, useCanCreateProjects, useDeleteWorkspaces, PROJECT_CREATION_DENIED_REASON, useCreateContact, useUpdateContact, useLinkContact, useEntitlements, useImportContacts, entitlementRefusal, useDeleteContact, MAX_RETRIEVE_DOC_IDS, useSemanticSearch, useAssignDocTags, useMailUnlock, useMailFolders, useMailMessages, useMailDraftCompose, useMailMessage, useMailCache, MailOfflineUnavailableError, accountPath, useCalendarEvents, useCalendars, useCanHostCalls, useOpenCallMeetingChat, usePeople, useFetchCalendarEvent, useCalendarSettings, useCalendarOverlays, useCalendarOutbox, useCalendarAccounts, useSyncAccountsOnOpen, useResumeCalendarAccountConnect, useCreateEvent, useUpdateEvent, useDeleteEvent, useMoveEvent, useRespondToEvent, useCreateCalendar, useUpdateCalendar, useDeleteCalendar, useImportCalendar, useSaveCalendarSettings, useRefreshCalendar, useCalendarEvent, useMailAttachmentText, useCalendarEventByUid, getPublicBookingPage, bookPublicSlot, PublicBookingError, isZipFile, prepareUploadFiles, UPLOAD_MAX_FILE_SIZE, filesFromDrop, UPLOAD_ACCEPT, useUploadFromUrls, useUploadFiles, useUpdateDocTag, useRemoveDocTags, subscribeDocumentRows, useGenerateDocTags, useDocumentsLoading, selectViewingDocumentId, useRelatedDocuments, myChatId, useChatThread, useChatPost, useDeleteChatMessage, useMarkChatRead, setOpenChat, useAgentDmStatus, annotateThread, userDisplayName, DmComposer, TypingIndicator, useRenameChat, useAddChatMembers, useRemoveChatMember, useChats, useChatSummaries, useCreateGroupChat, useApplyChatModel, AUTO_CHAT_MODEL, formatGbpPerMillionTokens, useConfigSchema, useSaveConfig, useConversationPendingAuth, openAccessRequest, useRequestWorkspaceAccess, useIsEntitled, threadTabId, useUpdateConversation, useCanEditShared, useActOnStep, useCreateWork, useRunWorkflow, useStartTaskQuery, useCreateWorkflow, useUpdateWorkflow, usePlanWork, useWorkItems, TaskThreadPendingError, useMentionCandidates, useAgentRunControl, useConnectRunStream, useAnswerAgentQuestion, useConversationIsShared, useWorkspaceRole, buildPendingFirstTurn, useConversationTurn, useAskAgain, getOrphanedLastMessage, refuseChatWhenOffline, useThreadDocument, useDocumentAutoAdd, useAutoSendDraft, READ_ONLY_MEETING_TEXT, useAgentSession, useStartAgentSession, useCloseAgentSession, downloadRecoveryFile, LinkedInIcon, GoogleIcon, AppleIcon, useCurrentUser, isQueuedCalendarWrite, DateSeparator, ChatBubble, isAliasTakenError, nextAliasSuggestion, aliasTakenMessage, mailJson, connectorReturnTo, DmAvatar, ConversationList, GitHubIcon, getRelatedTotal, isDeploymentUserNotification, describeServerNotification, getWorkspaceActionText, getWorkspaceSentPhrase, BOX_SEAT_REFUSED, BOX_SEAT_REFUSED_TITLE, documentActivityPhrase, isSignatureNotificationType, inputRequestTitle, WORK_NOTIFICATION_LABELS, useConversationThreads, usePassageQuotes, useUpdateFact, useDeleteFact, useAccountClient, useDriveFolderDocCount, useChangeProjectPlan, useCancelProjectSubscription, usePreviewProjectPlanChange, useAddProjectAddonBlock, usePlanQuote, useCreateProjectCheckout, useInvalidateProjects, useSwitchWorkspace, fileAttachment, useMailProjects, useSaveMailDraft, useSendMail, useMailDraftReplaced, useCalendarInvitations, useDecideCounter, useSearchContacts, usePublishCalendar, useCalendarShares, useShareCalendar, useUnshareCalendar, useSubscribeCalendar, useHolidayCountries, useAddHolidayCalendar, cancelPublicBooking, useInvalidateAfterTransfer, useConfigs, useSaveConfigField, useDeleteConfig, isFullConfig, useChatUnreadTotal, useUnreadByPeer, useProjectConversationUsage, AiAnswer, ArbiWebSocketProvider, signatureNotificationPhrase, signatureRequestMeta, getNotificationTypeMeta, useMailDraftEditor, useFreeBusy, useFindTime, useCalendarSupport, useStartCalendarAccountOAuth, useConnectOAuthAccount, useBookingPages, useDeleteBookingPage, useRooms, SHAREPOINT_VENDORS, useUpdateProjectNextPeriodAddons, useUpdateProjectAddonSettings, useSyncCalendarAccount, useUpdateCalendarAccount, useDisconnectCalendarAccount, ACCOUNT_VENDOR, useCalDavProfiles, useConnectCalDavAccount, useSaveBookingPage, useCreateRoom } from '@arbidocs/react';
96
+ import { useWorkspaces, ArbiBotHeadIcon, IN_FLIGHT_DOCUMENT_STATUSES, useOfflineDocumentIds, useOpenViewerDocumentId, FINISHED_DOCUMENT_STATUSES, useMailPolicy, useProcessingTasks, resolveDocumentStatus, useArbi, useIsCreatingTag, useUpdateDocuments, useDeleteDocuments, useRenameFolder, useDownloadDocuments, useTags, useDocumentHostActions, useDocumentThumbnails, HtmlIcon, useArbiSessionState, selectDraft, useArbiSessionStore, useAudioRecorder, MicRecordingOverlay, useArbiWsStatus, useArbiWsStore, useUserSettings, useProcessingTask, useDocumentPendingSync, useWorkspaceUsers, useMessageTimer, useDocuments, useAvailableModels, formatGbp, CitationRenderer, useArbiSession, buildMentionCandidates, useConversations, ASSISTANT_MENTION_LABEL, useConversationItems, useDeleteMessage, useArbiHost, transcriptSegmentOf, useConfig, useThinkingContent, useCreateFact, useCreateFacts, workflowStepOf, stripSpeakerPrefix, MessageArtifactCard, useConversationData, useBranchNavigation, useSkills, useBuiltinCommands, useDocumentsSupport, useConversationActivity, useMessageDetails, useWorkflows, getWorkspaceKind, resolveConfigModel, useRunConversation, useWorkspaceActivity, callLink, openCall, startDmCall, calendarQueryKeys, mailQueryKeys, arbiQueryKeys, invalidateConversationLists, isWorkspaceNotificationType, useNotifications, useDeleteNotifications, useMarkNotificationsRead, useCallsEnabled, serverNotificationBellEntry, documentDisplayName, useWorkspaceNotificationLevel, useFollowThread, useUploadSkillFiles, useSaveSkill, useSetSkillVisibility, useDeleteSkill, useSkillSource, useAgentModels, useMcpTools, useAgentConfig, useAgentWorkspaces, useCreateAgent, useSaveAgentConfig, useGrantAgentAccess, useRevokeAgentAccess, useGenerateAgentAvatar, useWorkflowRuns, useAgents, ArtifactCanvas, ConversationScope, useConversation, useTagKindSchema, useCreateTag, useSetTagValues, useUpdateTagKindSchema, useUpdateTag, useFacts, useDeleteTag, useExtractEntities, useEntityExtractionDocIds, useStartWorkspaceTransfer, useResumeWorkspaceTransfer, useCancelWorkspaceTransfer, useWorkspaceTransfer, useWorkspaceTransfers, useWorkspaceExportDownload, usePlanWorkspaceTransfer, isTransferResumable, isTransferFinished, useShellWorkspaces, useProfile, useUpdateProfile, useRequestEmailChange, useConfirmEmailChange, useNameEditor, useAvatarCrop, useEmailChange, ImageCropModal, useIdentityVerification, usePasswordChange, usePasswordChangeForm, useNotificationPreferences, useSessions, useCurrentSessionId, useTerminateSession, useSignOut, useDeleteAccount, useDeleteAccountFlow, useMailClient, defaultMailAlias, useClaimNativeAlias, useMailOnline, useConnectMailAccount, useDisconnectMailAccount, useMailAccounts, useUpdateUserSettings, useDismissedTips, useConnectorVendorVisibility, useConnectorCatalog, useMyConnectors, useDisconnectConnector, useSlackConnection, useDisconnectSlack, isMailboxSyncVendor, isSharePointVendor, useWorkspaceTrash, useInvalidateStorage, useStorageActions, useStorageItems, useStorageItemNames, useStorageProjects, useUserUsageToday, useStorageSnapshots, useUpdateWorkspace, useAddWorkspaceMembers, useRemoveWorkspaceMembers, useSetWorkspaceMemberRoles, toShellWorkspace, useEnableMailboxSync, useMailboxFolders, useEnableDriveSync, useDriveFolderChildren, connectorErrorStatus, useProjectInvoices, useProjects, useUpdateProjectFields, useChargeWatch, useAddonQuote, STILL_WORKING, useProjectBillingPortal, useProjectUsage, useIsSlow, useProducts, useCreateProject, useDeleteProject, useRefreshProject, useBoxRole, useContacts, useInviteContacts, useCanCreateProjects, useDeleteWorkspaces, PROJECT_CREATION_DENIED_REASON, useCreateContact, useUpdateContact, useLinkContact, useEntitlements, useImportContacts, entitlementRefusal, useDeleteContact, MAX_RETRIEVE_DOC_IDS, useSemanticSearch, useAssignDocTags, useMailUnlock, useMailFolders, useMailMessages, useMailDraftCompose, useMailMessage, useMailCache, MailOfflineUnavailableError, accountPath, useCalendarEvents, useCalendars, useCanHostCalls, useOpenCallMeetingChat, usePeople, useFetchCalendarEvent, useCalendarSettings, useCalendarOverlays, useCalendarOutbox, useCalendarAccounts, useSyncAccountsOnOpen, useResumeCalendarAccountConnect, useCreateEvent, useUpdateEvent, useDeleteEvent, useMoveEvent, useRespondToEvent, useCreateCalendar, useUpdateCalendar, useDeleteCalendar, useImportCalendar, useSaveCalendarSettings, useRefreshCalendar, useCalendarEvent, useMailAttachmentText, useCalendarEventByUid, getPublicBookingPage, bookPublicSlot, PublicBookingError, isZipFile, prepareUploadFiles, UPLOAD_MAX_FILE_SIZE, filesFromDrop, UPLOAD_ACCEPT, useUploadFromUrls, useUploadFiles, useUpdateDocTag, useRemoveDocTags, subscribeDocumentRows, useGenerateDocTags, useDocumentsLoading, selectViewingDocumentId, useRelatedDocuments, myChatId, useChatThread, useChatPost, useDeleteChatMessage, useMarkChatRead, setOpenChat, useAgentDmStatus, annotateThread, userDisplayName, DmComposer, TypingIndicator, useRenameChat, useAddChatMembers, useRemoveChatMember, useChats, useChatSummaries, useCreateGroupChat, useApplyChatModel, AUTO_CHAT_MODEL, formatGbpPerMillionTokens, useConfigSchema, useSaveConfig, useConversationPendingAuth, openAccessRequest, useRequestWorkspaceAccess, useIsEntitled, ImageCropper, threadTabId, useUpdateConversation, useCanEditShared, useActOnStep, useCreateWork, useRunWorkflow, useStartTaskQuery, useCreateWorkflow, useUpdateWorkflow, usePlanWork, useWorkItems, TaskThreadPendingError, useMentionCandidates, useAgentRunControl, useConnectRunStream, useAnswerAgentQuestion, useConversationIsShared, useWorkspaceRole, buildPendingFirstTurn, useConversationTurn, useAskAgain, getOrphanedLastMessage, refuseChatWhenOffline, useThreadDocument, useDocumentAutoAdd, useAutoSendDraft, READ_ONLY_MEETING_TEXT, useAgentSession, useStartAgentSession, useCloseAgentSession, downloadRecoveryFile, LinkedInIcon, GoogleIcon, AppleIcon, useCurrentUser, isQueuedCalendarWrite, DateSeparator, ChatBubble, isAliasTakenError, nextAliasSuggestion, aliasTakenMessage, mailJson, connectorReturnTo, DmAvatar, ConversationList, GitHubIcon, cropImage, getRelatedTotal, isDeploymentUserNotification, describeServerNotification, getWorkspaceActionText, getWorkspaceSentPhrase, BOX_SEAT_REFUSED, BOX_SEAT_REFUSED_TITLE, documentActivityPhrase, isSignatureNotificationType, inputRequestTitle, WORK_NOTIFICATION_LABELS, useConversationThreads, usePassageQuotes, useUpdateFact, useDeleteFact, useAccountClient, useDriveFolderDocCount, useChangeProjectPlan, useCancelProjectSubscription, usePreviewProjectPlanChange, useAddProjectAddonBlock, usePlanQuote, useCreateProjectCheckout, useInvalidateProjects, useSwitchWorkspace, fileAttachment, useMailProjects, useSaveMailDraft, useSendMail, useMailDraftReplaced, useCalendarInvitations, useDecideCounter, useSearchContacts, usePublishCalendar, useCalendarShares, useShareCalendar, useUnshareCalendar, useSubscribeCalendar, useHolidayCountries, useAddHolidayCalendar, cancelPublicBooking, useInvalidateAfterTransfer, useConfigs, useSaveConfigField, useDeleteConfig, isFullConfig, useChatUnreadTotal, useUnreadByPeer, useProjectConversationUsage, AiAnswer, ArbiWebSocketProvider, signatureNotificationPhrase, signatureRequestMeta, getNotificationTypeMeta, useMailDraftEditor, useFreeBusy, useFindTime, useCalendarSupport, useStartCalendarAccountOAuth, useConnectOAuthAccount, useBookingPages, useDeleteBookingPage, useRooms, isReplayableArbiMutation, SHAREPOINT_VENDORS, useUpdateProjectNextPeriodAddons, useUpdateProjectAddonSettings, useSyncCalendarAccount, useUpdateCalendarAccount, useDisconnectCalendarAccount, ACCOUNT_VENDOR, useCalDavProfiles, useConnectCalDavAccount, useSaveBookingPage, useCreateRoom } from '@arbidocs/react';
97
97
  import { mergeAgentSteps, extractSubagentLanes, getCurrentStep, computeRunStats, formatTokens, isNearAiUsageBudget, getSubagentBranchRecord, buildCitationChunkData, topLevelAgentSteps, findMainSiblingLeaf, sliceToSubagentThread, getAgentStepLabel, subagentJobLabel, getStepDisplay, getStepTool, findLeafForTaskMessage, Arbi, FLAT_TAG_KINDS, getEligibleParentTags, canTagHaveParent, isFlatKind, TAG_NESTING_MAX_DEPTH, TAG_KINDS, formatFileSize, filterDocumentTags, isLabelTag, refusalReason, isPresenceTag, isAnnotationTag, flattenTagTree, tagsForScope, tagsOfGroup, chats, buildRetrievalFullContextTool, buildRetrievalChunkTool, getChildTags, tagUseCount, ArbiApiError, PRESENCE_KINDS, isEntityTag, DuplicateContactError, wouldCreateTagCycle, getTagDescendantIds } from '@arbidocs/sdk/browser';
98
98
  import { isAbortError, browserSessionStateStorage, parseCallFragment, validateRecoveryKeyFile, RECOVERY_KEY_ERRORS, parseRecoveryUrl, prewarmKeyPairs, decryptRecoveryKey, unlockIdentityWithPassword, createRecoveryUrl, bytesToBase64, initSodium } from '@arbidocs/client';
99
- import React7, { memo, useMemo, lazy, useRef, useEffect, useCallback, useState, forwardRef, useLayoutEffect, useImperativeHandle, createContext, useContext, useSyncExternalStore, Suspense, Fragment as Fragment$1, useId } from 'react';
100
- import { Users, MessageCircleMore, SquarePen, BookOpen, MessagesSquare, Pencil, Download, Mail, FolderInput, Trash2, Eye, Sparkles, Play, ArrowDownToLine, RefreshCw, Zap, AlertTriangle, FileX, SkipForward, Loader2, Clock, CheckCircle, ArrowUpRight, Send, Settings, Edit3, Copy, Link, Share2, Check, Milestone, RotateCcw, FileText, Network, ChevronRight, Bell, Activity, Info, UserCheck, Upload, Link2, Search, Plus, ArrowLeft, ExternalLink as ExternalLink$1, Tags, CheckCircle2, Monitor, UserCircle, KeyRound, Radio, LogOut, Wifi, Lock, HardDrive, User, HatGlasses, MessageSquare, PlugZap, Gauge, Cloud, XCircle, Building2, Palette, Type, Printer, SquareStack, Table, FolderKanban, Cake, X, UserRound, Star, Tag, Video, CalendarDays, MapPin, Globe, Calendar, Hash, File as File$1, FileType, FolderOpen, Fingerprint, Paperclip, CircleCheck, TriangleAlert, LoaderCircle, NotebookPen, Columns3, EyeOff, ArrowUp, ArrowDown, ZoomOut, Camera, FilePlus2, UserMinus, UserPlus, UsersRound, Code2, Infinity, ChevronDown, MoreHorizontal, Wrench, RotateCw, Square, BadgeCheck, Shield, ClipboardList, Table2, ArrowUpCircle, Contact, Scale, BookA, Quote, Inbox, CalendarX, CalendarCheck, Phone, LogIn, Pause, Workflow, Minimize2, Maximize2, Minus, CalendarSearch, DoorOpen, AlertCircle } from 'lucide-react';
99
+ import React9, { memo, useMemo, lazy, useRef, useEffect, useCallback, useState, forwardRef, useLayoutEffect, useImperativeHandle, createContext, useContext, useSyncExternalStore, Suspense, Fragment as Fragment$1, useId } from 'react';
100
+ import { Users, MessageCircleMore, SquarePen, BookOpen, MessagesSquare, Pencil, Download, Mail, FolderInput, Trash2, Eye, Sparkles, Play, ArrowDownToLine, RefreshCw, Zap, AlertTriangle, FileX, SkipForward, Loader2, Clock, CheckCircle, ArrowUpRight, Send, Settings, Edit3, Copy, Link, Share2, Check, Milestone, RotateCcw, FileText, Network, ChevronRight, Bell, Activity, Info, UserCheck, Upload, Link2, Search, Plus, ArrowLeft, ExternalLink as ExternalLink$1, Tags, CheckCircle2, Monitor, UserCircle, KeyRound, Radio, LogOut, Wifi, Lock, HardDrive, User, HatGlasses, MessageSquare, PlugZap, Gauge, Cloud, XCircle, Building2, Palette, Type, Printer, SquareStack, Table, FolderKanban, Cake, X, UserRound, Star, Tag, Video, CalendarDays, MapPin, Globe, Calendar, Hash, File as File$1, FileType, FolderOpen, Fingerprint, Paperclip, CircleCheck, TriangleAlert, LoaderCircle, NotebookPen, Columns3, EyeOff, ArrowUp, ArrowDown, ZoomOut, Camera, FilePlus2, UserMinus, UserPlus, UsersRound, Code2, Infinity, Bug, Crop, Undo2, ImageUp, ChevronDown, MoreHorizontal, Wrench, RotateCw, Square, BadgeCheck, Shield, ClipboardList, Table2, ArrowUpCircle, Contact, Scale, BookA, Quote, Inbox, CalendarX, CalendarCheck, Phone, LogIn, Pause, Workflow, Minimize2, Maximize2, Minus, CalendarSearch, DoorOpen, AlertCircle } from 'lucide-react';
101
101
  import { isAgent, UserEntity, getUserInitials, getUserDisplayName, getUserAvatarColor, agentAvatarColors, Avatar, AvatarImage, AvatarFallback, cn, ShieldIcon, getWorkspaceColor, getFileTypeIcon, DocumentEntity, getDocumentTitle, formatFolderLabel, getEntityLabel, getEntityColor, VisibilityIcon, formatFriendlyDate, getDocumentSubject, Badge, getTagTypeIcon, getTagTypeLabel, VisibilityToggle, TagEntity, ThreadVisibilityIcon, Button, isImageDocument, Tooltip, TooltipTrigger, TooltipContent, Dialog, DialogContent, formatRelativeTime, ProviderIcon, EntityIcon, Label, Input, Textarea, DialogHeader, DialogTitle, DialogDescription, tagKindNouns, tagKindTitle, IconToggle, Switch, Checkbox, entityNoun, DialogTrigger, ProjectEntity, DialogFooter, Tabs, TabsList, TabsTrigger, TabsContent, getDocIcon, getDocumentNature, getDocumentAuthor, markdownToPlainText, formatDocDate, getDocumentDate, friendlyFileType, canonicalFolderPath, DebouncedInput, Select, SelectTrigger, SelectValue, SelectContent, SelectItem, Slider, AgentBadge, PresenceLabel, TooltipProvider, EntityPill, UserMenu, Popover, PopoverAnchor, PopoverTrigger, PopoverContent, Command, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem, DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, ScrollArea, ArbiIcon, ARBI_MARK_SRC, Card, CardHeader, CardTitle, CardContent, VerifiedToggle, Progress } from '@arbidocs/react/ui';
102
102
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
103
103
  import { hasMessageBody, notify, linkMentions, useNotify, sharedSearchSession, takePendingSearch, selectUnread, NotificationBell, useTurnDocumentId, useOpenDocumentId, useRegisterOpenDocument } from '@arbidocs/react/shell';
@@ -8562,7 +8562,7 @@ function ConnectedPrivacySettings({
8562
8562
  const { data: settings } = useUserSettings();
8563
8563
  const update = useUpdateUserSettings();
8564
8564
  const hideOnlineStatus = settings?.hide_online_status ?? false;
8565
- const dismissedTips = settings?.dismissed_tips ?? [];
8565
+ const { dismissed, resetTips } = useDismissedTips();
8566
8566
  return /* @__PURE__ */ jsxs(SettingsPanel, { className: "max-w-2xl", children: [
8567
8567
  /* @__PURE__ */ jsx(SettingsSection, { title: "Privacy and tips", children: /* @__PURE__ */ jsxs(SettingsCard, { children: [
8568
8568
  /* @__PURE__ */ jsx(
@@ -8594,8 +8594,8 @@ function ConnectedPrivacySettings({
8594
8594
  type: "button",
8595
8595
  variant: "outline",
8596
8596
  size: "sm",
8597
- onClick: () => update.mutate({ dismissed_tips: [] }),
8598
- disabled: dismissedTips.length === 0,
8597
+ onClick: resetTips,
8598
+ disabled: dismissed.length === 0,
8599
8599
  className: "gap-1.5",
8600
8600
  "data-testid": "reset-tips-button",
8601
8601
  children: [
@@ -14713,7 +14713,7 @@ function useConnectedWorkspaceList({
14713
14713
  };
14714
14714
  }
14715
14715
  var WorkspaceTableView = lazy(
14716
- () => import('../WorkspaceTableView-LS6LFKBE.js').then((m) => ({ default: m.WorkspaceTableView }))
14716
+ () => import('../WorkspaceTableView-62PJLX7V.js').then((m) => ({ default: m.WorkspaceTableView }))
14717
14717
  );
14718
14718
  var WORKSPACES_TAB_ID = "workspaces";
14719
14719
  var defaultRenderMember2 = (user, size) => {
@@ -15231,7 +15231,9 @@ function ProjectsPanel({
15231
15231
  return hostTabs ? panel : /* @__PURE__ */ jsx(ArbiHost, { config: localHost, children: panel });
15232
15232
  }
15233
15233
  var DEFAULT_PROJECT_DETAILS_LABELS = {
15234
- title: "Details",
15234
+ get title() {
15235
+ return `${getEntityLabel("PROJECT")} details`;
15236
+ },
15235
15237
  client: "Client",
15236
15238
  clientRef: "Reference",
15237
15239
  stage: "Stage",
@@ -15240,8 +15242,12 @@ var DEFAULT_PROJECT_DETAILS_LABELS = {
15240
15242
  notSet: "Not set",
15241
15243
  save: "Save details",
15242
15244
  saving: "Saving\u2026",
15243
- saved: "Details saved.",
15244
- failed: "Couldn't save the details"
15245
+ get saved() {
15246
+ return `${getEntityLabel("PROJECT")} details saved.`;
15247
+ },
15248
+ get failed() {
15249
+ return `Couldn't save the ${entityNoun("PROJECT")} details`;
15250
+ }
15245
15251
  };
15246
15252
  var DEFAULT_PROJECT_DETAIL_FIELDS = [
15247
15253
  "client",
@@ -16366,7 +16372,9 @@ function ProjectActivity({
16366
16372
  }
16367
16373
  var DEFAULT_PROJECT_PAGE_LABELS = {
16368
16374
  tabs: {
16369
- details: "Details",
16375
+ get details() {
16376
+ return getEntityLabel("PROJECT");
16377
+ },
16370
16378
  issues: "Issues",
16371
16379
  chronology: "Chronology",
16372
16380
  threads: "Work",
@@ -16381,15 +16389,27 @@ var DEFAULT_PROJECT_PAGE_LABELS = {
16381
16389
  members: "Team",
16382
16390
  spend: "AI spend this period"
16383
16391
  },
16384
- loading: "Loading project\u2026",
16385
- loadingDescription: "Fetching the project.",
16386
- notFound: "Project not found",
16387
- notFoundDescription: "This project may have been closed or the link is out of date.",
16388
- opening: "Opening the project's workspace\u2026",
16392
+ get loading() {
16393
+ return `Loading ${entityNoun("PROJECT")}\u2026`;
16394
+ },
16395
+ get loadingDescription() {
16396
+ return `Fetching the ${entityNoun("PROJECT")}.`;
16397
+ },
16398
+ get notFound() {
16399
+ return `${getEntityLabel("PROJECT")} not found`;
16400
+ },
16401
+ get notFoundDescription() {
16402
+ return `This ${entityNoun("PROJECT")} may have been closed or the link is out of date.`;
16403
+ },
16404
+ get opening() {
16405
+ return `Opening the ${entityNoun("PROJECT")}'s workspace\u2026`;
16406
+ },
16389
16407
  threads: {
16390
16408
  title: "Threads and runs",
16391
16409
  loading: "Loading\u2026",
16392
- empty: "No threads in this project yet.",
16410
+ get empty() {
16411
+ return `No threads on this ${entityNoun("PROJECT")} yet.`;
16412
+ },
16393
16413
  untitled: "Untitled thread"
16394
16414
  },
16395
16415
  chronologyLoading: "Loading the chronology\u2026",
@@ -30922,6 +30942,713 @@ function ConnectedAccountCluster({
30922
30942
  }
30923
30943
  );
30924
30944
  }
30945
+ function isInternal(mutationKey) {
30946
+ const path = mutationKey?.[1];
30947
+ return typeof path === "string" && /\/open$/.test(path);
30948
+ }
30949
+ var NOTICE_EVERY_MS = 1e4;
30950
+ function usePausedMutationNotice() {
30951
+ const queryClient = useQueryClient();
30952
+ const { notify: notify17 } = useBlocksEnvironment();
30953
+ useEffect(() => {
30954
+ let lastNotice = 0;
30955
+ return queryClient.getMutationCache().subscribe((event) => {
30956
+ if (event.type !== "updated" || event.action.type !== "pause") return;
30957
+ const key = event.mutation.options.mutationKey;
30958
+ if (isReplayableArbiMutation(key) || isInternal(key)) return;
30959
+ const now = Date.now();
30960
+ if (now - lastNotice < NOTICE_EVERY_MS) return;
30961
+ lastNotice = now;
30962
+ notify17("You're offline. This will finish when you reconnect", "info", {
30963
+ description: "Keep this tab open until then."
30964
+ });
30965
+ });
30966
+ }, [queryClient, notify17]);
30967
+ }
30968
+ function usePaymentReturn() {
30969
+ const queryClient = useQueryClient();
30970
+ const { notify: notify17, openProject } = useBlocksEnvironment();
30971
+ const { refetch: refetchProjects } = useProjects();
30972
+ const { mutate: refreshProject } = useRefreshProject();
30973
+ const latest = useRef({ refetchProjects, refreshProject, notify: notify17, openProject, queryClient });
30974
+ latest.current = { refetchProjects, refreshProject, notify: notify17, openProject, queryClient };
30975
+ useEffect(() => {
30976
+ const handle = async () => {
30977
+ const params = new URLSearchParams(window.location.hash.substring(1));
30978
+ if (params.get("payment") !== "success") return;
30979
+ const { refetchProjects: refetchProjects2, refreshProject: refreshProject2, notify: notify18, openProject: openProject2, queryClient: queryClient2 } = latest.current;
30980
+ const projectId = params.get("project");
30981
+ if (projectId) refreshProject2(projectId);
30982
+ notify18("Payment successful! Your subscription is now active.", "success");
30983
+ params.delete("payment");
30984
+ params.delete("project");
30985
+ const rest = params.toString();
30986
+ window.history.replaceState(
30987
+ null,
30988
+ "",
30989
+ window.location.pathname + window.location.search + (rest ? `#${rest}` : "")
30990
+ );
30991
+ openProject2();
30992
+ await refetchProjects2();
30993
+ await queryClient2.refetchQueries({ queryKey: arbiQueryKeys.userSettings(), type: "all" });
30994
+ };
30995
+ void handle();
30996
+ window.addEventListener("hashchange", handle);
30997
+ return () => window.removeEventListener("hashchange", handle);
30998
+ }, []);
30999
+ }
31000
+ var MODAL_SELECTOR = '[role="dialog"][data-state="open"],[role="alertdialog"][data-state="open"]';
31001
+ var SETTLE_MS = 300;
31002
+ function useReleaseStaleModalState() {
31003
+ useEffect(() => {
31004
+ let timer;
31005
+ const isInert = () => document.body.style.pointerEvents === "none";
31006
+ const leakedHidden = () => document.querySelectorAll('[data-aria-hidden="true"]');
31007
+ const hasModal = () => document.querySelector(MODAL_SELECTOR) !== null;
31008
+ const check = () => {
31009
+ if (hasModal()) return;
31010
+ if (!isInert() && leakedHidden().length === 0) return;
31011
+ clearTimeout(timer);
31012
+ timer = setTimeout(() => {
31013
+ if (hasModal()) return;
31014
+ if (isInert()) document.body.style.removeProperty("pointer-events");
31015
+ leakedHidden().forEach((el) => {
31016
+ el.removeAttribute("aria-hidden");
31017
+ el.removeAttribute("data-aria-hidden");
31018
+ });
31019
+ }, SETTLE_MS);
31020
+ };
31021
+ const observer = new MutationObserver(check);
31022
+ observer.observe(document.body, { attributes: true, attributeFilter: ["style"] });
31023
+ observer.observe(document.documentElement, {
31024
+ subtree: true,
31025
+ attributes: true,
31026
+ attributeFilter: ["aria-hidden"]
31027
+ });
31028
+ check();
31029
+ return () => {
31030
+ observer.disconnect();
31031
+ clearTimeout(timer);
31032
+ };
31033
+ }, []);
31034
+ }
31035
+ function useRetiredModelNotice() {
31036
+ const queryClient = useQueryClient();
31037
+ const currentEnvironment = useBlocksEnvironment();
31038
+ const environment = useRef(currentEnvironment);
31039
+ environment.current = currentEnvironment;
31040
+ const { data: userSettings } = useUserSettings();
31041
+ const { data: availableModels } = useAvailableModels();
31042
+ const premiumDefault = availableModels?.premium_default;
31043
+ const retired = userSettings?.retired_premium_model;
31044
+ const suggestion = userSettings?.retired_premium_model_suggestion;
31045
+ useEffect(() => {
31046
+ if (!retired) return;
31047
+ const { notify: notify17, openSettings } = environment.current;
31048
+ const outcome = premiumDefault ? `We've switched you to the default Premium model, ${premiumDefault}.` : "Your Premium model choice was cleared.";
31049
+ const suggestionHint = suggestion ? ` Suggested replacement: ${suggestion}.` : "";
31050
+ notify17(
31051
+ `The model you selected, ${retired}, is no longer available. ${outcome}${suggestionHint}`,
31052
+ "warning",
31053
+ {
31054
+ action: { label: "Choose a replacement", onClick: () => openSettings("chat") },
31055
+ duration: 15e3
31056
+ }
31057
+ );
31058
+ queryClient.setQueryData(arbiQueryKeys.userSettings(), (prev) => {
31059
+ if (!prev || typeof prev !== "object") return prev;
31060
+ const next = { ...prev };
31061
+ delete next.retired_premium_model;
31062
+ delete next.retired_premium_model_suggestion;
31063
+ return next;
31064
+ });
31065
+ }, [retired, suggestion, premiumDefault, queryClient]);
31066
+ }
31067
+ var ReleaseStaleModals = () => (useReleaseStaleModalState(), null);
31068
+ var RetiredModelNotice = () => (useRetiredModelNotice(), null);
31069
+ var PausedMutationNotice = () => (usePausedMutationNotice(), null);
31070
+ var PaymentReturn = () => (usePaymentReturn(), null);
31071
+ function ConnectedAppRuntime({ effects = {} }) {
31072
+ const on = (effect) => effects[effect] !== false;
31073
+ const { stripeEnabled } = useBillingSupport();
31074
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
31075
+ on("releaseStaleModals") && /* @__PURE__ */ jsx(ReleaseStaleModals, {}),
31076
+ on("retiredModelNotice") && /* @__PURE__ */ jsx(RetiredModelNotice, {}),
31077
+ on("pausedMutationNotice") && /* @__PURE__ */ jsx(PausedMutationNotice, {}),
31078
+ on("paymentReturn") && stripeEnabled && /* @__PURE__ */ jsx(PaymentReturn, {})
31079
+ ] });
31080
+ }
31081
+ function CaptureBar({ onCapture, onSkip, onCancel }) {
31082
+ return /* @__PURE__ */ jsxs(
31083
+ "div",
31084
+ {
31085
+ role: "dialog",
31086
+ "aria-label": "Report a problem: capture",
31087
+ className: "fixed inset-x-0 bottom-4 z-[60] mx-auto flex w-fit max-w-[calc(100vw-2rem)] flex-wrap items-center gap-2 rounded-xl border border-border bg-background px-4 py-2 shadow-lg",
31088
+ "data-testid": "report-capture-bar",
31089
+ children: [
31090
+ /* @__PURE__ */ jsx(Bug, { className: "size-4 shrink-0 text-muted-foreground", "aria-hidden": true }),
31091
+ /* @__PURE__ */ jsxs("span", { className: "text-sm", children: [
31092
+ "Go to the problem (scroll or switch pages), then press ",
31093
+ /* @__PURE__ */ jsx("b", { children: "Capture" }),
31094
+ " and select the area."
31095
+ ] }),
31096
+ /* @__PURE__ */ jsxs(Button, { size: "sm", onClick: onCapture, "data-testid": "report-capture", children: [
31097
+ /* @__PURE__ */ jsx(Camera, { className: "mr-1 size-4" }),
31098
+ " Capture"
31099
+ ] }),
31100
+ /* @__PURE__ */ jsx(Button, { size: "sm", variant: "ghost", onClick: onSkip, "data-testid": "report-skip-screenshot", children: "Skip screenshot" }),
31101
+ /* @__PURE__ */ jsx(
31102
+ Button,
31103
+ {
31104
+ size: "sm",
31105
+ variant: "ghost",
31106
+ "aria-label": "Cancel report",
31107
+ onClick: onCancel,
31108
+ "data-testid": "report-cancel",
31109
+ children: /* @__PURE__ */ jsx(X, { className: "size-4" })
31110
+ }
31111
+ )
31112
+ ]
31113
+ }
31114
+ );
31115
+ }
31116
+
31117
+ // src/connection/report-problem/screen-capture.ts
31118
+ var ScreenCaptureError = class extends Error {
31119
+ constructor(code, message) {
31120
+ super(message);
31121
+ this.code = code;
31122
+ this.name = "ScreenCaptureError";
31123
+ }
31124
+ code;
31125
+ };
31126
+ function canCaptureScreen() {
31127
+ return typeof navigator !== "undefined" && !!navigator.mediaDevices?.getDisplayMedia;
31128
+ }
31129
+ async function captureCurrentTab() {
31130
+ if (!canCaptureScreen()) {
31131
+ throw new ScreenCaptureError("unsupported", "This browser can't capture the screen.");
31132
+ }
31133
+ let stream;
31134
+ try {
31135
+ stream = await navigator.mediaDevices.getDisplayMedia({
31136
+ video: { displaySurface: "browser" },
31137
+ audio: false,
31138
+ // Chromium hints: offer this tab first, and don't let the person switch surfaces mid-capture.
31139
+ preferCurrentTab: true,
31140
+ selfBrowserSurface: "include",
31141
+ surfaceSwitching: "exclude"
31142
+ });
31143
+ } catch (error) {
31144
+ const name = error instanceof DOMException ? error.name : "";
31145
+ if (name === "NotAllowedError" || name === "AbortError") {
31146
+ throw new ScreenCaptureError("cancelled", "Screen capture was cancelled.");
31147
+ }
31148
+ throw new ScreenCaptureError("failed", "Couldn't start screen capture.");
31149
+ }
31150
+ try {
31151
+ return await grabFrame(stream);
31152
+ } finally {
31153
+ stream.getTracks().forEach((track) => track.stop());
31154
+ }
31155
+ }
31156
+ async function grabFrame(stream) {
31157
+ const video = document.createElement("video");
31158
+ video.muted = true;
31159
+ video.playsInline = true;
31160
+ video.srcObject = stream;
31161
+ await video.play();
31162
+ for (let i = 0; i < 50 && (!video.videoWidth || !video.videoHeight); i++) {
31163
+ await new Promise((resolve) => setTimeout(resolve, 40));
31164
+ }
31165
+ await new Promise((resolve) => requestAnimationFrame(() => resolve(null)));
31166
+ const canvas = document.createElement("canvas");
31167
+ canvas.width = video.videoWidth;
31168
+ canvas.height = video.videoHeight;
31169
+ const ctx = canvas.getContext("2d");
31170
+ if (!ctx || !canvas.width) throw new ScreenCaptureError("failed", "Couldn't read the screen.");
31171
+ ctx.drawImage(video, 0, 0);
31172
+ video.srcObject = null;
31173
+ return canvasToBlob(canvas);
31174
+ }
31175
+ function canvasToBlob(canvas) {
31176
+ return new Promise(
31177
+ (resolve, reject) => canvas.toBlob(
31178
+ (blob) => blob ? resolve(blob) : reject(new ScreenCaptureError("failed", "Couldn't save the image.")),
31179
+ "image/png"
31180
+ )
31181
+ );
31182
+ }
31183
+
31184
+ // src/connection/report-problem/screenshot-annotations.ts
31185
+ var MIN_MARK_SIZE = 6;
31186
+ function rectFromDrag(start, end, bounds) {
31187
+ const clamp = (v, max) => Math.min(Math.max(v, 0), max);
31188
+ const x1 = clamp(Math.min(start.x, end.x), bounds.width);
31189
+ const y1 = clamp(Math.min(start.y, end.y), bounds.height);
31190
+ const x2 = clamp(Math.max(start.x, end.x), bounds.width);
31191
+ const y2 = clamp(Math.max(start.y, end.y), bounds.height);
31192
+ return { x: x1, y: y1, w: x2 - x1, h: y2 - y1 };
31193
+ }
31194
+ function isMeaningfulRect(rect) {
31195
+ return rect.w >= MIN_MARK_SIZE && rect.h >= MIN_MARK_SIZE;
31196
+ }
31197
+ function toImagePoint(client, displayed, natural) {
31198
+ return {
31199
+ x: (client.x - displayed.left) / displayed.width * natural.width,
31200
+ y: (client.y - displayed.top) / displayed.height * natural.height
31201
+ };
31202
+ }
31203
+ function captionLines(text2) {
31204
+ return [
31205
+ text2.happened.trim() && `What went wrong: ${text2.happened.trim()}`,
31206
+ text2.expected.trim() && `Expected: ${text2.expected.trim()}`
31207
+ ].filter(Boolean);
31208
+ }
31209
+ async function renderAnnotatedScreenshot(image, marks, text2) {
31210
+ const lines = captionLines(text2);
31211
+ const scale = Math.max(1, image.width / 1600);
31212
+ const lineHeight = Math.round(22 * scale);
31213
+ const padding = Math.round(16 * scale);
31214
+ const captionHeight = lines.length ? padding * 2 + lineHeight * lines.length : 0;
31215
+ const canvas = document.createElement("canvas");
31216
+ canvas.width = image.width;
31217
+ canvas.height = image.height + captionHeight;
31218
+ const ctx = canvas.getContext("2d");
31219
+ if (!ctx) throw new Error("Couldn't draw the screenshot.");
31220
+ ctx.drawImage(image, 0, 0);
31221
+ for (const mark of marks.filter((m) => m.kind === "redact")) {
31222
+ ctx.fillStyle = "#000";
31223
+ ctx.fillRect(mark.x, mark.y, mark.w, mark.h);
31224
+ }
31225
+ ctx.lineWidth = Math.round(4 * scale);
31226
+ ctx.strokeStyle = "#e5281b";
31227
+ for (const mark of marks.filter((m) => m.kind === "highlight")) {
31228
+ ctx.strokeRect(mark.x, mark.y, mark.w, mark.h);
31229
+ }
31230
+ if (captionHeight) {
31231
+ ctx.fillStyle = "#fff";
31232
+ ctx.fillRect(0, image.height, canvas.width, captionHeight);
31233
+ ctx.fillStyle = "#d0d4da";
31234
+ ctx.fillRect(0, image.height, canvas.width, Math.max(1, Math.round(scale)));
31235
+ ctx.fillStyle = "#111";
31236
+ ctx.font = `${Math.round(16 * scale)}px system-ui, sans-serif`;
31237
+ ctx.textBaseline = "top";
31238
+ lines.forEach(
31239
+ (line, i) => ctx.fillText(
31240
+ line,
31241
+ padding,
31242
+ image.height + padding + i * lineHeight,
31243
+ canvas.width - padding * 2
31244
+ )
31245
+ );
31246
+ }
31247
+ return canvasToBlob(canvas);
31248
+ }
31249
+ function aspectOptions(natural) {
31250
+ return [
31251
+ ...natural ? [{ label: "Screen", value: natural.width / natural.height }] : [],
31252
+ { label: "16:9", value: 16 / 9 },
31253
+ { label: "4:3", value: 4 / 3 },
31254
+ { label: "Square", value: 1 }
31255
+ ];
31256
+ }
31257
+ function ReportProblemDialog({
31258
+ open,
31259
+ frame,
31260
+ image,
31261
+ onCropped,
31262
+ onImageChange,
31263
+ onRetake,
31264
+ onClose,
31265
+ fileNamePrefix = "problem",
31266
+ footnote
31267
+ }) {
31268
+ const { notify: notify17 } = useBlocksEnvironment();
31269
+ const [description, setDescription] = useState("");
31270
+ const [marks, setMarks] = useState([]);
31271
+ const [draft, setDraft] = useState(null);
31272
+ const [natural, setNatural] = useState(null);
31273
+ const [frameSize, setFrameSize] = useState(null);
31274
+ const [cropArea, setCropArea] = useState(null);
31275
+ const [busy, setBusy] = useState(false);
31276
+ const imgRef = useRef(null);
31277
+ const dragStart = useRef(null);
31278
+ const frameUrl = useMemo(() => frame ? URL.createObjectURL(frame) : null, [frame]);
31279
+ useEffect(() => () => void (frameUrl && URL.revokeObjectURL(frameUrl)), [frameUrl]);
31280
+ const imageUrl = useMemo(() => image ? URL.createObjectURL(image) : null, [image]);
31281
+ useEffect(() => () => void (imageUrl && URL.revokeObjectURL(imageUrl)), [imageUrl]);
31282
+ useEffect(() => {
31283
+ setFrameSize(null);
31284
+ if (!frameUrl) return;
31285
+ const img = new Image();
31286
+ img.onload = () => setFrameSize({ width: img.naturalWidth, height: img.naturalHeight });
31287
+ img.src = frameUrl;
31288
+ }, [frameUrl]);
31289
+ useEffect(() => {
31290
+ setMarks([]);
31291
+ setDraft(null);
31292
+ setNatural(null);
31293
+ }, [image]);
31294
+ useEffect(() => {
31295
+ if (!open) setDescription("");
31296
+ }, [open]);
31297
+ const applyCrop = async () => {
31298
+ if (!frameUrl || !cropArea) return;
31299
+ setBusy(true);
31300
+ try {
31301
+ const { blob } = await cropImage(frameUrl, cropArea, { mimeType: "image/png" });
31302
+ onCropped(blob);
31303
+ } catch {
31304
+ notify17("Couldn't crop the screenshot. Please try again.", "error");
31305
+ } finally {
31306
+ setBusy(false);
31307
+ }
31308
+ };
31309
+ const pointFrom = (event) => {
31310
+ const img = imgRef.current;
31311
+ if (!img || !natural) return null;
31312
+ return toImagePoint(
31313
+ { x: event.clientX, y: event.clientY },
31314
+ img.getBoundingClientRect(),
31315
+ natural
31316
+ );
31317
+ };
31318
+ const renderImage = async () => {
31319
+ if (!image || !natural) return null;
31320
+ const bitmap = await createImageBitmap(image);
31321
+ try {
31322
+ return await renderAnnotatedScreenshot(bitmap, marks, { happened: description, expected: "" });
31323
+ } finally {
31324
+ bitmap.close();
31325
+ }
31326
+ };
31327
+ const download = async () => {
31328
+ setBusy(true);
31329
+ try {
31330
+ const blob = await renderImage();
31331
+ if (!blob) return;
31332
+ const stamp = (/* @__PURE__ */ new Date()).toISOString().slice(0, 16).replace(/[:T]/g, "-");
31333
+ downloadBlob(blob, `${fileNamePrefix}-${stamp}.png`);
31334
+ } catch {
31335
+ notify17("Couldn't save the screenshot. Please try again.", "error");
31336
+ } finally {
31337
+ setBusy(false);
31338
+ }
31339
+ };
31340
+ const copy = async () => {
31341
+ setBusy(true);
31342
+ try {
31343
+ const blob = await renderImage();
31344
+ if (!blob) return;
31345
+ await navigator.clipboard.write([new ClipboardItem({ "image/png": blob })]);
31346
+ notify17("Screenshot copied. Paste it into an email or chat.", "success");
31347
+ } catch {
31348
+ notify17("Your browser didn't allow copying the image. Use Download instead.", "warning");
31349
+ } finally {
31350
+ setBusy(false);
31351
+ }
31352
+ };
31353
+ const shown = draft ? [...marks, draft] : marks;
31354
+ const percent = (mark) => natural ? {
31355
+ left: `${mark.x / natural.width * 100}%`,
31356
+ top: `${mark.y / natural.height * 100}%`,
31357
+ width: `${mark.w / natural.width * 100}%`,
31358
+ height: `${mark.h / natural.height * 100}%`
31359
+ } : void 0;
31360
+ const cropping = !!frameUrl;
31361
+ return /* @__PURE__ */ jsx(Dialog, { open, onOpenChange: (next) => !next && onClose(), children: /* @__PURE__ */ jsxs(
31362
+ DialogContent,
31363
+ {
31364
+ className: "flex max-h-[92vh] w-[min(96vw,64rem)] max-w-[96vw] flex-col gap-3 p-4 sm:max-w-[min(96vw,64rem)]",
31365
+ "data-testid": "report-problem-dialog",
31366
+ children: [
31367
+ /* @__PURE__ */ jsxs("div", { className: "pr-8", children: [
31368
+ /* @__PURE__ */ jsx(DialogTitle, { children: "Report a problem" }),
31369
+ /* @__PURE__ */ jsx(DialogDescription, { children: cropping ? "Crop the screenshot to the part that shows the problem. Only the cropped part is kept." : "Black out anything confidential: blacked-out areas are removed from the image." })
31370
+ ] }),
31371
+ cropping ? /* @__PURE__ */ jsxs("div", { className: "grid gap-2", children: [
31372
+ /* @__PURE__ */ jsx(
31373
+ ImageCropper,
31374
+ {
31375
+ image: frameUrl,
31376
+ aspectOptions: aspectOptions(frameSize),
31377
+ maxZoom: 6,
31378
+ cropAreaClassName: "h-[50vh] min-h-64",
31379
+ onCropComplete: (area) => setCropArea(area)
31380
+ },
31381
+ frameSize ? "sized" : "unsized"
31382
+ ),
31383
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap justify-end gap-2", children: [
31384
+ /* @__PURE__ */ jsxs(
31385
+ Button,
31386
+ {
31387
+ variant: "ghost",
31388
+ onClick: () => onImageChange(null),
31389
+ "data-testid": "report-remove-screenshot",
31390
+ children: [
31391
+ /* @__PURE__ */ jsx(Trash2, { className: "mr-1 size-4" }),
31392
+ " Remove screenshot"
31393
+ ]
31394
+ }
31395
+ ),
31396
+ /* @__PURE__ */ jsxs(Button, { variant: "ghost", onClick: onRetake, "data-testid": "report-retake", children: [
31397
+ /* @__PURE__ */ jsx(Camera, { className: "mr-1 size-4" }),
31398
+ " Retake"
31399
+ ] }),
31400
+ /* @__PURE__ */ jsxs(
31401
+ Button,
31402
+ {
31403
+ disabled: !cropArea || busy,
31404
+ onClick: () => void applyCrop(),
31405
+ "data-testid": "report-use-crop",
31406
+ children: [
31407
+ /* @__PURE__ */ jsx(Crop, { className: "mr-1 size-4" }),
31408
+ " Use this crop"
31409
+ ]
31410
+ }
31411
+ )
31412
+ ] })
31413
+ ] }) : imageUrl ? /* @__PURE__ */ jsxs("div", { className: "grid gap-2", children: [
31414
+ /* @__PURE__ */ jsx("div", { className: "flex min-h-0 justify-center overflow-hidden rounded-md bg-muted p-2", children: /* @__PURE__ */ jsxs("div", { className: "relative max-w-full", children: [
31415
+ /* @__PURE__ */ jsx(
31416
+ "img",
31417
+ {
31418
+ ref: imgRef,
31419
+ src: imageUrl,
31420
+ alt: "Screenshot of the problem",
31421
+ className: "block max-h-[45vh] max-w-full select-none object-contain",
31422
+ draggable: false,
31423
+ onLoad: (event) => setNatural({
31424
+ width: event.currentTarget.naturalWidth,
31425
+ height: event.currentTarget.naturalHeight
31426
+ }),
31427
+ "data-testid": "report-screenshot"
31428
+ }
31429
+ ),
31430
+ /* @__PURE__ */ jsx(
31431
+ "div",
31432
+ {
31433
+ className: "absolute inset-0 cursor-crosshair touch-none",
31434
+ onPointerDown: (event) => {
31435
+ const point = pointFrom(event);
31436
+ if (!point) return;
31437
+ event.currentTarget.setPointerCapture?.(event.pointerId);
31438
+ dragStart.current = point;
31439
+ setDraft({ kind: "redact", ...point, w: 0, h: 0 });
31440
+ },
31441
+ onPointerMove: (event) => {
31442
+ const point = pointFrom(event);
31443
+ if (dragStart.current && point && natural)
31444
+ setDraft({
31445
+ kind: "redact",
31446
+ ...rectFromDrag(dragStart.current, point, natural)
31447
+ });
31448
+ },
31449
+ onPointerUp: () => {
31450
+ if (draft && isMeaningfulRect(draft)) setMarks((m) => [...m, draft]);
31451
+ dragStart.current = null;
31452
+ setDraft(null);
31453
+ },
31454
+ "data-testid": "report-draw-surface",
31455
+ children: shown.map((mark, i) => /* @__PURE__ */ jsx(
31456
+ "div",
31457
+ {
31458
+ className: "pointer-events-none absolute bg-black",
31459
+ style: percent(mark),
31460
+ "data-testid": "report-mark-redact"
31461
+ },
31462
+ i
31463
+ ))
31464
+ }
31465
+ )
31466
+ ] }) }),
31467
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center justify-end gap-2 text-sm", children: [
31468
+ /* @__PURE__ */ jsxs("span", { className: "mr-auto flex items-center gap-1 text-muted-foreground", children: [
31469
+ /* @__PURE__ */ jsx(EyeOff, { className: "size-4" }),
31470
+ " Drag over anything confidential to black it out."
31471
+ ] }),
31472
+ /* @__PURE__ */ jsxs(
31473
+ Button,
31474
+ {
31475
+ size: "sm",
31476
+ variant: "ghost",
31477
+ disabled: !marks.length,
31478
+ onClick: () => setMarks((m) => m.slice(0, -1)),
31479
+ "data-testid": "report-undo",
31480
+ children: [
31481
+ /* @__PURE__ */ jsx(Undo2, { className: "mr-1 size-4" }),
31482
+ " Undo"
31483
+ ]
31484
+ }
31485
+ ),
31486
+ /* @__PURE__ */ jsxs(
31487
+ Button,
31488
+ {
31489
+ size: "sm",
31490
+ variant: "ghost",
31491
+ onClick: () => onImageChange(null),
31492
+ "data-testid": "report-remove-screenshot",
31493
+ children: [
31494
+ /* @__PURE__ */ jsx(Trash2, { className: "mr-1 size-4" }),
31495
+ " Remove"
31496
+ ]
31497
+ }
31498
+ ),
31499
+ /* @__PURE__ */ jsxs(Button, { size: "sm", variant: "ghost", onClick: onRetake, "data-testid": "report-retake", children: [
31500
+ /* @__PURE__ */ jsx(Camera, { className: "mr-1 size-4" }),
31501
+ " Retake"
31502
+ ] })
31503
+ ] })
31504
+ ] }) : /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-3 rounded-md border border-dashed border-border p-3 text-sm", children: [
31505
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: "No screenshot attached." }),
31506
+ canCaptureScreen() ? /* @__PURE__ */ jsxs(Button, { size: "sm", variant: "outline", onClick: onRetake, "data-testid": "report-retake", children: [
31507
+ /* @__PURE__ */ jsx(Camera, { className: "mr-1 size-4" }),
31508
+ " Take a screenshot"
31509
+ ] }) : /* @__PURE__ */ jsxs("label", { className: "inline-flex cursor-pointer items-center gap-1 font-medium text-primary", children: [
31510
+ /* @__PURE__ */ jsx(ImageUp, { className: "size-4" }),
31511
+ " Choose a screenshot",
31512
+ /* @__PURE__ */ jsx(
31513
+ "input",
31514
+ {
31515
+ type: "file",
31516
+ accept: "image/*",
31517
+ className: "sr-only",
31518
+ onChange: (event) => {
31519
+ const file = event.target.files?.[0];
31520
+ if (file) onImageChange(file);
31521
+ },
31522
+ "data-testid": "report-choose-image"
31523
+ }
31524
+ )
31525
+ ] })
31526
+ ] }),
31527
+ /* @__PURE__ */ jsxs("label", { className: "grid gap-1 text-sm", children: [
31528
+ /* @__PURE__ */ jsx("span", { className: "font-medium", children: "What went wrong?" }),
31529
+ /* @__PURE__ */ jsx(
31530
+ Textarea,
31531
+ {
31532
+ value: description,
31533
+ onChange: (event) => setDescription(event.target.value),
31534
+ rows: 3,
31535
+ placeholder: "What did you do, and what happened instead?",
31536
+ "data-testid": "report-description"
31537
+ }
31538
+ )
31539
+ ] }),
31540
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center justify-end gap-2", children: [
31541
+ /* @__PURE__ */ jsx("span", { className: "mr-auto text-xs text-muted-foreground", children: footnote }),
31542
+ /* @__PURE__ */ jsx(Button, { variant: "ghost", onClick: onClose, children: "Cancel" }),
31543
+ /* @__PURE__ */ jsx(
31544
+ Button,
31545
+ {
31546
+ variant: "outline",
31547
+ disabled: !natural || busy || cropping,
31548
+ onClick: () => void copy(),
31549
+ "data-testid": "report-copy",
31550
+ children: "Copy image"
31551
+ }
31552
+ ),
31553
+ /* @__PURE__ */ jsx(
31554
+ Button,
31555
+ {
31556
+ disabled: !natural || busy || cropping,
31557
+ onClick: () => void download(),
31558
+ "data-testid": "report-download",
31559
+ children: "Download"
31560
+ }
31561
+ )
31562
+ ] })
31563
+ ]
31564
+ }
31565
+ ) });
31566
+ }
31567
+ function useReportProblem(options2 = {}) {
31568
+ const { notify: notify17 } = useBlocksEnvironment();
31569
+ const [phase, setPhase] = useState("idle");
31570
+ const [frame, setFrame] = useState(null);
31571
+ const [image, setImage] = useState(null);
31572
+ const capture = useCallback(async () => {
31573
+ setPhase("capturing");
31574
+ await new Promise((resolve) => window.setTimeout(resolve, 200));
31575
+ try {
31576
+ setFrame(await captureCurrentTab());
31577
+ setImage(null);
31578
+ } catch (error) {
31579
+ const code = error instanceof ScreenCaptureError ? error.code : "failed";
31580
+ if (code === "failed") {
31581
+ notify17("Couldn't capture the screen. You can still describe the problem.", "error");
31582
+ }
31583
+ }
31584
+ setPhase("describing");
31585
+ }, [notify17]);
31586
+ const reset = useCallback(() => {
31587
+ setPhase("idle");
31588
+ setFrame(null);
31589
+ setImage(null);
31590
+ }, []);
31591
+ const ui = /* @__PURE__ */ jsxs(Fragment, { children: [
31592
+ phase === "framing" && /* @__PURE__ */ jsx(
31593
+ CaptureBar,
31594
+ {
31595
+ onCapture: () => void capture(),
31596
+ onSkip: () => setPhase("describing"),
31597
+ onCancel: reset
31598
+ }
31599
+ ),
31600
+ /* @__PURE__ */ jsx(
31601
+ ReportProblemDialog,
31602
+ {
31603
+ ...options2,
31604
+ open: phase === "describing",
31605
+ frame,
31606
+ image,
31607
+ onCropped: (crop) => {
31608
+ setFrame(null);
31609
+ setImage(crop);
31610
+ },
31611
+ onImageChange: (next) => {
31612
+ setFrame(null);
31613
+ setImage(next);
31614
+ },
31615
+ onRetake: () => {
31616
+ setFrame(null);
31617
+ setImage(null);
31618
+ setPhase("framing");
31619
+ },
31620
+ onClose: reset
31621
+ }
31622
+ )
31623
+ ] });
31624
+ return { start: () => void capture(), ui };
31625
+ }
31626
+ function ConnectedReportProblem({
31627
+ layout = "bar",
31628
+ onSelect,
31629
+ ...options2
31630
+ }) {
31631
+ const report = useReportProblem(options2);
31632
+ const bar = layout === "bar";
31633
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
31634
+ /* @__PURE__ */ jsx(
31635
+ SidebarBadgeRow,
31636
+ {
31637
+ icon: /* @__PURE__ */ jsx(Bug, { className: "size-5" }),
31638
+ label: "Report a problem",
31639
+ ariaLabel: "Report a problem",
31640
+ variant: bar ? "icon" : void 0,
31641
+ className: bar ? "size-9 pointer-coarse:size-11" : void 0,
31642
+ "data-testid": "report-problem-button",
31643
+ onClick: () => {
31644
+ report.start();
31645
+ onSelect?.();
31646
+ }
31647
+ }
31648
+ ),
31649
+ report.ui
31650
+ ] });
31651
+ }
30925
31652
  var ConversationEntity = memo(function ConversationEntity2({
30926
31653
  conversation,
30927
31654
  variant = "pill",
@@ -32959,7 +33686,7 @@ function MessageLiveSecondsComponent({
32959
33686
  suffix
32960
33687
  ] });
32961
33688
  }
32962
- var MessageLiveSeconds = React7.memo(MessageLiveSecondsComponent);
33689
+ var MessageLiveSeconds = React9.memo(MessageLiveSecondsComponent);
32963
33690
  var DISPLAY_FIELDS = /* @__PURE__ */ new Set(["tool", "label", "icon", "summary"]);
32964
33691
  function getToolParams(detail) {
32965
33692
  const params = [];
@@ -33277,7 +34004,7 @@ function subStepNoun(tool) {
33277
34004
  function pluralise(noun) {
33278
34005
  return noun.endsWith("h") ? `${noun}es` : `${noun}s`;
33279
34006
  }
33280
- var AgentSteps = React7.memo(AgentStepsComponent, (prev, next) => {
34007
+ var AgentSteps = React9.memo(AgentStepsComponent, (prev, next) => {
33281
34008
  return prev.isStreaming === next.isStreaming && prev.className === next.className && prev.totalElapsedTime === next.totalElapsedTime && prev.steps === next.steps && prev.liveTimer === next.liveTimer && prev.hideLive === next.hideLive;
33282
34009
  });
33283
34010
  function RunStatsBadges({ steps, className }) {
@@ -33755,7 +34482,7 @@ var ConnectedCitationRendererComponent = ({
33755
34482
  }
33756
34483
  );
33757
34484
  };
33758
- var ConnectedCitationRenderer = React7.memo(ConnectedCitationRendererComponent);
34485
+ var ConnectedCitationRenderer = React9.memo(ConnectedCitationRendererComponent);
33759
34486
  function sourceTitle(chunk, docTitles) {
33760
34487
  const displayTitle = chunk.metadata.doc_ext_id ? docTitles.get(chunk.metadata.doc_ext_id) : void 0;
33761
34488
  return displayTitle ?? chunk.metadata.doc_title ?? chunk.metadata.doc_ext_id ?? "Source";
@@ -34514,10 +35241,10 @@ var MessageComponent = ({
34514
35241
  const fullUrl = domain ? `https://${domain}${path}` : `${window.location.origin}${path}`;
34515
35242
  navigator.clipboard.writeText(fullUrl).then(
34516
35243
  () => notify17(
34517
- React7.createElement(
35244
+ React9.createElement(
34518
35245
  "span",
34519
35246
  {},
34520
- React7.createElement(
35247
+ React9.createElement(
34521
35248
  "a",
34522
35249
  {
34523
35250
  href: fullUrl,
@@ -35046,7 +35773,7 @@ function areMessagesEqual(prevProps, nextProps) {
35046
35773
  if (prevProps.subagentLinks !== nextProps.subagentLinks) return false;
35047
35774
  return true;
35048
35775
  }
35049
- var ConnectedMessage = React7.memo(MessageComponent, areMessagesEqual);
35776
+ var ConnectedMessage = React9.memo(MessageComponent, areMessagesEqual);
35050
35777
  var VERSION_LABELS = {
35051
35778
  branchOf: (current2, total) => `Version ${current2} of ${total}`,
35052
35779
  previousBranch: "Previous version",
@@ -39201,6 +39928,6 @@ function ConnectedAccountAccessBadge() {
39201
39928
  ] });
39202
39929
  }
39203
39930
 
39204
- export { AddAddonDialog, AddFromAccountsButton, AgentBarShell, AgentControlBar, AgentSteps, AnswerTable, AskAgainContext, BACKFILL_OPTIONS, BULK_REPROCESS_LIMIT, BillingProjectEntity, ChangePlanDialog, ChatAttachmentList, ConnectedAccountAccessBadge, ConnectedAccountCluster, ConnectedAccountSettings, ConnectedAddContacts, ConnectedAgentChat, ConnectedAgentChatPanel, ConnectedAgentConfigForm, ConnectedAgentCreator, ConnectedAiReview, ConnectedAppsSettings, ConnectedAuthorizeAgent, ConnectedBranchControls, ConnectedBulkTagEditor, ConnectedCalendar, ConnectedChatThread, ConnectedCitationRenderer, ConnectedCompactConversation, ConnectedConfigForm, ConnectedContactCardForm, ConnectedContactToggle, ConnectedContactsDirectory, ConnectedConversation, ConnectedConversationDocumentPicker, ConnectedConversationEmpty, ConnectedConversationStart, ConnectedDangerZone, ConnectedDeploymentStorage, ConnectedDeveloperConfig, ConnectedDriveSyncDialog, ConnectedExportDialog, ConnectedExportPanel, ConnectedFactsPage, ConnectedFieldsEditor, ConnectedFieldsManager, ConnectedFilesBulkActions, ConnectedFilesExplorer, ConnectedFilesPage, ConnectedForgotPassword, ConnectedGrantWorkspaceAccessDialog, ConnectedGroupMembers, ConnectedIdentityVerification, ConnectedLoginPage, ConnectedLogoutDialog, ConnectedMailAccounts, ConnectedMailComposer, ConnectedMailInviteCard, ConnectedMailMessage, ConnectedMailSettings, ConnectedMailSetup, ConnectedMailbox, ConnectedMailboxSyncDialog, ConnectedMessage, ConnectedMessageArea, ConnectedMessageList, ConnectedMessenger, ConnectedModelSelector, ConnectedMoveToFolder, ConnectedNewThreadDialog, ConnectedNotificationCenter, ConnectedNotificationPreferences, ConnectedOAuthConsentPage, ConnectedPasswordChangeDialog, ConnectedPremiumModels, ConnectedPrivacySettings, ConnectedProfileCard, ConnectedProjectEntity, ConnectedProjectPage, ConnectedProjectStorage, ConnectedProjectsPanel, ConnectedPublicBooking, ConnectedQuotaDialog, ConnectedRecentlyDeletedButton, ConnectedRecoveryKeyDialog, ConnectedRequestWorkspaceAccess, ConnectedRequireVerified, ConnectedSearchPage, ConnectedSecuritySection, ConnectedSessionsRow, ConnectedSettingsPage, ConnectedSharePointAdminConsentPage, ConnectedSharedFilesPage, ConnectedSignatureVerifyPage, ConnectedSkillUpload, ConnectedSkillsLibrary, ConnectedSsoCallback, ConnectedStorageProjectCard, ConnectedStorageSettings, ConnectedTagEditorDialog, ConnectedTagEntity, ConnectedTagForm, ConnectedTagTable, ConnectedTagsPage, ConnectedTaskAccessRequest, ConnectedTaskActivityDialog, ConnectedTaskComposer, ConnectedTaskStartDialog, ConnectedThreadFollow, ConnectedThreadLauncher, ConnectedThreadTabs, ConnectedThreadTaskBar, ConnectedThreadsPreview, ConnectedTransferWatcher, ConnectedUpcomingEvents, ConnectedUpload, ConnectedUploadDropzone, ConnectedUserEntity, ConnectedWelcomeDialog, ConnectedWorkflowHistory, ConnectedWorkflowRunner, ConnectedWorkflowStart, ConnectedWorkspaceActivity, ConnectedWorkspaceDashboard, ConnectedWorkspaceEntity, ConnectedWorkspaceList, ConnectedWorkspaceMembers, ConnectedWorkspaceNotificationMenu, ConnectedWorkspaceSettings, ConnectedWorkspaceTrash, ConversationAlert, ConversationComposer2 as ConversationComposer, ConversationEntity, ConversationSendButton, ConversationStatusCell, DEFAULT_CONNECTED_SEARCH_PAGE_LABELS, DEFAULT_CONNECTED_SKILL_UPLOAD_LABELS, DEFAULT_CONNECTED_WORKFLOW_RUNNER_LABELS, DEFAULT_OAUTH_PERMISSIONS, DEFAULT_PROJECTS_LIST_LABELS, DEFAULT_PROJECT_DETAILS_LABELS, DEFAULT_PROJECT_DETAIL_FIELDS, DEFAULT_PROJECT_LIST_COLUMNS, DEFAULT_PROJECT_PAGE_LABELS, DEFAULT_SEARCH_FIELDS, DEFAULT_SEARCH_ROW_LABELS, DEFAULT_SETTINGS_SECTIONS, DEFAULT_TIMELINE_LABEL_WIDTH, DEFAULT_WORKSPACE_LIST_LABELS, DeveloperFooter, DocumentFolderCell, DocumentLabelsCell, DocumentNameCell, DocumentSharedCell, DocumentStatusGlyph, DocumentSyncGlyph, DocumentUser, DocumentsFilterBarActions, DocumentsUploadButton, EmptyWorkspaceUpload, FACTS_GRID_ID, FILES_PREFS_KEY, FileTooltipContent, ImportVcfButton, ImportVcfSummary, InvoicesModal, LOOK_AGAIN_LABEL, MessageDetailsModal, MessageLiveSeconds, MicButton, NewProjectFlow, NotificationCenter, NotificationEvent, PENDING_LOOKUP_MS, PENDING_RECOVERY_KEY, PENDING_TASK_MESSAGE, PREMIUM_TIER_TAG, PROJECTS_BASE_TAB_ID, PROMPT_BINDINGS, PersistedGridView, ProgressiveLoadingChip, ProjectDetail, ProjectUsageContent, ProjectsTable, REFERRAL_OFFER, RecoveryKeyDownload, RelatedDocumentsCell, RunStatsBadges, RunningSubagents, SEARCH_FIELD_OPTIONS, SETTINGS_SECTION_IDS, STANDARD_TIER_TAG, SessionStatusIcon, SharedProjects, SourceChips, SsoResendVerificationButton, StatusCell, StorageBreakdown, StorageItemsTable, StorageTiers, StreamedArtifact, TILE_DEFAULT, TILE_MAX, TILE_MIN, ThreadSwitcher, UserAvatar, ViewSelector, WORKSPACES_TAB_ID, WorkflowLaunchHost, WorkflowRunStatusCell, WorkflowRunThread, WorkflowStepMessage, accountSettingsSection, appearanceSettingsSection, backUpOnSignup, bookingCancelLink, buildNotificationCenterItems, buildProjectSummaries, chatSettingsSection, closeAccessRequestReview, connectedAppsSettingsSection, connectionSettingsSection, countNotificationTypes, createDocumentColumns, createEventCall, createNotificationTargetOpener, createTagColumn, deduplicateByContentHash, defaultHost, describePlan, distinctPeers, documentFamilyMeta, documentFieldContent, filesViewMode, filterNotificationCenterItems, formatStorageGb, groupFallbackName, identifyOAuthClient, isActiveDocumentStatus, joinEventMeeting, loadEventWebinar, mailSettingsSection, openMeetingLink, openSsoPopup, organisationSettingsSection, parseArbiCallUrl, parseOAuthConsentRequest, parseQuotaError, parseTypedSkill, primaryProjectWorkspace, privacySettingsSection, renderConnectedUser, renderSessionStatusIcon, requestProjectBillingFocus, resolveAttendeeUsers, resolveAttendeeUsersRemote, resolveCallPeers, resolveCallPeersRemote, resolveLaunchInputs, resolveMailbox, resolveSsoName, reviewAccessRequest, reviewProgress, shareEventCall, startMenuItem, storageSettingsSection, suppliedKinds, threadStateOf, toWorkspaceSummary, transferOutcome, updateEventWebinarRoles, usageSettingsSection, useAccessRequestUnderReview, useAddFromUrls, useAiReviewStore, useAuthPages, useAutoRefreshPendingProjects, useConnectedCalendarCalls, useConnectedNotificationBell, useConnectedShellWorkspaces, useConnectedThreadActivity, useConnectedWorkspaceList, useConnectedWorkspaceSettings, useDocumentBulkActions, useDocumentFilters, useDocumentFolders, useDocumentGridSync, useDocumentNavigation, useDocumentTable, useExportStore, useFilesDialogs, useFilesGridStates, useFilesPrefs, useFilesStore, useLaunchWorkflow, useMemberLookup, useMessengerRows, useModelPicker, useNotificationBellEntry, useOpenBillingPortal, useOpenChunk, useOpenNotificationTarget, useOpenWorkspaceActivityTarget, useOpenWorkspaceIcon, usePendingFolders, usePendingTaskThread, useProjectBillingFocus, useProjectSummaries, useProjectSummary, useReferralReward, useRenderTaskPerson, useResolvedDocStatus, useSkillsEnabled, useSlashItems, useSlashSkillWorkflows, useSsoSignIn, useStartRequestedDraft, useTableViews, useTaskPeople, useTaskStart, useThreadLabels, useThreadTabs, useWorkflowDefinitions, useWorkflowLaunch, useWorkflowTasks, useWorkspaceDocTitles, viewsOfTable, webinarRolesByUser, windowLabel, withMissingTableViews, withTableView, withoutTableView, workflowRunView };
39931
+ export { AddAddonDialog, AddFromAccountsButton, AgentBarShell, AgentControlBar, AgentSteps, AnswerTable, AskAgainContext, BACKFILL_OPTIONS, BULK_REPROCESS_LIMIT, BillingProjectEntity, CaptureBar, ChangePlanDialog, ChatAttachmentList, ConnectedAccountAccessBadge, ConnectedAccountCluster, ConnectedAccountSettings, ConnectedAddContacts, ConnectedAgentChat, ConnectedAgentChatPanel, ConnectedAgentConfigForm, ConnectedAgentCreator, ConnectedAiReview, ConnectedAppRuntime, ConnectedAppsSettings, ConnectedAuthorizeAgent, ConnectedBranchControls, ConnectedBulkTagEditor, ConnectedCalendar, ConnectedChatThread, ConnectedCitationRenderer, ConnectedCompactConversation, ConnectedConfigForm, ConnectedContactCardForm, ConnectedContactToggle, ConnectedContactsDirectory, ConnectedConversation, ConnectedConversationDocumentPicker, ConnectedConversationEmpty, ConnectedConversationStart, ConnectedDangerZone, ConnectedDeploymentStorage, ConnectedDeveloperConfig, ConnectedDriveSyncDialog, ConnectedExportDialog, ConnectedExportPanel, ConnectedFactsPage, ConnectedFieldsEditor, ConnectedFieldsManager, ConnectedFilesBulkActions, ConnectedFilesExplorer, ConnectedFilesPage, ConnectedForgotPassword, ConnectedGrantWorkspaceAccessDialog, ConnectedGroupMembers, ConnectedIdentityVerification, ConnectedLoginPage, ConnectedLogoutDialog, ConnectedMailAccounts, ConnectedMailComposer, ConnectedMailInviteCard, ConnectedMailMessage, ConnectedMailSettings, ConnectedMailSetup, ConnectedMailbox, ConnectedMailboxSyncDialog, ConnectedMessage, ConnectedMessageArea, ConnectedMessageList, ConnectedMessenger, ConnectedModelSelector, ConnectedMoveToFolder, ConnectedNewThreadDialog, ConnectedNotificationCenter, ConnectedNotificationPreferences, ConnectedOAuthConsentPage, ConnectedPasswordChangeDialog, ConnectedPremiumModels, ConnectedPrivacySettings, ConnectedProfileCard, ConnectedProjectEntity, ConnectedProjectPage, ConnectedProjectStorage, ConnectedProjectsPanel, ConnectedPublicBooking, ConnectedQuotaDialog, ConnectedRecentlyDeletedButton, ConnectedRecoveryKeyDialog, ConnectedReportProblem, ConnectedRequestWorkspaceAccess, ConnectedRequireVerified, ConnectedSearchPage, ConnectedSecuritySection, ConnectedSessionsRow, ConnectedSettingsPage, ConnectedSharePointAdminConsentPage, ConnectedSharedFilesPage, ConnectedSignatureVerifyPage, ConnectedSkillUpload, ConnectedSkillsLibrary, ConnectedSsoCallback, ConnectedStorageProjectCard, ConnectedStorageSettings, ConnectedTagEditorDialog, ConnectedTagEntity, ConnectedTagForm, ConnectedTagTable, ConnectedTagsPage, ConnectedTaskAccessRequest, ConnectedTaskActivityDialog, ConnectedTaskComposer, ConnectedTaskStartDialog, ConnectedThreadFollow, ConnectedThreadLauncher, ConnectedThreadTabs, ConnectedThreadTaskBar, ConnectedThreadsPreview, ConnectedTransferWatcher, ConnectedUpcomingEvents, ConnectedUpload, ConnectedUploadDropzone, ConnectedUserEntity, ConnectedWelcomeDialog, ConnectedWorkflowHistory, ConnectedWorkflowRunner, ConnectedWorkflowStart, ConnectedWorkspaceActivity, ConnectedWorkspaceDashboard, ConnectedWorkspaceEntity, ConnectedWorkspaceList, ConnectedWorkspaceMembers, ConnectedWorkspaceNotificationMenu, ConnectedWorkspaceSettings, ConnectedWorkspaceTrash, ConversationAlert, ConversationComposer2 as ConversationComposer, ConversationEntity, ConversationSendButton, ConversationStatusCell, DEFAULT_CONNECTED_SEARCH_PAGE_LABELS, DEFAULT_CONNECTED_SKILL_UPLOAD_LABELS, DEFAULT_CONNECTED_WORKFLOW_RUNNER_LABELS, DEFAULT_OAUTH_PERMISSIONS, DEFAULT_PROJECTS_LIST_LABELS, DEFAULT_PROJECT_DETAILS_LABELS, DEFAULT_PROJECT_DETAIL_FIELDS, DEFAULT_PROJECT_LIST_COLUMNS, DEFAULT_PROJECT_PAGE_LABELS, DEFAULT_SEARCH_FIELDS, DEFAULT_SEARCH_ROW_LABELS, DEFAULT_SETTINGS_SECTIONS, DEFAULT_TIMELINE_LABEL_WIDTH, DEFAULT_WORKSPACE_LIST_LABELS, DeveloperFooter, DocumentFolderCell, DocumentLabelsCell, DocumentNameCell, DocumentSharedCell, DocumentStatusGlyph, DocumentSyncGlyph, DocumentUser, DocumentsFilterBarActions, DocumentsUploadButton, EmptyWorkspaceUpload, FACTS_GRID_ID, FILES_PREFS_KEY, FileTooltipContent, ImportVcfButton, ImportVcfSummary, InvoicesModal, LOOK_AGAIN_LABEL, MessageDetailsModal, MessageLiveSeconds, MicButton, NewProjectFlow, NotificationCenter, NotificationEvent, PENDING_LOOKUP_MS, PENDING_RECOVERY_KEY, PENDING_TASK_MESSAGE, PREMIUM_TIER_TAG, PROJECTS_BASE_TAB_ID, PROMPT_BINDINGS, PersistedGridView, ProgressiveLoadingChip, ProjectDetail, ProjectUsageContent, ProjectsTable, REFERRAL_OFFER, RecoveryKeyDownload, RelatedDocumentsCell, ReportProblemDialog, RunStatsBadges, RunningSubagents, SEARCH_FIELD_OPTIONS, SETTINGS_SECTION_IDS, STANDARD_TIER_TAG, SessionStatusIcon, SharedProjects, SourceChips, SsoResendVerificationButton, StatusCell, StorageBreakdown, StorageItemsTable, StorageTiers, StreamedArtifact, TILE_DEFAULT, TILE_MAX, TILE_MIN, ThreadSwitcher, UserAvatar, ViewSelector, WORKSPACES_TAB_ID, WorkflowLaunchHost, WorkflowRunStatusCell, WorkflowRunThread, WorkflowStepMessage, accountSettingsSection, appearanceSettingsSection, backUpOnSignup, bookingCancelLink, buildNotificationCenterItems, buildProjectSummaries, chatSettingsSection, closeAccessRequestReview, connectedAppsSettingsSection, connectionSettingsSection, countNotificationTypes, createDocumentColumns, createEventCall, createNotificationTargetOpener, createTagColumn, deduplicateByContentHash, defaultHost, describePlan, distinctPeers, documentFamilyMeta, documentFieldContent, filesViewMode, filterNotificationCenterItems, formatStorageGb, groupFallbackName, identifyOAuthClient, isActiveDocumentStatus, joinEventMeeting, loadEventWebinar, mailSettingsSection, openMeetingLink, openSsoPopup, organisationSettingsSection, parseArbiCallUrl, parseOAuthConsentRequest, parseQuotaError, parseTypedSkill, primaryProjectWorkspace, privacySettingsSection, renderConnectedUser, renderSessionStatusIcon, requestProjectBillingFocus, resolveAttendeeUsers, resolveAttendeeUsersRemote, resolveCallPeers, resolveCallPeersRemote, resolveLaunchInputs, resolveMailbox, resolveSsoName, reviewAccessRequest, reviewProgress, shareEventCall, startMenuItem, storageSettingsSection, suppliedKinds, threadStateOf, toWorkspaceSummary, transferOutcome, updateEventWebinarRoles, usageSettingsSection, useAccessRequestUnderReview, useAddFromUrls, useAiReviewStore, useAuthPages, useAutoRefreshPendingProjects, useConnectedCalendarCalls, useConnectedNotificationBell, useConnectedShellWorkspaces, useConnectedThreadActivity, useConnectedWorkspaceList, useConnectedWorkspaceSettings, useDocumentBulkActions, useDocumentFilters, useDocumentFolders, useDocumentGridSync, useDocumentNavigation, useDocumentTable, useExportStore, useFilesDialogs, useFilesGridStates, useFilesPrefs, useFilesStore, useLaunchWorkflow, useMemberLookup, useMessengerRows, useModelPicker, useNotificationBellEntry, useOpenBillingPortal, useOpenChunk, useOpenNotificationTarget, useOpenWorkspaceActivityTarget, useOpenWorkspaceIcon, usePendingFolders, usePendingTaskThread, useProjectBillingFocus, useProjectSummaries, useProjectSummary, useReferralReward, useRenderTaskPerson, useReportProblem, useResolvedDocStatus, useSkillsEnabled, useSlashItems, useSlashSkillWorkflows, useSsoSignIn, useStartRequestedDraft, useTableViews, useTaskPeople, useTaskStart, useThreadLabels, useThreadTabs, useWorkflowDefinitions, useWorkflowLaunch, useWorkflowTasks, useWorkspaceDocTitles, viewsOfTable, webinarRolesByUser, windowLabel, withMissingTableViews, withTableView, withoutTableView, workflowRunView };
39205
39932
  //# sourceMappingURL=index.js.map
39206
39933
  //# sourceMappingURL=index.js.map