@arbidocs/blocks 0.5.29 → 0.5.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{ConnectedCallDock-FDGMFTS5.js → ConnectedCallDock-AWSOPETT.js} +12 -12
- package/dist/{ConnectedCallDock-FDGMFTS5.js.map → ConnectedCallDock-AWSOPETT.js.map} +1 -1
- package/dist/{ConnectedCallDock-ZIX2ZJCD.cjs → ConnectedCallDock-GM4KOBBS.cjs} +13 -13
- package/dist/{ConnectedCallDock-ZIX2ZJCD.cjs.map → ConnectedCallDock-GM4KOBBS.cjs.map} +1 -1
- package/dist/{ConnectedCallRoom-VJIHEJ4X.js → ConnectedCallRoom-JMB74KTV.js} +12 -12
- package/dist/{ConnectedCallRoom-VJIHEJ4X.js.map → ConnectedCallRoom-JMB74KTV.js.map} +1 -1
- package/dist/{ConnectedCallRoom-WZQVXDDW.cjs → ConnectedCallRoom-QE2MMJ6M.cjs} +13 -13
- package/dist/{ConnectedCallRoom-WZQVXDDW.cjs.map → ConnectedCallRoom-QE2MMJ6M.cjs.map} +1 -1
- package/dist/{ConnectedNativeDocxComparison-KSLSDAAP.cjs → ConnectedNativeDocxComparison-P7IHRMCS.cjs} +17 -17
- package/dist/{ConnectedNativeDocxComparison-KSLSDAAP.cjs.map → ConnectedNativeDocxComparison-P7IHRMCS.cjs.map} +1 -1
- package/dist/{ConnectedNativeDocxComparison-7ZC7BRY4.js → ConnectedNativeDocxComparison-T6JRDIMR.js} +16 -16
- package/dist/{ConnectedNativeDocxComparison-7ZC7BRY4.js.map → ConnectedNativeDocxComparison-T6JRDIMR.js.map} +1 -1
- package/dist/{ConnectedNativeDocxEditor-5E64Q7FX.cjs → ConnectedNativeDocxEditor-HBV5EJ63.cjs} +17 -17
- package/dist/{ConnectedNativeDocxEditor-5E64Q7FX.cjs.map → ConnectedNativeDocxEditor-HBV5EJ63.cjs.map} +1 -1
- package/dist/{ConnectedNativeDocxEditor-B5KDDPRY.js → ConnectedNativeDocxEditor-X6YNPGRL.js} +15 -15
- package/dist/{ConnectedNativeDocxEditor-B5KDDPRY.js.map → ConnectedNativeDocxEditor-X6YNPGRL.js.map} +1 -1
- package/dist/{ConnectedStreamedWordArtifact-RLU5VYGO.cjs → ConnectedStreamedWordArtifact-GYJEQO4M.cjs} +17 -17
- package/dist/ConnectedStreamedWordArtifact-GYJEQO4M.cjs.map +1 -0
- package/dist/{ConnectedStreamedWordArtifact-YCQSIGXL.js → ConnectedStreamedWordArtifact-X7R6PBRT.js} +16 -16
- package/dist/ConnectedStreamedWordArtifact-X7R6PBRT.js.map +1 -0
- package/dist/{WorkspaceTableView-BUWRSR42.cjs → WorkspaceTableView-FTQZJDRB.cjs} +10 -10
- package/dist/{WorkspaceTableView-BUWRSR42.cjs.map → WorkspaceTableView-FTQZJDRB.cjs.map} +1 -1
- package/dist/{WorkspaceTableView-62PJLX7V.js → WorkspaceTableView-NWRVACJL.js} +8 -8
- package/dist/{WorkspaceTableView-62PJLX7V.js.map → WorkspaceTableView-NWRVACJL.js.map} +1 -1
- package/dist/agents/index.cjs +373 -373
- package/dist/agents/index.js +11 -11
- package/dist/calls/index.cjs +39 -39
- package/dist/calls/index.js +7 -7
- package/dist/chat/index.cjs +167 -167
- package/dist/chat/index.js +9 -9
- package/dist/{chunk-CPJ2B3QQ.cjs → chunk-24Y36OK6.cjs} +9 -9
- package/dist/{chunk-CPJ2B3QQ.cjs.map → chunk-24Y36OK6.cjs.map} +1 -1
- package/dist/{chunk-XDFH6ONO.cjs → chunk-2DO5YPDH.cjs} +16 -16
- package/dist/{chunk-XDFH6ONO.cjs.map → chunk-2DO5YPDH.cjs.map} +1 -1
- package/dist/{chunk-GJI5PEGR.js → chunk-2JARBDEK.js} +4 -4
- package/dist/{chunk-GJI5PEGR.js.map → chunk-2JARBDEK.js.map} +1 -1
- package/dist/{chunk-HT62K3UO.cjs → chunk-3YVWAYXU.cjs} +4 -4
- package/dist/{chunk-HT62K3UO.cjs.map → chunk-3YVWAYXU.cjs.map} +1 -1
- package/dist/{chunk-EJSVRT3G.js → chunk-5VSMJ674.js} +56 -66
- package/dist/chunk-5VSMJ674.js.map +1 -0
- package/dist/{chunk-XGUN44A4.js → chunk-5XG7YD4V.js} +8 -8
- package/dist/{chunk-XGUN44A4.js.map → chunk-5XG7YD4V.js.map} +1 -1
- package/dist/{chunk-EVV32AXB.cjs → chunk-62G4HK7C.cjs} +6 -6
- package/dist/{chunk-EVV32AXB.cjs.map → chunk-62G4HK7C.cjs.map} +1 -1
- package/dist/{chunk-7U2DNPMZ.cjs → chunk-63FOCF46.cjs} +12 -12
- package/dist/{chunk-7U2DNPMZ.cjs.map → chunk-63FOCF46.cjs.map} +1 -1
- package/dist/{chunk-NIS5TLOM.cjs → chunk-6LVVW6VB.cjs} +4 -4
- package/dist/{chunk-NIS5TLOM.cjs.map → chunk-6LVVW6VB.cjs.map} +1 -1
- package/dist/{chunk-JS7KJRKG.js → chunk-75Z5AUMM.js} +3 -3
- package/dist/{chunk-JS7KJRKG.js.map → chunk-75Z5AUMM.js.map} +1 -1
- package/dist/{chunk-CRUCMRFC.cjs → chunk-76G2DAOF.cjs} +18 -18
- package/dist/{chunk-CRUCMRFC.cjs.map → chunk-76G2DAOF.cjs.map} +1 -1
- package/dist/{chunk-AHYSHKPL.cjs → chunk-7THRBD42.cjs} +57 -16
- package/dist/chunk-7THRBD42.cjs.map +1 -0
- package/dist/{chunk-SBHWRN2D.js → chunk-BBSXBABG.js} +3 -3
- package/dist/{chunk-SBHWRN2D.js.map → chunk-BBSXBABG.js.map} +1 -1
- package/dist/{chunk-WG2VDUEI.cjs → chunk-BVMPP574.cjs} +4 -4
- package/dist/{chunk-WG2VDUEI.cjs.map → chunk-BVMPP574.cjs.map} +1 -1
- package/dist/{chunk-3IRIITUW.cjs → chunk-BVXI7W7Z.cjs} +9 -9
- package/dist/{chunk-3IRIITUW.cjs.map → chunk-BVXI7W7Z.cjs.map} +1 -1
- package/dist/{chunk-EVYUYVH2.cjs → chunk-C5J74Y6N.cjs} +5 -5
- package/dist/{chunk-EVYUYVH2.cjs.map → chunk-C5J74Y6N.cjs.map} +1 -1
- package/dist/{chunk-WY626DNG.cjs → chunk-CGUDTSGI.cjs} +10 -10
- package/dist/{chunk-WY626DNG.cjs.map → chunk-CGUDTSGI.cjs.map} +1 -1
- package/dist/{chunk-WBCGVEJX.js → chunk-CMTAOVUX.js} +3 -3
- package/dist/{chunk-WBCGVEJX.js.map → chunk-CMTAOVUX.js.map} +1 -1
- package/dist/{chunk-OGADWN5L.js → chunk-DHTBHALC.js} +4 -4
- package/dist/{chunk-OGADWN5L.js.map → chunk-DHTBHALC.js.map} +1 -1
- package/dist/{chunk-UXIMEFEF.js → chunk-DWERY33L.js} +8 -8
- package/dist/{chunk-UXIMEFEF.js.map → chunk-DWERY33L.js.map} +1 -1
- package/dist/{chunk-A634VUNB.js → chunk-EPNJOP2M.js} +5 -5
- package/dist/{chunk-A634VUNB.js.map → chunk-EPNJOP2M.js.map} +1 -1
- package/dist/{chunk-4RMI6D64.cjs → chunk-EZLZ3MDU.cjs} +3 -3
- package/dist/{chunk-4RMI6D64.cjs.map → chunk-EZLZ3MDU.cjs.map} +1 -1
- package/dist/{chunk-3OKBEVP3.js → chunk-FAILAFD6.js} +3 -3
- package/dist/{chunk-3OKBEVP3.js.map → chunk-FAILAFD6.js.map} +1 -1
- package/dist/{chunk-OZSAQJO4.js → chunk-FODIZWMX.js} +3 -3
- package/dist/{chunk-OZSAQJO4.js.map → chunk-FODIZWMX.js.map} +1 -1
- package/dist/{chunk-V2GEULRG.cjs → chunk-GK35JEWW.cjs} +4 -4
- package/dist/{chunk-V2GEULRG.cjs.map → chunk-GK35JEWW.cjs.map} +1 -1
- package/dist/{chunk-52GITM4V.cjs → chunk-GNWQS6S4.cjs} +144 -154
- package/dist/{chunk-EJSVRT3G.js.map → chunk-GNWQS6S4.cjs.map} +1 -1
- package/dist/{chunk-R3HZBTE3.cjs → chunk-HMEP4EZ3.cjs} +4 -4
- package/dist/{chunk-R3HZBTE3.cjs.map → chunk-HMEP4EZ3.cjs.map} +1 -1
- package/dist/{chunk-5ETT7ZIO.js → chunk-IYKGI2DQ.js} +3 -3
- package/dist/{chunk-5ETT7ZIO.js.map → chunk-IYKGI2DQ.js.map} +1 -1
- package/dist/{chunk-3PQPA5K6.cjs → chunk-J4VP2PQJ.cjs} +28 -28
- package/dist/{chunk-3PQPA5K6.cjs.map → chunk-J4VP2PQJ.cjs.map} +1 -1
- package/dist/{chunk-TY76UEFK.js → chunk-JLJVEQFN.js} +6 -6
- package/dist/{chunk-TY76UEFK.js.map → chunk-JLJVEQFN.js.map} +1 -1
- package/dist/{chunk-G3MZ5S2Q.js → chunk-KYHDMUPW.js} +3 -3
- package/dist/{chunk-G3MZ5S2Q.js.map → chunk-KYHDMUPW.js.map} +1 -1
- package/dist/{chunk-DF2GSH4D.js → chunk-L2MMIC3S.js} +3 -3
- package/dist/{chunk-DF2GSH4D.js.map → chunk-L2MMIC3S.js.map} +1 -1
- package/dist/{chunk-46XON6PW.js → chunk-L4Q7FWBQ.js} +3 -3
- package/dist/{chunk-46XON6PW.js.map → chunk-L4Q7FWBQ.js.map} +1 -1
- package/dist/{chunk-OQCUIN6Z.cjs → chunk-M6N7XJH7.cjs} +5 -5
- package/dist/{chunk-OQCUIN6Z.cjs.map → chunk-M6N7XJH7.cjs.map} +1 -1
- package/dist/{chunk-MTHAQGJB.js → chunk-MNLMPH45.js} +3 -3
- package/dist/{chunk-MTHAQGJB.js.map → chunk-MNLMPH45.js.map} +1 -1
- package/dist/{chunk-W43S7COD.js → chunk-NBQNDHOW.js} +4 -4
- package/dist/{chunk-W43S7COD.js.map → chunk-NBQNDHOW.js.map} +1 -1
- package/dist/{chunk-7YGUUUL7.cjs → chunk-NF7CGYZF.cjs} +4 -4
- package/dist/{chunk-7YGUUUL7.cjs.map → chunk-NF7CGYZF.cjs.map} +1 -1
- package/dist/{chunk-DNGA25ZA.js → chunk-NI3O4UZL.js} +5 -5
- package/dist/{chunk-DNGA25ZA.js.map → chunk-NI3O4UZL.js.map} +1 -1
- package/dist/{chunk-T3JW5BYG.cjs → chunk-OSCWFBRD.cjs} +4 -4
- package/dist/{chunk-T3JW5BYG.cjs.map → chunk-OSCWFBRD.cjs.map} +1 -1
- package/dist/{chunk-TKOP6WMD.js → chunk-OYKITGTK.js} +4 -4
- package/dist/{chunk-TKOP6WMD.js.map → chunk-OYKITGTK.js.map} +1 -1
- package/dist/{chunk-2TB4UDBH.js → chunk-PKDGP6ZH.js} +3 -3
- package/dist/{chunk-2TB4UDBH.js.map → chunk-PKDGP6ZH.js.map} +1 -1
- package/dist/{chunk-AKW4JLHQ.cjs → chunk-PO2QI2OI.cjs} +4 -4
- package/dist/{chunk-AKW4JLHQ.cjs.map → chunk-PO2QI2OI.cjs.map} +1 -1
- package/dist/{chunk-4UREQY5X.js → chunk-Q56LAJRP.js} +4 -4
- package/dist/{chunk-4UREQY5X.js.map → chunk-Q56LAJRP.js.map} +1 -1
- package/dist/{chunk-SQAVWMGV.cjs → chunk-R6GIDWEH.cjs} +59 -59
- package/dist/{chunk-SQAVWMGV.cjs.map → chunk-R6GIDWEH.cjs.map} +1 -1
- package/dist/{chunk-KKBYWVEL.js → chunk-SLGRQMHW.js} +5 -5
- package/dist/{chunk-KKBYWVEL.js.map → chunk-SLGRQMHW.js.map} +1 -1
- package/dist/{chunk-LXB756TN.cjs → chunk-SN5VHPF4.cjs} +3 -3
- package/dist/{chunk-LXB756TN.cjs.map → chunk-SN5VHPF4.cjs.map} +1 -1
- package/dist/{chunk-CJWZYK5K.cjs → chunk-SVL2OM7T.cjs} +5 -5
- package/dist/{chunk-CJWZYK5K.cjs.map → chunk-SVL2OM7T.cjs.map} +1 -1
- package/dist/{chunk-SSRFSSIT.js → chunk-TGVBLXLV.js} +52 -17
- package/dist/chunk-TGVBLXLV.js.map +1 -0
- package/dist/{chunk-DV25UPJ7.js → chunk-THNTNAYI.js} +3 -3
- package/dist/{chunk-DV25UPJ7.js.map → chunk-THNTNAYI.js.map} +1 -1
- package/dist/{chunk-AYAWG2CM.js → chunk-TNWJPTDG.js} +3 -3
- package/dist/{chunk-AYAWG2CM.js.map → chunk-TNWJPTDG.js.map} +1 -1
- package/dist/{chunk-SN7X7C7H.cjs → chunk-UAMY7KHW.cjs} +5 -5
- package/dist/{chunk-SN7X7C7H.cjs.map → chunk-UAMY7KHW.cjs.map} +1 -1
- package/dist/{chunk-H72SWOUS.js → chunk-VTGRCJLP.js} +3 -3
- package/dist/{chunk-H72SWOUS.js.map → chunk-VTGRCJLP.js.map} +1 -1
- package/dist/{chunk-W5PKYJX5.cjs → chunk-W6DDSZUD.cjs} +14 -14
- package/dist/{chunk-W5PKYJX5.cjs.map → chunk-W6DDSZUD.cjs.map} +1 -1
- package/dist/{chunk-ZXXXLYZY.cjs → chunk-WG2IPVLA.cjs} +7 -7
- package/dist/{chunk-ZXXXLYZY.cjs.map → chunk-WG2IPVLA.cjs.map} +1 -1
- package/dist/{chunk-RWU3C4MK.js → chunk-WLWY43FR.js} +3 -3
- package/dist/{chunk-RWU3C4MK.js.map → chunk-WLWY43FR.js.map} +1 -1
- package/dist/{chunk-OZRGYS3J.js → chunk-X3LM4KRW.js} +3 -3
- package/dist/{chunk-OZRGYS3J.js.map → chunk-X3LM4KRW.js.map} +1 -1
- package/dist/{chunk-IZJ3BOJO.js → chunk-XMDIXNLW.js} +3 -3
- package/dist/{chunk-IZJ3BOJO.js.map → chunk-XMDIXNLW.js.map} +1 -1
- package/dist/{chunk-7FKVJUR4.js → chunk-Y6F6UF2W.js} +3 -3
- package/dist/{chunk-7FKVJUR4.js.map → chunk-Y6F6UF2W.js.map} +1 -1
- package/dist/{chunk-F72ZD5Q2.cjs → chunk-YD3RN2FY.cjs} +3 -3
- package/dist/{chunk-F72ZD5Q2.cjs.map → chunk-YD3RN2FY.cjs.map} +1 -1
- package/dist/{chunk-QHWDV2VB.cjs → chunk-YJJNDKA3.cjs} +6 -6
- package/dist/{chunk-QHWDV2VB.cjs.map → chunk-YJJNDKA3.cjs.map} +1 -1
- package/dist/{chunk-NZCAWWV4.cjs → chunk-YP643FYT.cjs} +4 -4
- package/dist/{chunk-NZCAWWV4.cjs.map → chunk-YP643FYT.cjs.map} +1 -1
- package/dist/{chunk-BBTHGWZO.cjs → chunk-ZUOU54X3.cjs} +5 -5
- package/dist/{chunk-BBTHGWZO.cjs.map → chunk-ZUOU54X3.cjs.map} +1 -1
- package/dist/citations/index.cjs +10 -10
- package/dist/citations/index.js +2 -2
- package/dist/collaboration/index.cjs +9 -9
- package/dist/collaboration/index.js +1 -1
- package/dist/connect/docx.cjs +19 -19
- package/dist/connect/docx.js +15 -15
- package/dist/connect/index.cjs +1885 -1856
- package/dist/connect/index.cjs.map +1 -1
- package/dist/connect/index.d.ts +1 -0
- package/dist/connect/index.js +686 -659
- package/dist/connect/index.js.map +1 -1
- package/dist/connect/viewer.cjs +83 -83
- package/dist/connect/viewer.js +18 -18
- package/dist/connection/ConnectedSettings.d.ts +1 -1
- package/dist/connection/dialogs/ConnectedGlobalDialogs.d.ts +26 -0
- package/dist/connection/dialogs/index.d.ts +1 -0
- package/dist/connection/files/upload/ConnectedUploadDropzone.d.ts +2 -1
- package/dist/connection/workspace-access/access-review.d.ts +6 -0
- package/dist/facts/index.cjs +60 -60
- package/dist/facts/index.js +7 -7
- package/dist/files/index.cjs +225 -225
- package/dist/files/index.js +5 -5
- package/dist/home/index.cjs +31 -31
- package/dist/home/index.js +6 -6
- package/dist/index.cjs +780 -756
- package/dist/index.d.ts +2 -1
- package/dist/index.js +27 -27
- package/dist/provider/dialog-registry.d.ts +85 -0
- package/dist/provider/environment.d.ts +11 -11
- package/dist/retrieval/index.cjs +4 -4
- package/dist/retrieval/index.js +2 -2
- package/dist/settings/index.cjs +156 -156
- package/dist/settings/index.js +3 -3
- package/dist/shell/index.cjs +42 -42
- package/dist/shell/index.js +4 -4
- package/dist/studio/index.cjs +18 -18
- package/dist/studio/index.js +10 -10
- package/dist/workflow-canvas/index.cjs +69 -69
- package/dist/workflow-canvas/index.js +14 -14
- package/dist/workspaces/index.cjs +29 -29
- package/dist/workspaces/index.js +4 -4
- package/node_modules/@arbidocs/coedit/package.json +1 -1
- package/package.json +5 -5
- package/dist/ConnectedStreamedWordArtifact-RLU5VYGO.cjs.map +0 -1
- package/dist/ConnectedStreamedWordArtifact-YCQSIGXL.js.map +0 -1
- package/dist/chunk-52GITM4V.cjs.map +0 -1
- package/dist/chunk-AHYSHKPL.cjs.map +0 -1
- package/dist/chunk-SSRFSSIT.js.map +0 -1
package/dist/connect/index.js
CHANGED
|
@@ -1,29 +1,22 @@
|
|
|
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-
|
|
3
|
-
export { CAP_REACHED_MESSAGE, ZERO_BUDGET_MESSAGE, aiUsageResetTimestamp, formatMoney, formatResetDate, getQuotaItems, isAddonBudgetZero, isProProject, planBadgeView, planName, projectGroupBilling, useBillingSupport, useRewardBalance } from '../chunk-
|
|
4
|
-
import { getRoleBadgeClass, formatRole, getRoleDescription, PageLoading, WorkspacePageFrame, WorkspaceIdentityPanel, WorkspaceProjectSlot, WorkspaceAudienceLine, CommonWorkspaceToggle, ExpandableSection, LeaveFooter, ProjectPicker, WorkspaceTypeBadge, WorkspaceList, WorkspaceGroup, WorkspaceCard } from '../chunk-
|
|
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-VTGRCJLP.js';
|
|
3
|
+
export { CAP_REACHED_MESSAGE, ZERO_BUDGET_MESSAGE, aiUsageResetTimestamp, formatMoney, formatResetDate, getQuotaItems, isAddonBudgetZero, isProProject, planBadgeView, planName, projectGroupBilling, useBillingSupport, useRewardBalance } from '../chunk-VTGRCJLP.js';
|
|
4
|
+
import { getRoleBadgeClass, formatRole, getRoleDescription, PageLoading, WorkspacePageFrame, WorkspaceIdentityPanel, WorkspaceProjectSlot, WorkspaceAudienceLine, CommonWorkspaceToggle, ExpandableSection, LeaveFooter, ProjectPicker, WorkspaceTypeBadge, WorkspaceList, WorkspaceGroup, WorkspaceCard } from '../chunk-BBSXBABG.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-
|
|
8
|
-
import { HomeLoadError, HomeFrame, HomeMain, HomeCenteredScroll, HomeCenteredColumn, DashboardRoot, DashboardBand, DashboardColumns, RecentList, DashboardAction, FactsStrip, FactMark, CreateTile } from '../chunk-
|
|
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-2JARBDEK.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-
|
|
12
|
-
export { ConnectedAssistantDock, redlineStats, textToArtifact, toRedlineMarkdown, useConnectedAiTask, useConnectedChat, useSemanticSearch, useWorkspaceDocs } from '../chunk-
|
|
13
|
-
import {
|
|
14
|
-
export {
|
|
15
|
-
import {
|
|
16
|
-
|
|
17
|
-
|
|
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';
|
|
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';
|
|
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-X3LM4KRW.js';
|
|
12
|
+
export { ConnectedAssistantDock, redlineStats, textToArtifact, toRedlineMarkdown, useConnectedAiTask, useConnectedChat, useSemanticSearch, useWorkspaceDocs } from '../chunk-DHTBHALC.js';
|
|
13
|
+
import { useConnectedWorkspaceRole, ConnectedWorkflowLauncher, useConnectedWorkflowScopeSource, ConnectedWorkflowDocumentsField, ConnectedNativeDocxEditor, toWorkflowFieldDocument } from '../chunk-5XG7YD4V.js';
|
|
14
|
+
export { ConnectedWorkflowDocumentsField, ConnectedWorkflowLauncher, ConnectedWorkflowsTable, DEFAULT_CONNECTED_WORKFLOWS_TABLE_LABELS, toWorkflowFieldDocument, useConnectedAgentOptions, useConnectedWorkflowScopeSource, useConnectedWorkspaceRole, useDocxCommentTarget, useNativeDocxSupport } from '../chunk-5XG7YD4V.js';
|
|
15
|
+
import { ConnectedMarkdown, InternalDocLink, ExternalLink, DocumentWorkspaceContext } from '../chunk-NI3O4UZL.js';
|
|
16
|
+
export { ConnectedDocumentToolsProvider, ConnectedMarkdown, DocumentChip, DocumentWorkspaceContext, ExternalLink, InternalDocLink, MailChip, MermaidDiagram, WorkspaceDocumentReference, useDocumentViewerSupport, useDocumentWorkspace, useViewerDraftDocument, useViewerIsDetached, useViewerPassageCitation, useViewerStreamingDocument } from '../chunk-NI3O4UZL.js';
|
|
17
|
+
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-L4Q7FWBQ.js';
|
|
21
18
|
import { ViewToggle, DocumentViewToggle } from '../chunk-JJA6GQKH.js';
|
|
22
19
|
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';
|
|
27
20
|
import { SignatureCertificate, SignDocumentDialog } from '../chunk-PQU6LE7U.js';
|
|
28
21
|
import '../chunk-6HKLTYNN.js';
|
|
29
22
|
import { SettingsSection, SettingsCard, SettingsActionRow, SettingsRow, SettingsDangerZone, SettingsPanel, SettingsDisclosure } from '../chunk-MZA7GMOH.js';
|
|
@@ -31,40 +24,37 @@ import '../chunk-MTSKK3BN.js';
|
|
|
31
24
|
import '../chunk-LU23I2HS.js';
|
|
32
25
|
import { FactSourcesPanel, FactPassageItem } from '../chunk-HFZ45FD3.js';
|
|
33
26
|
import '../chunk-IA5BYEO7.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-
|
|
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-L2MMIC3S.js';
|
|
35
28
|
import { MemberAvatarStack } from '../chunk-FUPAGAZB.js';
|
|
36
29
|
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';
|
|
37
|
-
import { SearchHit } from '../chunk-
|
|
30
|
+
import { SearchHit } from '../chunk-TNWJPTDG.js';
|
|
38
31
|
import { UsageMeter } from '../chunk-66TA5IBN.js';
|
|
39
|
-
import { DataTable, PageHeader, MetricCard } from '../chunk-
|
|
32
|
+
import { DataTable, PageHeader, MetricCard } from '../chunk-WLWY43FR.js';
|
|
40
33
|
import { ThemeEditor } from '../chunk-5ZBXFHZW.js';
|
|
41
34
|
import { TimelineZoomControl } from '../chunk-4EZVCGRL.js';
|
|
42
35
|
import '../chunk-UJE32SST.js';
|
|
43
36
|
import '../chunk-NHZK64TQ.js';
|
|
44
37
|
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';
|
|
45
38
|
import '../chunk-NBV56SGU.js';
|
|
46
|
-
import { DmThreadHeader, DmInviteChip } from '../chunk-2S3LT5KE.js';
|
|
47
39
|
import { ErrorBoundary } from '../chunk-EQ3WRY2N.js';
|
|
48
40
|
import { LabelMultiSelectView } from '../chunk-JMQLTMJ7.js';
|
|
49
41
|
import { workspaceKindColor, WorkspaceIdentity, SidebarBadgeRow, ActionCluster, prefetchChunk } from '../chunk-PXYP3DM5.js';
|
|
42
|
+
import { PassagePill, useCopyText } from '../chunk-MNLMPH45.js';
|
|
50
43
|
import '../chunk-K4BGOPGG.js';
|
|
51
|
-
import { useHost, ArbiHost } from '../chunk-T4P237N6.js';
|
|
52
44
|
import '../chunk-ZCOVDK2E.js';
|
|
53
45
|
import { isDefinitionsLabel, DOCX_MIME_TYPE, toDefinitionSource, definitionLabels } from '../chunk-IYUKJESY.js';
|
|
54
46
|
import { decodeWhitespaceEntities } from '../chunk-AF6RDAJF.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,
|
|
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, GENERATE_IMAGE_ID, IMAGE_ASPECT_AUTO, taskComposerToCreateRequest, taskComposerToUpdateRequest, composerToWorkflowUpdate, deriveAnnotationName, ANNOTATE_ID, recordWorkflowUse, renderWorkflowIcon, useWorkflowUsage, WEB_WORKFLOWS, DASHBOARD_PINNED, CUSTOM_TASK, REMIND_TASK, DASHBOARD_OPERATIONS, sortByRecentUse, openWorkflowLaunch, useWorkflowLaunchRequest, WorkflowRunStatus, ThreadStatusLine, WorkflowThreadStrip, WorkflowStepAction, WorkflowThreadStartedBy, TaskFlow, moveTargets, workflowToComposerValues, REMIND_TASK_ID, CUSTOM_TASK_ID, taskToComposerValues, TaskComposer, AUTOMATION_EVENTS, TaskPlan, TaskStartDialog, ThreadLauncher, NewThreadDialog, 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-5VSMJ674.js';
|
|
56
48
|
import { MultiSelect } from '../chunk-CQCC7LE7.js';
|
|
57
|
-
import { PersonPill, documentScopeLabels, matchWorkflowScope } from '../chunk-
|
|
58
|
-
import { SectionLabel } from '../chunk-
|
|
49
|
+
import { PersonPill, documentScopeLabels, matchWorkflowScope } from '../chunk-SLGRQMHW.js';
|
|
50
|
+
import { SectionLabel } from '../chunk-OYKITGTK.js';
|
|
59
51
|
import { TriStateFilterMenu } from '../chunk-G4GLDQLY.js';
|
|
60
52
|
import '../chunk-M4S75AEJ.js';
|
|
61
53
|
import '../chunk-5LXQPP2K.js';
|
|
62
54
|
import { SelectionBar, SelectionBarAction } from '../chunk-NUNKSZKU.js';
|
|
63
55
|
import '../chunk-RLWIUUQ5.js';
|
|
64
56
|
import { FilterInput } from '../chunk-YU2KUMGE.js';
|
|
65
|
-
import '../chunk-
|
|
66
|
-
import { TabHeader } from '../chunk-ABEKUV6L.js';
|
|
67
|
-
import { EmptyState } from '../chunk-P6GHJSLR.js';
|
|
57
|
+
import '../chunk-CMTAOVUX.js';
|
|
68
58
|
import { GridView } from '../chunk-7F5Z4K5W.js';
|
|
69
59
|
import { StreamedArtifactFrame } from '../chunk-LOJVUGBJ.js';
|
|
70
60
|
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';
|
|
@@ -72,31 +62,41 @@ import { PasswordStrengthInput } from '../chunk-P6OLZGQA.js';
|
|
|
72
62
|
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';
|
|
73
63
|
import { detectTimeZone, utcToDate, formatPlainDate, formatInZone, safeZone, todayInZone, addDays, listTimeZones, wallToUtc } from '../chunk-OJIX5NBN.js';
|
|
74
64
|
import { DocumentPicker } from '../chunk-WNDIVNPT.js';
|
|
75
|
-
import {
|
|
76
|
-
|
|
77
|
-
import {
|
|
65
|
+
import { useTranscriptRuns, TranscriptEntry, ThreadCallLogCard, RecordingCard, useMeetingThreadMessages, threadTranscriptRuns, useProvisionalSpeakers, TranscriptRunsContext, ProvisionalSpeakers, CallConversationEmpty } from '../chunk-EPNJOP2M.js';
|
|
66
|
+
export { useMeetingThreadMessages } from '../chunk-EPNJOP2M.js';
|
|
67
|
+
import { parseCallLogDetail } from '../chunk-S3YRRD54.js';
|
|
68
|
+
import { useDocumentFilter, useConnectedTags, useConnectedDocuments, useConnectedConversations, useListedDocuments, listedDocuments } from '../chunk-IYKGI2DQ.js';
|
|
69
|
+
export { isListedDocument, useConnectedConversations, useConnectedDocuments, useConnectedTags, useDocumentFilter, useListedDocuments } from '../chunk-IYKGI2DQ.js';
|
|
70
|
+
import { useConnectedWorkspace, useConnection, useOptionalConnection, ConnectionProvider } from '../chunk-XMDIXNLW.js';
|
|
71
|
+
export { SESSION_EXPIRED_MESSAGE, isAuthenticated, useConnectedWorkspace, useConnection } from '../chunk-XMDIXNLW.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-NBQNDHOW.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-JLJVEQFN.js';
|
|
78
78
|
import { workspaceDocIdFromHref } from '../chunk-DDCMLHXF.js';
|
|
79
79
|
import '../chunk-7XF5SFJ2.js';
|
|
80
|
-
import {
|
|
81
|
-
import { useMentionAutocomplete, stepStatesFromActivity, stepDocuments, splitDocRef, stepPhase, stepKindOf, STEP_KIND_ICONS, stepLevels, canAssign, assigneeName, runFieldsOf, initialRunInputs, workflowSteps, runThreadTitle, stepFields } from '../chunk-DV25UPJ7.js';
|
|
80
|
+
import { useMentionAutocomplete, stepStatesFromActivity, stepDocuments, splitDocRef, stepPhase, stepKindOf, STEP_KIND_ICONS, stepLevels, canAssign, assigneeName, runFieldsOf, initialRunInputs, workflowSteps, runThreadTitle, stepFields } from '../chunk-THNTNAYI.js';
|
|
82
81
|
import { mergeSkillWorkflows, composeWorkflowPrompt, isEmptyWorkflowScope, inputsFromContext, workflowsAccepting, promptFieldName, validateInputs, defaultInputs, buildLaunch } from '../chunk-TZGBRLPK.js';
|
|
83
82
|
import '../chunk-AUS3KBHJ.js';
|
|
84
|
-
import '../chunk-
|
|
83
|
+
import { fmtDate, initials } from '../chunk-5VYJP6XD.js';
|
|
85
84
|
import { useIsPhone, useMediaQuery } from '../chunk-SLSBJRWW.js';
|
|
86
85
|
import { useListKeyNav, MentionMenu } from '../chunk-GAGYAHYO.js';
|
|
87
|
-
import {
|
|
88
|
-
import {
|
|
89
|
-
import
|
|
90
|
-
|
|
86
|
+
import { ConversationFilter } from '../chunk-6AMCMKTF.js';
|
|
87
|
+
import { buildDeepLinkPath, buildDeepLinkUrl } from '../chunk-7Q5INDUS.js';
|
|
88
|
+
import '../chunk-NPLYHR2E.js';
|
|
89
|
+
import { useBlocksEnvironment, useOpenWorkflow, openDialog, closeDialog, useDialogProps, useRequestedSettingsSection, useIntentRequest, mailDraftRequest, useCalendarViewStore, conversationStartRequest } from '../chunk-TGVBLXLV.js';
|
|
90
|
+
export { requestCalendarComposer, requestCalendarEvent, useCalendarViewStore } from '../chunk-TGVBLXLV.js';
|
|
91
91
|
import { ConfirmDialog } from '../chunk-U4HWVCRN.js';
|
|
92
92
|
import { ModalHeader, ModalScaffold, ModalSection, ModalSectionTitle } from '../chunk-TX2ZICS7.js';
|
|
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, 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,
|
|
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, useCreateWork, useRunWorkflow, useStartTaskQuery, useCreateWorkflow, useUpdateConversation, useUpdateWorkflow, threadTabId, useCanEditShared, useActOnStep, 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 React9, { memo, useMemo, lazy, useRef, useEffect, useCallback, useState, forwardRef, useLayoutEffect, useImperativeHandle, createContext, useContext,
|
|
99
|
+
import React9, { memo, useMemo, lazy, useRef, useEffect, useCallback, useState, forwardRef, useLayoutEffect, useImperativeHandle, createContext, useContext, Suspense, useSyncExternalStore, Fragment as Fragment$1, useId } from 'react';
|
|
100
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';
|
|
@@ -391,25 +391,16 @@ function ConnectedWorkspaceActivity({
|
|
|
391
391
|
}
|
|
392
392
|
);
|
|
393
393
|
}
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
function set(notification) {
|
|
397
|
-
current = notification;
|
|
398
|
-
listeners.forEach((listener) => listener());
|
|
399
|
-
}
|
|
394
|
+
|
|
395
|
+
// src/connection/workspace-access/access-review.ts
|
|
400
396
|
function reviewAccessRequest(notification) {
|
|
401
|
-
|
|
397
|
+
openDialog("grantAccess", { notification });
|
|
402
398
|
}
|
|
403
399
|
function closeAccessRequestReview() {
|
|
404
|
-
|
|
405
|
-
}
|
|
406
|
-
function subscribe(listener) {
|
|
407
|
-
listeners.add(listener);
|
|
408
|
-
return () => listeners.delete(listener);
|
|
400
|
+
closeDialog("grantAccess");
|
|
409
401
|
}
|
|
410
|
-
var snapshot = () => current;
|
|
411
402
|
function useAccessRequestUnderReview() {
|
|
412
|
-
return
|
|
403
|
+
return useDialogProps("grantAccess")?.notification ?? null;
|
|
413
404
|
}
|
|
414
405
|
function resolveAttendeeUsers(attendees, known, me) {
|
|
415
406
|
const byId = new Map(known.map((u) => [u.external_id, u]));
|
|
@@ -530,12 +521,12 @@ async function updateEventWebinarRoles(arbi, url, roles, peers) {
|
|
|
530
521
|
const parsed = parseArbiCallUrl(url);
|
|
531
522
|
if (!parsed) return;
|
|
532
523
|
const call = await arbi.calls.get(parsed.callId);
|
|
533
|
-
const
|
|
524
|
+
const current = new Map((call.invitees ?? []).map((i) => [i.user_ext_id, i.role ?? "attendee"]));
|
|
534
525
|
const changed = Object.fromEntries(
|
|
535
|
-
Object.entries(roles).filter(([usr, role]) =>
|
|
526
|
+
Object.entries(roles).filter(([usr, role]) => current.has(usr) && current.get(usr) !== role)
|
|
536
527
|
);
|
|
537
528
|
if (Object.keys(changed).length) await arbi.calls.update(parsed.callId, { roles: changed });
|
|
538
|
-
const team = peers.filter((p) =>
|
|
529
|
+
const team = peers.filter((p) => current.has(p.external_id) && isTeam(roles[p.external_id]));
|
|
539
530
|
if (!team.length) return;
|
|
540
531
|
try {
|
|
541
532
|
await arbi.calls.createChat({ callExtId: parsed.callId, callKey: parsed.key, members: team });
|
|
@@ -1328,7 +1319,7 @@ function ConnectedNotificationCenter({
|
|
|
1328
1319
|
isLoading,
|
|
1329
1320
|
hasMore: rows.length === limit,
|
|
1330
1321
|
isLoadingMore: isFetching,
|
|
1331
|
-
onLoadMore: () => setLimit((
|
|
1322
|
+
onLoadMore: () => setLimit((current) => current + pageSize),
|
|
1332
1323
|
onDelete,
|
|
1333
1324
|
onOpen: open,
|
|
1334
1325
|
renderers: merged,
|
|
@@ -1594,11 +1585,11 @@ function ConnectedSkillsLibrary({
|
|
|
1594
1585
|
() => filterLibrarySkills(all, { query, source, type }),
|
|
1595
1586
|
[all, query, source, type]
|
|
1596
1587
|
);
|
|
1597
|
-
const
|
|
1598
|
-
const { data: currentText, isLoading: textLoading } = useSkillSource(
|
|
1588
|
+
const current = all.find((s) => s.slug === selected) ?? null;
|
|
1589
|
+
const { data: currentText, isLoading: textLoading } = useSkillSource(current?.docExtId);
|
|
1599
1590
|
useEffect(() => {
|
|
1600
|
-
if (selected && !
|
|
1601
|
-
}, [selected,
|
|
1591
|
+
if (selected && !current && all.length > 0) setSelected(null);
|
|
1592
|
+
}, [selected, current, all.length]);
|
|
1602
1593
|
const count2 = (s) => all.filter((x) => x.source === s).length;
|
|
1603
1594
|
const sourceOptions = [
|
|
1604
1595
|
{ id: "all", label: "All", count: all.length },
|
|
@@ -1686,7 +1677,7 @@ function ConnectedSkillsLibrary({
|
|
|
1686
1677
|
notify17(errorText(error, "Could not export the skill"), "error");
|
|
1687
1678
|
}
|
|
1688
1679
|
};
|
|
1689
|
-
const rightVisible = mode !== "detail" ||
|
|
1680
|
+
const rightVisible = mode !== "detail" || current !== null;
|
|
1690
1681
|
const backToList = () => {
|
|
1691
1682
|
setMode("detail");
|
|
1692
1683
|
setSelected(null);
|
|
@@ -1833,11 +1824,11 @@ function ConnectedSkillsLibrary({
|
|
|
1833
1824
|
mode === "edit" && /* @__PURE__ */ jsx(
|
|
1834
1825
|
SkillEditor,
|
|
1835
1826
|
{
|
|
1836
|
-
skill:
|
|
1837
|
-
text:
|
|
1827
|
+
skill: current?.source === "mine" ? current : null,
|
|
1828
|
+
text: current?.source === "mine" ? currentText : void 0,
|
|
1838
1829
|
renderEditor,
|
|
1839
1830
|
onSave: async (slug, markdown, isEditing) => {
|
|
1840
|
-
await saveAs(slug, markdown, isEditing && !!
|
|
1831
|
+
await saveAs(slug, markdown, isEditing && !!current?.isShared);
|
|
1841
1832
|
notify17(isEditing ? `${slug} saved` : `${slug} added`, "success");
|
|
1842
1833
|
done(slug);
|
|
1843
1834
|
},
|
|
@@ -1846,25 +1837,25 @@ function ConnectedSkillsLibrary({
|
|
|
1846
1837
|
}
|
|
1847
1838
|
),
|
|
1848
1839
|
mode === "add" && /* @__PURE__ */ jsx(ConnectedSkillUpload, { onDone: done }),
|
|
1849
|
-
mode === "detail" &&
|
|
1840
|
+
mode === "detail" && current && /* @__PURE__ */ jsx(
|
|
1850
1841
|
SkillLibraryDetail,
|
|
1851
1842
|
{
|
|
1852
|
-
skill:
|
|
1843
|
+
skill: current,
|
|
1853
1844
|
icon,
|
|
1854
|
-
instructions:
|
|
1855
|
-
isLoading: !!
|
|
1845
|
+
instructions: current.docExtId ? currentText ? parseSkillFrontmatter(currentText, SKILL_MAIN_FILENAME).content : "" : current.workflow.run.kind === "prompt" ? current.workflow.run.promptTemplate : "",
|
|
1846
|
+
isLoading: !!current.docExtId && textLoading,
|
|
1856
1847
|
actions: {
|
|
1857
|
-
onRun: () => onRun(
|
|
1858
|
-
onCopy: () => void makeCopy(
|
|
1848
|
+
onRun: () => onRun(current.slug),
|
|
1849
|
+
onCopy: () => void makeCopy(current),
|
|
1859
1850
|
onEdit: () => setMode("edit"),
|
|
1860
|
-
onToggleShare: () => void toggleShare(
|
|
1861
|
-
onExport: () => void exportFile(
|
|
1862
|
-
onDelete: () => void remove(
|
|
1851
|
+
onToggleShare: () => void toggleShare(current),
|
|
1852
|
+
onExport: () => void exportFile(current),
|
|
1853
|
+
onDelete: () => void remove(current),
|
|
1863
1854
|
isBusy
|
|
1864
1855
|
}
|
|
1865
1856
|
}
|
|
1866
1857
|
),
|
|
1867
|
-
mode === "detail" && !
|
|
1858
|
+
mode === "detail" && !current && /* @__PURE__ */ jsx("div", { className: "flex flex-1 items-center justify-center p-8 text-center text-sm text-muted-foreground max-md:hidden", children: "Pick a skill to read it, run it or make a copy." })
|
|
1868
1859
|
]
|
|
1869
1860
|
}
|
|
1870
1861
|
)
|
|
@@ -3343,7 +3334,7 @@ function ConnectedTagTable({
|
|
|
3343
3334
|
};
|
|
3344
3335
|
}, [schema.data, rows.data, filter, linksLimit, allTags]);
|
|
3345
3336
|
const fail = (fallback) => (e) => notify17(refusalReason(e, fallback), "error");
|
|
3346
|
-
const
|
|
3337
|
+
const snapshot2 = (data) => {
|
|
3347
3338
|
const title = exportTitle ?? tagKindTitle(kind, { plural: true });
|
|
3348
3339
|
const bytes = tagTableDocx(data, {
|
|
3349
3340
|
title,
|
|
@@ -3376,7 +3367,7 @@ function ConnectedTagTable({
|
|
|
3376
3367
|
}).catch(fail(`Could not add "${name}"`)),
|
|
3377
3368
|
onExport: onExported && table ? async () => {
|
|
3378
3369
|
try {
|
|
3379
|
-
const { blob, name } =
|
|
3370
|
+
const { blob, name } = snapshot2(table);
|
|
3380
3371
|
const uploaded = await arbi.documents.uploadFile(blob, name);
|
|
3381
3372
|
const id = uploaded?.doc_ext_ids?.[0];
|
|
3382
3373
|
if (id) onExported(id);
|
|
@@ -3385,7 +3376,7 @@ function ConnectedTagTable({
|
|
|
3385
3376
|
}
|
|
3386
3377
|
} : void 0,
|
|
3387
3378
|
onDownload: downloadable && table ? () => {
|
|
3388
|
-
const { blob, name } =
|
|
3379
|
+
const { blob, name } = snapshot2(table);
|
|
3389
3380
|
downloadBlob(blob, name);
|
|
3390
3381
|
} : void 0
|
|
3391
3382
|
}
|
|
@@ -3713,7 +3704,7 @@ var FileTile = memo(function FileTile2({
|
|
|
3713
3704
|
onDelete,
|
|
3714
3705
|
actions = NO_ACTIONS
|
|
3715
3706
|
}) {
|
|
3716
|
-
const { attributes, listeners:
|
|
3707
|
+
const { attributes, listeners: listeners2, setNodeRef } = useDraggable({
|
|
3717
3708
|
id: `doc:${doc.external_id}`,
|
|
3718
3709
|
data: { type: "doc", docId: doc.external_id }
|
|
3719
3710
|
});
|
|
@@ -3816,7 +3807,7 @@ var FileTile = memo(function FileTile2({
|
|
|
3816
3807
|
tooltip,
|
|
3817
3808
|
menuItems,
|
|
3818
3809
|
rootRef: setNodeRef,
|
|
3819
|
-
rootProps: { ...
|
|
3810
|
+
rootProps: { ...listeners2, ...attributes },
|
|
3820
3811
|
onOpen: () => onOpen(doc),
|
|
3821
3812
|
onSelect: (e) => onSelect(doc, e),
|
|
3822
3813
|
onToggle: (e) => onToggle(doc, e),
|
|
@@ -4530,8 +4521,8 @@ function ConnectedTagForm({
|
|
|
4530
4521
|
const parentOptions = useMemo(() => {
|
|
4531
4522
|
if (!availableTags) return [];
|
|
4532
4523
|
const eligible = getEligibleParentTags(availableTags, tag?.external_id);
|
|
4533
|
-
const
|
|
4534
|
-
return
|
|
4524
|
+
const current = tag?.parent_ext_id ? availableTags.find((t) => t.external_id === tag.parent_ext_id) : void 0;
|
|
4525
|
+
return current && !eligible.some((t) => t.external_id === current.external_id) ? [current, ...eligible] : eligible;
|
|
4535
4526
|
}, [availableTags, tag?.external_id, tag?.parent_ext_id]);
|
|
4536
4527
|
const hasChildren = Boolean(
|
|
4537
4528
|
availableTags && tag && !canTagHaveParent(availableTags, tag.external_id)
|
|
@@ -4858,11 +4849,11 @@ function TagFilterChips({
|
|
|
4858
4849
|
combination,
|
|
4859
4850
|
onChange
|
|
4860
4851
|
}) {
|
|
4861
|
-
const
|
|
4862
|
-
if (!
|
|
4852
|
+
const set = [...combination].filter(([, state]) => state !== null);
|
|
4853
|
+
if (!set.length) return null;
|
|
4863
4854
|
const name = (id) => tags.find((t) => t.external_id === id)?.name ?? id;
|
|
4864
4855
|
return /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-1.5", "data-testid": "tags-filter-chips", children: [
|
|
4865
|
-
|
|
4856
|
+
set.map(([id, state]) => /* @__PURE__ */ jsx(
|
|
4866
4857
|
FilterChip,
|
|
4867
4858
|
{
|
|
4868
4859
|
label: name(id),
|
|
@@ -4896,10 +4887,10 @@ function TagPlacement({ tag, tags, onChange }) {
|
|
|
4896
4887
|
const nests = !isFlatKind(tag.kind);
|
|
4897
4888
|
const sameKind = tags.filter((t) => t.kind === tag.kind);
|
|
4898
4889
|
const parents = getEligibleParentTags(sameKind, tag.external_id);
|
|
4899
|
-
const
|
|
4900
|
-
const options2 =
|
|
4890
|
+
const current = tag.parent_ext_id ? tags.find((t) => t.external_id === tag.parent_ext_id) : void 0;
|
|
4891
|
+
const options2 = current && !parents.includes(current) ? [current, ...parents] : parents;
|
|
4901
4892
|
const canNest = canTagHaveParent([...tags], tag.external_id);
|
|
4902
|
-
const placement =
|
|
4893
|
+
const placement = current ? `Under ${current.name}` : "Top level";
|
|
4903
4894
|
return /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-2", "data-testid": "tags-placement", children: [
|
|
4904
4895
|
/* @__PURE__ */ jsx(
|
|
4905
4896
|
VisibilityToggle,
|
|
@@ -6727,14 +6718,14 @@ function useFactsPageView() {
|
|
|
6727
6718
|
[view, rowHeight, labelWidth, zoom, filterText, searchFields, filters, gridState]
|
|
6728
6719
|
);
|
|
6729
6720
|
}
|
|
6730
|
-
var useExportStore = create()((
|
|
6721
|
+
var useExportStore = create()((set) => ({
|
|
6731
6722
|
columnsMode: "visible",
|
|
6732
|
-
setColumnsMode: (columnsMode) =>
|
|
6723
|
+
setColumnsMode: (columnsMode) => set({ columnsMode }),
|
|
6733
6724
|
activeTransfers: [],
|
|
6734
|
-
trackTransfer: (transferId) =>
|
|
6725
|
+
trackTransfer: (transferId) => set(
|
|
6735
6726
|
(state) => state.activeTransfers.includes(transferId) ? state : { activeTransfers: [...state.activeTransfers, transferId] }
|
|
6736
6727
|
),
|
|
6737
|
-
untrackTransfer: (transferId) =>
|
|
6728
|
+
untrackTransfer: (transferId) => set((state) => ({ activeTransfers: state.activeTransfers.filter((id) => id !== transferId) }))
|
|
6738
6729
|
}));
|
|
6739
6730
|
function plural(n, one, many = `${one}s`) {
|
|
6740
6731
|
return `${n} ${n === 1 ? one : many}`;
|
|
@@ -7124,7 +7115,7 @@ function ConnectedExportPanel({
|
|
|
7124
7115
|
})),
|
|
7125
7116
|
selected: kinds,
|
|
7126
7117
|
onToggle: (kind, checked) => setKinds(
|
|
7127
|
-
(
|
|
7118
|
+
(current) => checked ? ALL_KINDS.filter((k) => k === kind || current.includes(k)) : current.filter((k) => k !== kind)
|
|
7128
7119
|
)
|
|
7129
7120
|
}
|
|
7130
7121
|
),
|
|
@@ -8000,10 +7991,11 @@ function ConnectedSessionsRow({
|
|
|
8000
7991
|
function ConnectedLogoutDialog({
|
|
8001
7992
|
open,
|
|
8002
7993
|
onClose,
|
|
8003
|
-
canLogoutAll
|
|
7994
|
+
canLogoutAll,
|
|
8004
7995
|
confirmSignOut,
|
|
8005
7996
|
renderSessionIcon = renderSessionStatusIcon
|
|
8006
7997
|
}) {
|
|
7998
|
+
const user = useArbiSession().user;
|
|
8007
7999
|
const sessions = useSessions({ enabled: open });
|
|
8008
8000
|
const signOut = useSignOut();
|
|
8009
8001
|
const isOnline = useIsOnline();
|
|
@@ -8019,7 +8011,7 @@ function ConnectedLogoutDialog({
|
|
|
8019
8011
|
onClose,
|
|
8020
8012
|
onLogoutThis: () => void run(false),
|
|
8021
8013
|
onLogoutAll: () => void run(true),
|
|
8022
|
-
canLogoutAll,
|
|
8014
|
+
canLogoutAll: canLogoutAll ?? !(user && isAgent(user)),
|
|
8023
8015
|
isOnline,
|
|
8024
8016
|
sessions: toLogoutSessionViews(sessions.data ?? []),
|
|
8025
8017
|
renderSessionIcon
|
|
@@ -8700,7 +8692,7 @@ function ConnectedPremiumModels() {
|
|
|
8700
8692
|
};
|
|
8701
8693
|
return [reference, ...premiumModels];
|
|
8702
8694
|
}, [available, premiumModels]);
|
|
8703
|
-
const
|
|
8695
|
+
const current = premiumModel ?? available?.premium_default ?? "";
|
|
8704
8696
|
const save = useCallback(
|
|
8705
8697
|
(model) => update.mutate(
|
|
8706
8698
|
{ premium_model: model },
|
|
@@ -8710,15 +8702,15 @@ function ConnectedPremiumModels() {
|
|
|
8710
8702
|
),
|
|
8711
8703
|
[update, notify17]
|
|
8712
8704
|
);
|
|
8713
|
-
const currentRef = useRef(
|
|
8714
|
-
currentRef.current =
|
|
8705
|
+
const currentRef = useRef(current);
|
|
8706
|
+
currentRef.current = current;
|
|
8715
8707
|
const [selected, setSelected] = useState([]);
|
|
8716
8708
|
useEffect(() => {
|
|
8717
|
-
const match = premiumModels.filter((m) => m.model_name ===
|
|
8709
|
+
const match = premiumModels.filter((m) => m.model_name === current);
|
|
8718
8710
|
setSelected(
|
|
8719
8711
|
(prev) => prev.length === match.length && prev[0]?.model_name === match[0]?.model_name ? prev : match
|
|
8720
8712
|
);
|
|
8721
|
-
}, [
|
|
8713
|
+
}, [current, premiumModels]);
|
|
8722
8714
|
const onSelectionChange = useCallback(
|
|
8723
8715
|
(items) => {
|
|
8724
8716
|
const picked = items.filter((m) => !isStandard(m));
|
|
@@ -10267,7 +10259,7 @@ function useConnectedWorkspaceSettings(workspaceId, { onLeft } = {}) {
|
|
|
10267
10259
|
};
|
|
10268
10260
|
const share = async (emails, memberRole = "collaborator") => {
|
|
10269
10261
|
if (!workspace) return "error";
|
|
10270
|
-
const
|
|
10262
|
+
const current = new Set(members.map((m) => m.user.email.toLowerCase()));
|
|
10271
10263
|
try {
|
|
10272
10264
|
const added = new Set(
|
|
10273
10265
|
(await add.mutateAsync({ emails, role: memberRole }) ?? []).map(
|
|
@@ -10276,8 +10268,8 @@ function useConnectedWorkspaceSettings(workspaceId, { onLeft } = {}) {
|
|
|
10276
10268
|
);
|
|
10277
10269
|
const failed = emails.filter((email) => !added.has(email.toLowerCase()));
|
|
10278
10270
|
if (failed.length === 0) return "added";
|
|
10279
|
-
const already = failed.filter((email) =>
|
|
10280
|
-
const unknown = failed.filter((email) => !
|
|
10271
|
+
const already = failed.filter((email) => current.has(email.toLowerCase()));
|
|
10272
|
+
const unknown = failed.filter((email) => !current.has(email.toLowerCase()));
|
|
10281
10273
|
if (added.size > 0) {
|
|
10282
10274
|
notify17(`Added ${added.size} ${added.size === 1 ? "member" : "members"}`, "success");
|
|
10283
10275
|
}
|
|
@@ -11419,18 +11411,18 @@ function ConnectedSharePointAdminConsentPage({
|
|
|
11419
11411
|
] }) });
|
|
11420
11412
|
}
|
|
11421
11413
|
var focus = null;
|
|
11422
|
-
var
|
|
11414
|
+
var listeners = /* @__PURE__ */ new Set();
|
|
11423
11415
|
function requestProjectBillingFocus(next) {
|
|
11424
11416
|
focus = next;
|
|
11425
|
-
|
|
11417
|
+
listeners.forEach((listener) => listener());
|
|
11426
11418
|
}
|
|
11427
|
-
function
|
|
11428
|
-
|
|
11429
|
-
return () =>
|
|
11419
|
+
function subscribe(listener) {
|
|
11420
|
+
listeners.add(listener);
|
|
11421
|
+
return () => listeners.delete(listener);
|
|
11430
11422
|
}
|
|
11431
|
-
var
|
|
11423
|
+
var snapshot = () => focus;
|
|
11432
11424
|
function useProjectBillingFocus() {
|
|
11433
|
-
return useSyncExternalStore(
|
|
11425
|
+
return useSyncExternalStore(subscribe, snapshot, snapshot);
|
|
11434
11426
|
}
|
|
11435
11427
|
function BillingProjectEntity({
|
|
11436
11428
|
subscription = "none",
|
|
@@ -11633,21 +11625,21 @@ function proCard(selected, isAnnual, prices) {
|
|
|
11633
11625
|
const currency = prices.monthly?.currency ?? prices.annual?.currency ?? "gbp";
|
|
11634
11626
|
const monthly = packPrice(prices.monthly, packs);
|
|
11635
11627
|
const annual = packPrice(prices.annual, packs);
|
|
11636
|
-
const
|
|
11637
|
-
const effectiveMonthly =
|
|
11628
|
+
const current = isAnnual ? annual : monthly;
|
|
11629
|
+
const effectiveMonthly = current ? isAnnual ? current.amount_ex_vat / 12 : current.amount_ex_vat : null;
|
|
11638
11630
|
return {
|
|
11639
11631
|
id: packs,
|
|
11640
11632
|
name: planNameForPacks(packs),
|
|
11641
11633
|
isSelected: selected === "pro",
|
|
11642
|
-
price:
|
|
11634
|
+
price: current && effectiveMonthly != null ? {
|
|
11643
11635
|
annual: isAnnual,
|
|
11644
|
-
yearlyStrike: isAnnual && monthly && monthly.amount_ex_vat * 12 >
|
|
11645
|
-
yearlyTotal: isAnnual ? formatMoney(
|
|
11636
|
+
yearlyStrike: isAnnual && monthly && monthly.amount_ex_vat * 12 > current.amount_ex_vat ? formatMoney(monthly.amount_ex_vat * 12, currency) : void 0,
|
|
11637
|
+
yearlyTotal: isAnnual ? formatMoney(current.amount_ex_vat, currency) : void 0,
|
|
11646
11638
|
intervalLabel: isAnnual ? "/yr + VAT" : "/mo",
|
|
11647
11639
|
monthly: formatMoney(Math.round(effectiveMonthly), currency),
|
|
11648
11640
|
taxLabel: "+ VAT",
|
|
11649
11641
|
// The inclusive figure for a UK customer, right under the headline.
|
|
11650
|
-
note: `${formatMoney(
|
|
11642
|
+
note: `${formatMoney(current.amount, currency)}${isAnnual ? "/yr" : "/mo"} incl. UK VAT`
|
|
11651
11643
|
} : void 0,
|
|
11652
11644
|
features: [
|
|
11653
11645
|
`${formatGbp(PRO_AI_GBP)} of AI usage / month`,
|
|
@@ -11736,7 +11728,7 @@ function BlockStepper({
|
|
|
11736
11728
|
onChange,
|
|
11737
11729
|
testId
|
|
11738
11730
|
}) {
|
|
11739
|
-
const
|
|
11731
|
+
const set = (n) => onChange(Math.max(0, Math.min(MAX_CHECKOUT_BLOCKS, n)));
|
|
11740
11732
|
return /* @__PURE__ */ jsxs(
|
|
11741
11733
|
"div",
|
|
11742
11734
|
{
|
|
@@ -11756,7 +11748,7 @@ function BlockStepper({
|
|
|
11756
11748
|
variant: "outline",
|
|
11757
11749
|
className: "size-8",
|
|
11758
11750
|
"aria-label": `Fewer: ${label}`,
|
|
11759
|
-
onClick: () =>
|
|
11751
|
+
onClick: () => set(value - 1),
|
|
11760
11752
|
disabled: value <= 0,
|
|
11761
11753
|
"data-testid": `${testId}-decrement`,
|
|
11762
11754
|
children: /* @__PURE__ */ jsx(Minus, { className: "size-4" })
|
|
@@ -11779,7 +11771,7 @@ function BlockStepper({
|
|
|
11779
11771
|
variant: "outline",
|
|
11780
11772
|
className: "size-8",
|
|
11781
11773
|
"aria-label": `More: ${label}`,
|
|
11782
|
-
onClick: () =>
|
|
11774
|
+
onClick: () => set(value + 1),
|
|
11783
11775
|
disabled: value >= MAX_CHECKOUT_BLOCKS,
|
|
11784
11776
|
"data-testid": `${testId}-increment`,
|
|
11785
11777
|
children: /* @__PURE__ */ jsx(Plus, { className: "size-4" })
|
|
@@ -13017,7 +13009,7 @@ function ResourceMeter({
|
|
|
13017
13009
|
const periodEnd = formatPeriodEnd(addons.period_end ?? project.current_period_end);
|
|
13018
13010
|
const from = periodEnd ?? "your next renewal";
|
|
13019
13011
|
const fromShort = formatShortDate(addons.period_end ?? project.current_period_end) ?? "renewal";
|
|
13020
|
-
const { min, current
|
|
13012
|
+
const { min, current, next } = reduceBounds(kind, addons);
|
|
13021
13013
|
const fmt = (n) => isAi ? formatGbp(n) : gb2(n);
|
|
13022
13014
|
const used = isAi ? addons.ai_used_gbp : addons.storage_used_gb;
|
|
13023
13015
|
const allowance = isAi ? addons.ai_allowance_gbp : addons.storage_allowance_gb;
|
|
@@ -13033,7 +13025,7 @@ function ResourceMeter({
|
|
|
13033
13025
|
const undo = () => update.mutate(
|
|
13034
13026
|
{
|
|
13035
13027
|
projectExtId: project.external_id,
|
|
13036
|
-
body: nextPeriodBody(kind,
|
|
13028
|
+
body: nextPeriodBody(kind, current)
|
|
13037
13029
|
},
|
|
13038
13030
|
{
|
|
13039
13031
|
onSuccess: () => notify.success("Kept"),
|
|
@@ -13060,7 +13052,7 @@ function ResourceMeter({
|
|
|
13060
13052
|
PendingChange,
|
|
13061
13053
|
{
|
|
13062
13054
|
testId: `usage-meter-${slug}-next`,
|
|
13063
|
-
onUndo: next <
|
|
13055
|
+
onUndo: next < current ? undo : void 0,
|
|
13064
13056
|
isBusy: update.isPending,
|
|
13065
13057
|
undoTestId: `undo-reduce-${slug}-button`,
|
|
13066
13058
|
children: [
|
|
@@ -14713,7 +14705,7 @@ function useConnectedWorkspaceList({
|
|
|
14713
14705
|
};
|
|
14714
14706
|
}
|
|
14715
14707
|
var WorkspaceTableView = lazy(
|
|
14716
|
-
() => import('../WorkspaceTableView-
|
|
14708
|
+
() => import('../WorkspaceTableView-NWRVACJL.js').then((m) => ({ default: m.WorkspaceTableView }))
|
|
14717
14709
|
);
|
|
14718
14710
|
var WORKSPACES_TAB_ID = "workspaces";
|
|
14719
14711
|
var defaultRenderMember2 = (user, size) => {
|
|
@@ -15285,7 +15277,7 @@ function ProjectDetailsForm({
|
|
|
15285
15277
|
budget: project.budget ? String(project.budget.amount / 100) : "",
|
|
15286
15278
|
...Object.fromEntries(hostFields.map((f) => [`host:${f.key}`, hostText(project, f.key)]))
|
|
15287
15279
|
}));
|
|
15288
|
-
const
|
|
15280
|
+
const set = (key) => (e) => setForm((f) => ({ ...f, [key]: e.target.value }));
|
|
15289
15281
|
const save = async () => {
|
|
15290
15282
|
const budget = Number(form.budget);
|
|
15291
15283
|
const shown = (f) => fields.includes(f);
|
|
@@ -15315,7 +15307,7 @@ function ProjectDetailsForm({
|
|
|
15315
15307
|
{
|
|
15316
15308
|
id: `${testId}-${key}`,
|
|
15317
15309
|
value: form[key],
|
|
15318
|
-
onChange:
|
|
15310
|
+
onChange: set(key),
|
|
15319
15311
|
placeholder,
|
|
15320
15312
|
"data-testid": `${testId}-field-${key.replace(/^host:/, "")}`
|
|
15321
15313
|
}
|
|
@@ -15344,7 +15336,7 @@ function ProjectDetailsForm({
|
|
|
15344
15336
|
id: `${testId}-stage`,
|
|
15345
15337
|
className: select,
|
|
15346
15338
|
value: form.stage,
|
|
15347
|
-
onChange:
|
|
15339
|
+
onChange: set("stage"),
|
|
15348
15340
|
"data-testid": `${testId}-field-stage`,
|
|
15349
15341
|
children: [
|
|
15350
15342
|
/* @__PURE__ */ jsx("option", { value: "", children: labels.notSet }),
|
|
@@ -15362,7 +15354,7 @@ function ProjectDetailsForm({
|
|
|
15362
15354
|
id: `${testId}-leadUser`,
|
|
15363
15355
|
className: select,
|
|
15364
15356
|
value: form.leadUser,
|
|
15365
|
-
onChange:
|
|
15357
|
+
onChange: set("leadUser"),
|
|
15366
15358
|
"data-testid": `${testId}-field-leadUser`,
|
|
15367
15359
|
children: [
|
|
15368
15360
|
/* @__PURE__ */ jsx("option", { value: "", children: labels.notSet }),
|
|
@@ -15387,20 +15379,20 @@ function ProjectDetailsForm({
|
|
|
15387
15379
|
}
|
|
15388
15380
|
var useFilesStore = create()(
|
|
15389
15381
|
persist(
|
|
15390
|
-
(
|
|
15382
|
+
(set) => ({
|
|
15391
15383
|
pendingFolders: {},
|
|
15392
|
-
addPendingFolder: (workspaceId, path) =>
|
|
15393
|
-
const
|
|
15394
|
-
if (
|
|
15395
|
-
return { pendingFolders: { ...state.pendingFolders, [workspaceId]: [...
|
|
15384
|
+
addPendingFolder: (workspaceId, path) => set((state) => {
|
|
15385
|
+
const current = state.pendingFolders[workspaceId] ?? [];
|
|
15386
|
+
if (current.includes(path)) return state;
|
|
15387
|
+
return { pendingFolders: { ...state.pendingFolders, [workspaceId]: [...current, path] } };
|
|
15396
15388
|
}),
|
|
15397
|
-
removePendingFolder: (workspaceId, path) =>
|
|
15398
|
-
const
|
|
15399
|
-
if (!
|
|
15389
|
+
removePendingFolder: (workspaceId, path) => set((state) => {
|
|
15390
|
+
const current = state.pendingFolders[workspaceId] ?? [];
|
|
15391
|
+
if (!current.includes(path)) return state;
|
|
15400
15392
|
return {
|
|
15401
15393
|
pendingFolders: {
|
|
15402
15394
|
...state.pendingFolders,
|
|
15403
|
-
[workspaceId]:
|
|
15395
|
+
[workspaceId]: current.filter((p) => p !== path)
|
|
15404
15396
|
}
|
|
15405
15397
|
};
|
|
15406
15398
|
})
|
|
@@ -15422,16 +15414,16 @@ var FILES_PREFS_KEY = "files";
|
|
|
15422
15414
|
var DEFAULT_VIEW_MODE = "explorer";
|
|
15423
15415
|
var useFilesPrefs = create()(
|
|
15424
15416
|
persist(
|
|
15425
|
-
(
|
|
15417
|
+
(set) => ({
|
|
15426
15418
|
documentFilters: {},
|
|
15427
|
-
setDocumentFilters: (documentFilters) =>
|
|
15419
|
+
setDocumentFilters: (documentFilters) => set({ documentFilters }),
|
|
15428
15420
|
viewModes: {},
|
|
15429
|
-
setViewMode: (viewMode, prefsKey = FILES_PREFS_KEY) =>
|
|
15421
|
+
setViewMode: (viewMode, prefsKey = FILES_PREFS_KEY) => set(
|
|
15430
15422
|
(state) => state.viewModes[prefsKey] === viewMode ? state : { viewModes: { ...state.viewModes, [prefsKey]: viewMode } }
|
|
15431
15423
|
),
|
|
15432
15424
|
// New users start at the compact minimum (more rows at once).
|
|
15433
15425
|
rowHeight: DOCUMENTS_ROW_HEIGHT_INITIAL,
|
|
15434
|
-
setRowHeight: (rowHeight) =>
|
|
15426
|
+
setRowHeight: (rowHeight) => set({ rowHeight })
|
|
15435
15427
|
}),
|
|
15436
15428
|
{
|
|
15437
15429
|
name: "arbi_files_prefs",
|
|
@@ -15458,12 +15450,12 @@ var useFilesPrefs = create()(
|
|
|
15458
15450
|
function filesViewMode(state, prefsKey = FILES_PREFS_KEY, defaultViewMode = DEFAULT_VIEW_MODE) {
|
|
15459
15451
|
return state.viewModes[prefsKey] ?? defaultViewMode;
|
|
15460
15452
|
}
|
|
15461
|
-
var useAiReviewStore = create()((
|
|
15453
|
+
var useAiReviewStore = create()((set) => ({
|
|
15462
15454
|
open: false,
|
|
15463
15455
|
run: null,
|
|
15464
|
-
setOpen: (open) =>
|
|
15465
|
-
setRun: (run) =>
|
|
15466
|
-
markFinished: (docIds) =>
|
|
15456
|
+
setOpen: (open) => set({ open }),
|
|
15457
|
+
setRun: (run) => set({ run }),
|
|
15458
|
+
markFinished: (docIds) => set((state) => {
|
|
15467
15459
|
const run = state.run;
|
|
15468
15460
|
if (!run) return state;
|
|
15469
15461
|
const finished = new Set(run.finishedDocIds ?? []);
|
|
@@ -15474,23 +15466,23 @@ var useAiReviewStore = create()((set2) => ({
|
|
|
15474
15466
|
}));
|
|
15475
15467
|
var useFilesGridStates = create()(
|
|
15476
15468
|
persist(
|
|
15477
|
-
(
|
|
15469
|
+
(set) => ({
|
|
15478
15470
|
gridStates: {},
|
|
15479
|
-
setGridState: (gridId, state) =>
|
|
15471
|
+
setGridState: (gridId, state) => set((current) => ({ gridStates: { ...current.gridStates, [gridId]: state } }))
|
|
15480
15472
|
}),
|
|
15481
15473
|
{ name: "arbi_files_grids", storage: createJSONStorage(() => localStorage) }
|
|
15482
15474
|
)
|
|
15483
15475
|
);
|
|
15484
|
-
var useFilesDialogs = create()((
|
|
15476
|
+
var useFilesDialogs = create()((set) => ({
|
|
15485
15477
|
move: null,
|
|
15486
|
-
openMove: (folder = null) =>
|
|
15487
|
-
closeMove: () =>
|
|
15478
|
+
openMove: (folder = null) => set({ move: { folder } }),
|
|
15479
|
+
closeMove: () => set({ move: null }),
|
|
15488
15480
|
bulkTagsOpen: false,
|
|
15489
|
-
setBulkTagsOpen: (bulkTagsOpen) =>
|
|
15481
|
+
setBulkTagsOpen: (bulkTagsOpen) => set({ bulkTagsOpen }),
|
|
15490
15482
|
deleteRequest: null,
|
|
15491
|
-
requestDelete: (deleteRequest) =>
|
|
15483
|
+
requestDelete: (deleteRequest) => set({ deleteRequest }),
|
|
15492
15484
|
exportOpen: false,
|
|
15493
|
-
setExportOpen: (exportOpen) =>
|
|
15485
|
+
setExportOpen: (exportOpen) => set({ exportOpen })
|
|
15494
15486
|
}));
|
|
15495
15487
|
var GRID_GAP = 12;
|
|
15496
15488
|
var SCROLL_PADDING_X = 32;
|
|
@@ -16645,7 +16637,7 @@ function RowsEditor({
|
|
|
16645
16637
|
inputType = "text",
|
|
16646
16638
|
testId
|
|
16647
16639
|
}) {
|
|
16648
|
-
const
|
|
16640
|
+
const set = (i, patch) => onChange(rows.map((r, j) => j === i ? { ...r, ...patch } : r));
|
|
16649
16641
|
return /* @__PURE__ */ jsxs("fieldset", { className: "grid gap-1", children: [
|
|
16650
16642
|
/* @__PURE__ */ jsx("legend", { className: "mb-1 text-sm font-medium text-foreground", children: label }),
|
|
16651
16643
|
rows.map((r, i) => /* @__PURE__ */ jsxs("div", { className: "flex gap-2", children: [
|
|
@@ -16657,7 +16649,7 @@ function RowsEditor({
|
|
|
16657
16649
|
placeholder,
|
|
16658
16650
|
"aria-label": `${label} ${i + 1}`,
|
|
16659
16651
|
value: r.value,
|
|
16660
|
-
onChange: (e) =>
|
|
16652
|
+
onChange: (e) => set(i, { value: e.target.value }),
|
|
16661
16653
|
"data-testid": `${testId}-${i}`
|
|
16662
16654
|
}
|
|
16663
16655
|
),
|
|
@@ -16668,7 +16660,7 @@ function RowsEditor({
|
|
|
16668
16660
|
placeholder: "Label",
|
|
16669
16661
|
"aria-label": `${label} ${i + 1} label`,
|
|
16670
16662
|
value: r.type,
|
|
16671
|
-
onChange: (e) =>
|
|
16663
|
+
onChange: (e) => set(i, { type: e.target.value })
|
|
16672
16664
|
}
|
|
16673
16665
|
),
|
|
16674
16666
|
/* @__PURE__ */ jsx(
|
|
@@ -16718,7 +16710,7 @@ function ConnectedContactCardForm({
|
|
|
16718
16710
|
const saving = create3.isPending || update.isPending || link.isPending;
|
|
16719
16711
|
const linked = !!contact?.email;
|
|
16720
16712
|
const locked = !!contact && !contact.card;
|
|
16721
|
-
const
|
|
16713
|
+
const set = (key, value) => setForm((f) => ({ ...f, [key]: value }));
|
|
16722
16714
|
const submit = () => {
|
|
16723
16715
|
const found = validateContactForm(form);
|
|
16724
16716
|
const email = inviteEmail(form);
|
|
@@ -16764,7 +16756,7 @@ function ConnectedContactCardForm({
|
|
|
16764
16756
|
] });
|
|
16765
16757
|
const field = (key, label) => /* @__PURE__ */ jsxs("div", { className: "grid gap-1", children: [
|
|
16766
16758
|
/* @__PURE__ */ jsx(Label, { htmlFor: `contact-${key}`, children: label }),
|
|
16767
|
-
/* @__PURE__ */ jsx(Input, { id: `contact-${key}`, value: form[key], onChange: (e) =>
|
|
16759
|
+
/* @__PURE__ */ jsx(Input, { id: `contact-${key}`, value: form[key], onChange: (e) => set(key, e.target.value) })
|
|
16768
16760
|
] });
|
|
16769
16761
|
const dateField = (key, label) => /* @__PURE__ */ jsxs("div", { className: "grid gap-1", children: [
|
|
16770
16762
|
/* @__PURE__ */ jsx(Label, { htmlFor: `contact-${key}`, children: label }),
|
|
@@ -16774,7 +16766,7 @@ function ConnectedContactCardForm({
|
|
|
16774
16766
|
id: `contact-${key}`,
|
|
16775
16767
|
placeholder: "YYYY-MM-DD or --MM-DD",
|
|
16776
16768
|
value: form[key],
|
|
16777
|
-
onChange: (e) =>
|
|
16769
|
+
onChange: (e) => set(key, e.target.value),
|
|
16778
16770
|
"aria-invalid": !!errors[key],
|
|
16779
16771
|
"data-testid": `contact-${key}`
|
|
16780
16772
|
}
|
|
@@ -16804,7 +16796,7 @@ function ConnectedContactCardForm({
|
|
|
16804
16796
|
id: "contact-name",
|
|
16805
16797
|
required: true,
|
|
16806
16798
|
value: form.name,
|
|
16807
|
-
onChange: (e) =>
|
|
16799
|
+
onChange: (e) => set("name", e.target.value),
|
|
16808
16800
|
"aria-invalid": !!errors.name,
|
|
16809
16801
|
"data-testid": "contact-name"
|
|
16810
16802
|
}
|
|
@@ -16816,7 +16808,7 @@ function ConnectedContactCardForm({
|
|
|
16816
16808
|
{
|
|
16817
16809
|
label: "E-mail",
|
|
16818
16810
|
rows: form.emails,
|
|
16819
|
-
onChange: (rows) =>
|
|
16811
|
+
onChange: (rows) => set("emails", rows),
|
|
16820
16812
|
placeholder: "name@example.com",
|
|
16821
16813
|
inputType: "email",
|
|
16822
16814
|
testId: "contact-email"
|
|
@@ -16843,7 +16835,7 @@ function ConnectedContactCardForm({
|
|
|
16843
16835
|
{
|
|
16844
16836
|
label: "Phone",
|
|
16845
16837
|
rows: form.phones,
|
|
16846
|
-
onChange: (rows) =>
|
|
16838
|
+
onChange: (rows) => set("phones", rows),
|
|
16847
16839
|
placeholder: "+1 555 0100",
|
|
16848
16840
|
inputType: "tel",
|
|
16849
16841
|
testId: "contact-phone"
|
|
@@ -16864,7 +16856,7 @@ function ConnectedContactCardForm({
|
|
|
16864
16856
|
{
|
|
16865
16857
|
label: "Address",
|
|
16866
16858
|
rows: form.addresses,
|
|
16867
|
-
onChange: (rows) =>
|
|
16859
|
+
onChange: (rows) => set("addresses", rows),
|
|
16868
16860
|
placeholder: "Street, city, country",
|
|
16869
16861
|
testId: "contact-address"
|
|
16870
16862
|
}
|
|
@@ -16877,7 +16869,7 @@ function ConnectedContactCardForm({
|
|
|
16877
16869
|
id: "contact-note",
|
|
16878
16870
|
rows: 3,
|
|
16879
16871
|
value: form.note,
|
|
16880
|
-
onChange: (e) =>
|
|
16872
|
+
onChange: (e) => set("note", e.target.value)
|
|
16881
16873
|
}
|
|
16882
16874
|
)
|
|
16883
16875
|
] }),
|
|
@@ -17940,7 +17932,7 @@ function MailRecipientInput({
|
|
|
17940
17932
|
return found.filter((p) => !chosen.has(p.email.toLowerCase())).slice(0, 8);
|
|
17941
17933
|
}, [found, head]);
|
|
17942
17934
|
const open = focused && !dismissed && token.length > 0 && options2.length > 0;
|
|
17943
|
-
const
|
|
17935
|
+
const current = Math.min(active, options2.length - 1);
|
|
17944
17936
|
const pick = (email) => {
|
|
17945
17937
|
onValueChange(`${head ? `${head.trimEnd()} ` : ""}${email}; `);
|
|
17946
17938
|
setActive(0);
|
|
@@ -17950,10 +17942,10 @@ function MailRecipientInput({
|
|
|
17950
17942
|
if (event.key === "ArrowDown" || event.key === "ArrowUp") {
|
|
17951
17943
|
event.preventDefault();
|
|
17952
17944
|
const step = event.key === "ArrowDown" ? 1 : -1;
|
|
17953
|
-
setActive((
|
|
17945
|
+
setActive((current + step + options2.length) % options2.length);
|
|
17954
17946
|
} else if (event.key === "Enter" && !event.ctrlKey && !event.metaKey) {
|
|
17955
17947
|
event.preventDefault();
|
|
17956
|
-
pick(options2[
|
|
17948
|
+
pick(options2[current].email);
|
|
17957
17949
|
} else if (event.key === "Escape") {
|
|
17958
17950
|
event.preventDefault();
|
|
17959
17951
|
setDismissed(true);
|
|
@@ -17970,7 +17962,7 @@ function MailRecipientInput({
|
|
|
17970
17962
|
"aria-autocomplete": "list",
|
|
17971
17963
|
"aria-expanded": open,
|
|
17972
17964
|
"aria-controls": open ? listId : void 0,
|
|
17973
|
-
"aria-activedescendant": open ? `${listId}-${
|
|
17965
|
+
"aria-activedescendant": open ? `${listId}-${current}` : void 0,
|
|
17974
17966
|
autoComplete: "off",
|
|
17975
17967
|
onChange: (e) => {
|
|
17976
17968
|
onValueChange(e.target.value);
|
|
@@ -17993,8 +17985,8 @@ function MailRecipientInput({
|
|
|
17993
17985
|
{
|
|
17994
17986
|
id: `${listId}-${i}`,
|
|
17995
17987
|
role: "option",
|
|
17996
|
-
"aria-selected": i ===
|
|
17997
|
-
className: `flex cursor-pointer items-baseline gap-2 px-3 py-1.5 ${i ===
|
|
17988
|
+
"aria-selected": i === current,
|
|
17989
|
+
className: `flex cursor-pointer items-baseline gap-2 px-3 py-1.5 ${i === current ? "bg-accent text-accent-foreground" : ""}`,
|
|
17998
17990
|
onMouseDown: (e) => e.preventDefault(),
|
|
17999
17991
|
onMouseEnter: () => setActive(i),
|
|
18000
17992
|
onClick: () => pick(p.email),
|
|
@@ -19675,7 +19667,7 @@ function SubscribeDialog({
|
|
|
19675
19667
|
onClose
|
|
19676
19668
|
}) {
|
|
19677
19669
|
const { notify: notify17 } = useBlocksEnvironment();
|
|
19678
|
-
const
|
|
19670
|
+
const subscribe2 = useSubscribeCalendar();
|
|
19679
19671
|
const [url, setUrl] = useState("");
|
|
19680
19672
|
const [name, setName] = useState("");
|
|
19681
19673
|
const [refresh, setRefresh] = useState(720);
|
|
@@ -19683,7 +19675,7 @@ function SubscribeDialog({
|
|
|
19683
19675
|
if (open) {
|
|
19684
19676
|
setUrl("");
|
|
19685
19677
|
setName("");
|
|
19686
|
-
|
|
19678
|
+
subscribe2.reset();
|
|
19687
19679
|
}
|
|
19688
19680
|
}, [open]);
|
|
19689
19681
|
const normalized = normalizeFeedUrl(url);
|
|
@@ -19699,7 +19691,7 @@ function SubscribeDialog({
|
|
|
19699
19691
|
onSubmit: (e) => {
|
|
19700
19692
|
e.preventDefault();
|
|
19701
19693
|
if (!normalized) return;
|
|
19702
|
-
|
|
19694
|
+
subscribe2.mutate(
|
|
19703
19695
|
{
|
|
19704
19696
|
url: normalized,
|
|
19705
19697
|
name: name.trim() || null,
|
|
@@ -19749,16 +19741,16 @@ function SubscribeDialog({
|
|
|
19749
19741
|
}
|
|
19750
19742
|
)
|
|
19751
19743
|
] }),
|
|
19752
|
-
|
|
19744
|
+
subscribe2.error && /* @__PURE__ */ jsx("p", { className: "text-sm text-destructive", role: "alert", children: subscribe2.error.message }),
|
|
19753
19745
|
/* @__PURE__ */ jsxs(DialogFooter, { children: [
|
|
19754
19746
|
/* @__PURE__ */ jsx(Button, { type: "button", variant: "ghost", onClick: onClose, children: "Cancel" }),
|
|
19755
19747
|
/* @__PURE__ */ jsx(
|
|
19756
19748
|
Button,
|
|
19757
19749
|
{
|
|
19758
19750
|
type: "submit",
|
|
19759
|
-
disabled: !normalized ||
|
|
19751
|
+
disabled: !normalized || subscribe2.isPending,
|
|
19760
19752
|
"data-testid": "calendar-subscribe-save",
|
|
19761
|
-
children:
|
|
19753
|
+
children: subscribe2.isPending ? "Subscribing\u2026" : "Subscribe"
|
|
19762
19754
|
}
|
|
19763
19755
|
)
|
|
19764
19756
|
] })
|
|
@@ -20232,7 +20224,7 @@ function BookingPageForm({ page, defaultTimeZone, onDone }) {
|
|
|
20232
20224
|
const [errors, setErrors] = useState({});
|
|
20233
20225
|
const [serverError, setServerError] = useState(null);
|
|
20234
20226
|
const save = useSaveBookingPage();
|
|
20235
|
-
const
|
|
20227
|
+
const set = (key, value) => setForm((f) => ({ ...f, [key]: value }));
|
|
20236
20228
|
const num = (key, label, hint) => /* @__PURE__ */ jsxs("div", { className: "grid gap-1", children: [
|
|
20237
20229
|
/* @__PURE__ */ jsx(Label, { htmlFor: `booking-${key}`, children: label }),
|
|
20238
20230
|
/* @__PURE__ */ jsx(
|
|
@@ -20244,7 +20236,7 @@ function BookingPageForm({ page, defaultTimeZone, onDone }) {
|
|
|
20244
20236
|
min: 0,
|
|
20245
20237
|
placeholder: hint,
|
|
20246
20238
|
value: form[key],
|
|
20247
|
-
onChange: (e) =>
|
|
20239
|
+
onChange: (e) => set(key, e.target.value),
|
|
20248
20240
|
"aria-invalid": !!errors[key],
|
|
20249
20241
|
"data-testid": `booking-${key}`
|
|
20250
20242
|
}
|
|
@@ -20305,7 +20297,7 @@ function BookingPageForm({ page, defaultTimeZone, onDone }) {
|
|
|
20305
20297
|
disabled: !!page,
|
|
20306
20298
|
onChange: (e) => {
|
|
20307
20299
|
setSlugTouched(true);
|
|
20308
|
-
|
|
20300
|
+
set("slug", e.target.value.toLowerCase());
|
|
20309
20301
|
},
|
|
20310
20302
|
"aria-invalid": !!errors.slug,
|
|
20311
20303
|
"data-testid": "booking-slug"
|
|
@@ -20323,7 +20315,7 @@ function BookingPageForm({ page, defaultTimeZone, onDone }) {
|
|
|
20323
20315
|
id: "booking-description",
|
|
20324
20316
|
rows: 2,
|
|
20325
20317
|
value: form.description,
|
|
20326
|
-
onChange: (e) =>
|
|
20318
|
+
onChange: (e) => set("description", e.target.value)
|
|
20327
20319
|
}
|
|
20328
20320
|
)
|
|
20329
20321
|
] }),
|
|
@@ -20336,7 +20328,7 @@ function BookingPageForm({ page, defaultTimeZone, onDone }) {
|
|
|
20336
20328
|
id: "booking-durations",
|
|
20337
20329
|
placeholder: "15, 30, 60",
|
|
20338
20330
|
value: form.durations,
|
|
20339
|
-
onChange: (e) =>
|
|
20331
|
+
onChange: (e) => set("durations", e.target.value),
|
|
20340
20332
|
"aria-invalid": !!errors.durations,
|
|
20341
20333
|
"data-testid": "booking-durations"
|
|
20342
20334
|
}
|
|
@@ -20351,7 +20343,7 @@ function BookingPageForm({ page, defaultTimeZone, onDone }) {
|
|
|
20351
20343
|
id: "booking-zone",
|
|
20352
20344
|
className: selectClass3,
|
|
20353
20345
|
value: form.timeZone,
|
|
20354
|
-
onChange: (e) =>
|
|
20346
|
+
onChange: (e) => set("timeZone", e.target.value),
|
|
20355
20347
|
children: zoneOptions(form.timeZone).map((z) => /* @__PURE__ */ jsx("option", { value: z, children: z.replace(/_/g, " ") }, z))
|
|
20356
20348
|
}
|
|
20357
20349
|
)
|
|
@@ -20359,7 +20351,7 @@ function BookingPageForm({ page, defaultTimeZone, onDone }) {
|
|
|
20359
20351
|
] }),
|
|
20360
20352
|
/* @__PURE__ */ jsxs("fieldset", { className: "grid gap-2", children: [
|
|
20361
20353
|
/* @__PURE__ */ jsx("legend", { className: "mb-1 text-sm font-medium text-foreground", children: "Weekly hours" }),
|
|
20362
|
-
/* @__PURE__ */ jsx(WeeklyHoursEditor, { value: form.weekly, onChange: (weekly) =>
|
|
20354
|
+
/* @__PURE__ */ jsx(WeeklyHoursEditor, { value: form.weekly, onChange: (weekly) => set("weekly", weekly) }),
|
|
20363
20355
|
errors.weekly && /* @__PURE__ */ jsx("span", { className: "text-xs text-destructive", children: errors.weekly }),
|
|
20364
20356
|
/* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: "Only times free in your calendars within these hours are offered." })
|
|
20365
20357
|
] }),
|
|
@@ -20377,7 +20369,7 @@ function BookingPageForm({ page, defaultTimeZone, onDone }) {
|
|
|
20377
20369
|
id: "booking-location",
|
|
20378
20370
|
placeholder: "Office, phone, or a meeting link",
|
|
20379
20371
|
value: form.location,
|
|
20380
|
-
onChange: (e) =>
|
|
20372
|
+
onChange: (e) => set("location", e.target.value)
|
|
20381
20373
|
}
|
|
20382
20374
|
)
|
|
20383
20375
|
] }),
|
|
@@ -20386,7 +20378,7 @@ function BookingPageForm({ page, defaultTimeZone, onDone }) {
|
|
|
20386
20378
|
Switch,
|
|
20387
20379
|
{
|
|
20388
20380
|
checked: form.active,
|
|
20389
|
-
onCheckedChange: (active) =>
|
|
20381
|
+
onCheckedChange: (active) => set("active", active),
|
|
20390
20382
|
"aria-label": "Accepting bookings",
|
|
20391
20383
|
"data-testid": "booking-active"
|
|
20392
20384
|
}
|
|
@@ -23309,14 +23301,14 @@ function ConnectedUpload({
|
|
|
23309
23301
|
[tags]
|
|
23310
23302
|
);
|
|
23311
23303
|
const addFiles = useCallback(
|
|
23312
|
-
(chosen) => setFiles((
|
|
23313
|
-
if (
|
|
23314
|
-
const names = new Set(
|
|
23304
|
+
(chosen) => setFiles((current) => {
|
|
23305
|
+
if (current.length === 0) return chosen;
|
|
23306
|
+
const names = new Set(current.map((file) => file.name));
|
|
23315
23307
|
const fresh = chosen.filter((file) => !names.has(file.name));
|
|
23316
23308
|
const duplicates = chosen.length - fresh.length;
|
|
23317
23309
|
if (duplicates > 0)
|
|
23318
23310
|
notify17(`Skipped ${duplicates} duplicate file${duplicates > 1 ? "s" : ""}`, "info");
|
|
23319
|
-
return [...
|
|
23311
|
+
return [...current, ...fresh];
|
|
23320
23312
|
}),
|
|
23321
23313
|
[notify17]
|
|
23322
23314
|
);
|
|
@@ -23437,7 +23429,7 @@ ${summary}`,
|
|
|
23437
23429
|
ConnectedUploadDropzone,
|
|
23438
23430
|
{
|
|
23439
23431
|
onFilesSelected: addFiles,
|
|
23440
|
-
onFilesRejected: (more) => setRefused((
|
|
23432
|
+
onFilesRejected: (more) => setRefused((current) => [...current, ...more]),
|
|
23441
23433
|
onUrlsSubmit: handleUrls,
|
|
23442
23434
|
title: "Drag & drop files or folders",
|
|
23443
23435
|
subtitle: "",
|
|
@@ -23452,7 +23444,7 @@ ${summary}`,
|
|
|
23452
23444
|
{
|
|
23453
23445
|
renderFileIcon,
|
|
23454
23446
|
files,
|
|
23455
|
-
onRemoveFile: (index) => setFiles((
|
|
23447
|
+
onRemoveFile: (index) => setFiles((current) => current.filter((_, i) => i !== index)),
|
|
23456
23448
|
onClearAll: () => setFiles([]),
|
|
23457
23449
|
formatFileSize: formatFileSize3
|
|
23458
23450
|
}
|
|
@@ -25383,12 +25375,12 @@ function useDocumentFilters({
|
|
|
25383
25375
|
if (folderTree.hasUnfiled) counts["folder:none"] = 0;
|
|
25384
25376
|
for (const node of folderTree.nodes) counts[`folder:${node.path}`] = 0;
|
|
25385
25377
|
const add = (key, docId) => {
|
|
25386
|
-
let
|
|
25387
|
-
if (!
|
|
25388
|
-
|
|
25389
|
-
index.set(key,
|
|
25378
|
+
let set = index.get(key);
|
|
25379
|
+
if (!set) {
|
|
25380
|
+
set = /* @__PURE__ */ new Set();
|
|
25381
|
+
index.set(key, set);
|
|
25390
25382
|
}
|
|
25391
|
-
|
|
25383
|
+
set.add(docId);
|
|
25392
25384
|
};
|
|
25393
25385
|
const includeDuplicatesAttr = duplicatesFilterState !== "exclude";
|
|
25394
25386
|
for (const doc of documents) {
|
|
@@ -26846,8 +26838,8 @@ function ConnectedBulkTagEditor({
|
|
|
26846
26838
|
}
|
|
26847
26839
|
await executeGeneration();
|
|
26848
26840
|
};
|
|
26849
|
-
const toggle = (
|
|
26850
|
-
const next = new Set(
|
|
26841
|
+
const toggle = (set, item) => {
|
|
26842
|
+
const next = new Set(set);
|
|
26851
26843
|
if (next.has(item)) next.delete(item);
|
|
26852
26844
|
else next.add(item);
|
|
26853
26845
|
return next;
|
|
@@ -26859,9 +26851,9 @@ function ConnectedBulkTagEditor({
|
|
|
26859
26851
|
return next;
|
|
26860
26852
|
});
|
|
26861
26853
|
const handleCheckboxToggle = (tagId) => {
|
|
26862
|
-
const
|
|
26863
|
-
if (
|
|
26864
|
-
if (
|
|
26854
|
+
const current = tagChanges[tagId];
|
|
26855
|
+
if (current?.action === "add") return setChange(tagId, { action: "remove" });
|
|
26856
|
+
if (current?.action === "remove") return setChange(tagId, null);
|
|
26865
26857
|
const allHave = !isMixed(tagId) && countByTag[tagId] === total;
|
|
26866
26858
|
setChange(tagId, { action: allHave ? "remove" : "add" });
|
|
26867
26859
|
};
|
|
@@ -29099,7 +29091,7 @@ function MeetingAvatar() {
|
|
|
29099
29091
|
);
|
|
29100
29092
|
}
|
|
29101
29093
|
var isGroupChat = (chat) => !!chat && chat.kind !== "direct";
|
|
29102
|
-
var
|
|
29094
|
+
var isAgent7 = (user) => chats.isAgentExtId(user.external_id);
|
|
29103
29095
|
function ConnectedMessenger({
|
|
29104
29096
|
activeId,
|
|
29105
29097
|
onOpen,
|
|
@@ -29136,7 +29128,7 @@ function ConnectedMessenger({
|
|
|
29136
29128
|
// Presence rides on the row's avatar.
|
|
29137
29129
|
avatar(c.peer)
|
|
29138
29130
|
),
|
|
29139
|
-
badge: !isGroupChat(c.chat) &&
|
|
29131
|
+
badge: !isGroupChat(c.chat) && isAgent7(c.peer) ? /* @__PURE__ */ jsx(AgentBadge, {}) : void 0
|
|
29140
29132
|
}));
|
|
29141
29133
|
const all = [...decorated, ...extraRows];
|
|
29142
29134
|
if (!filters?.size) return all;
|
|
@@ -29144,7 +29136,7 @@ function ConnectedMessenger({
|
|
|
29144
29136
|
unread: (row2) => row2.unreadCount > 0,
|
|
29145
29137
|
// A person is muted, not a group that happens to list them first.
|
|
29146
29138
|
muted: (row2) => !isGroupChat(row2.chat) && mutedUsers.has(row2.peer.external_id),
|
|
29147
|
-
agents: (row2) => !isGroupChat(row2.chat) &&
|
|
29139
|
+
agents: (row2) => !isGroupChat(row2.chat) && isAgent7(row2.peer),
|
|
29148
29140
|
meetings: (row2) => row2.chat?.kind === "meeting",
|
|
29149
29141
|
...rowFilters
|
|
29150
29142
|
};
|
|
@@ -29275,12 +29267,12 @@ function ConnectedMessenger({
|
|
|
29275
29267
|
{
|
|
29276
29268
|
avatar: activePeer ? avatar(activePeer) : void 0,
|
|
29277
29269
|
name: activePeer ? userDisplayName(activePeer) : "Conversation",
|
|
29278
|
-
badge: activePeer &&
|
|
29270
|
+
badge: activePeer && isAgent7(activePeer) ? /* @__PURE__ */ jsx(AgentBadge, {}) : void 0,
|
|
29279
29271
|
presence: presence ? /* @__PURE__ */ jsx(PresenceLabel, { status: presence }) : void 0,
|
|
29280
29272
|
email: activePeer?.email,
|
|
29281
29273
|
menu: activePeer ? directActions?.(activePeer, {
|
|
29282
29274
|
// A personal agent never carries over into a group, and a self-chat has no peer.
|
|
29283
|
-
addPeople:
|
|
29275
|
+
addPeople: isAgent7(activePeer) || activeIsSelf || !PeoplePicker ? void 0 : () => setPicker({ mode: "from-direct", fixed: [activePeer] })
|
|
29284
29276
|
}) : void 0
|
|
29285
29277
|
}
|
|
29286
29278
|
),
|
|
@@ -30008,12 +30000,12 @@ function useDeveloperConfig() {
|
|
|
30008
30000
|
const parts = field.split(".");
|
|
30009
30001
|
if (parts.length > 1) {
|
|
30010
30002
|
const sectionCopy = { ...prev[section] };
|
|
30011
|
-
let
|
|
30003
|
+
let current = sectionCopy;
|
|
30012
30004
|
for (let i = 0; i < parts.length - 1; i++) {
|
|
30013
|
-
|
|
30014
|
-
|
|
30005
|
+
current[parts[i]] = { ...current[parts[i]] };
|
|
30006
|
+
current = current[parts[i]];
|
|
30015
30007
|
}
|
|
30016
|
-
|
|
30008
|
+
current[parts[parts.length - 1]] = value;
|
|
30017
30009
|
const newValues2 = { ...prev, [section]: sectionCopy };
|
|
30018
30010
|
setHasUnsavedChanges(true);
|
|
30019
30011
|
return newValues2;
|
|
@@ -30497,15 +30489,15 @@ function ConnectedRequestWorkspaceAccess({
|
|
|
30497
30489
|
const targetWorkspace = selectedWorkspace ?? workspaceExtId ?? (knownWorkspaceIds.length === 1 ? knownWorkspaceIds[0] : void 0);
|
|
30498
30490
|
const [resolvedName, setResolvedName] = useState();
|
|
30499
30491
|
useEffect(() => {
|
|
30500
|
-
let
|
|
30492
|
+
let current = true;
|
|
30501
30493
|
setResolvedName(void 0);
|
|
30502
30494
|
if (!isOpen || !targetWorkspace || workspaceName) return;
|
|
30503
30495
|
void arbi.workspaces.accessStatus(targetWorkspace).then((status) => {
|
|
30504
|
-
if (
|
|
30496
|
+
if (current) setResolvedName(status.workspace_name);
|
|
30505
30497
|
}).catch(() => {
|
|
30506
30498
|
});
|
|
30507
30499
|
return () => {
|
|
30508
|
-
|
|
30500
|
+
current = false;
|
|
30509
30501
|
};
|
|
30510
30502
|
}, [arbi, isOpen, targetWorkspace, workspaceName]);
|
|
30511
30503
|
const name = [recipient.given_name, recipient.family_name].filter(Boolean).join(" ") || recipient.email || "this user";
|
|
@@ -30824,7 +30816,7 @@ function ConnectedAccountCluster({
|
|
|
30824
30816
|
const pageRow = (page, icon2, label) => {
|
|
30825
30817
|
const open = pages.includes(page) ? offered[page] : void 0;
|
|
30826
30818
|
if (!open) return null;
|
|
30827
|
-
const
|
|
30819
|
+
const current = activePage === page;
|
|
30828
30820
|
return /* @__PURE__ */ jsx(
|
|
30829
30821
|
SidebarBadgeRow,
|
|
30830
30822
|
{
|
|
@@ -30832,8 +30824,8 @@ function ConnectedAccountCluster({
|
|
|
30832
30824
|
label,
|
|
30833
30825
|
ariaLabel: label,
|
|
30834
30826
|
variant: rowVariant,
|
|
30835
|
-
className: `${iconClassName ?? ""} ${
|
|
30836
|
-
"aria-current":
|
|
30827
|
+
className: `${iconClassName ?? ""} ${current ? "bg-primary/10 text-primary" : ""}`,
|
|
30828
|
+
"aria-current": current ? "page" : void 0,
|
|
30837
30829
|
"data-testid": `sidebar-${page}-button`,
|
|
30838
30830
|
onClick: () => {
|
|
30839
30831
|
open();
|
|
@@ -31649,6 +31641,478 @@ function ConnectedReportProblem({
|
|
|
31649
31641
|
report.ui
|
|
31650
31642
|
] });
|
|
31651
31643
|
}
|
|
31644
|
+
var referencesOf = (inputs) => {
|
|
31645
|
+
const value = inputs.references;
|
|
31646
|
+
return value?.documents ?? [];
|
|
31647
|
+
};
|
|
31648
|
+
var PROMPT_BINDINGS = {
|
|
31649
|
+
[GENERATE_IMAGE_ID]: {
|
|
31650
|
+
attachScope: false,
|
|
31651
|
+
tools: (inputs) => {
|
|
31652
|
+
const aspectRatio = typeof inputs.aspect_ratio === "string" ? inputs.aspect_ratio : "";
|
|
31653
|
+
return {
|
|
31654
|
+
retrieval_chunk: buildRetrievalChunkTool([]),
|
|
31655
|
+
retrieval_full_context: buildRetrievalFullContextTool(referencesOf(inputs)),
|
|
31656
|
+
...aspectRatio && aspectRatio !== IMAGE_ASPECT_AUTO ? {
|
|
31657
|
+
image_generation: {
|
|
31658
|
+
name: "image_generation",
|
|
31659
|
+
description: "image generation",
|
|
31660
|
+
tool_args: { aspect_ratio: aspectRatio },
|
|
31661
|
+
tool_responses: {}
|
|
31662
|
+
}
|
|
31663
|
+
} : {}
|
|
31664
|
+
};
|
|
31665
|
+
}
|
|
31666
|
+
}
|
|
31667
|
+
};
|
|
31668
|
+
function useWorkflowTasks() {
|
|
31669
|
+
const createWork = useCreateWork();
|
|
31670
|
+
const runWorkflow = useRunWorkflow();
|
|
31671
|
+
const startQuery = useStartTaskQuery();
|
|
31672
|
+
const createWorkflow = useCreateWorkflow();
|
|
31673
|
+
const updateConversation = useUpdateConversation();
|
|
31674
|
+
const updateWorkflowMutation = useUpdateWorkflow();
|
|
31675
|
+
const activeWorkspaceId = useArbiSessionState((s) => s.workspaceId);
|
|
31676
|
+
const { openFiles } = useBlocksEnvironment();
|
|
31677
|
+
const { mutateAsync: grant } = useGrantAgentAccess();
|
|
31678
|
+
const grantAgentAccess = useCallback(
|
|
31679
|
+
(agentExtId, workspaceId) => grant({ agentExtId, workspaceId }).then(
|
|
31680
|
+
() => void 0,
|
|
31681
|
+
() => void 0
|
|
31682
|
+
),
|
|
31683
|
+
[grant]
|
|
31684
|
+
);
|
|
31685
|
+
const { data: documents = [] } = useDocuments();
|
|
31686
|
+
const documentTitles = useMemo(
|
|
31687
|
+
() => Object.fromEntries(documents.map((d) => [d.external_id, getDocumentTitle(d, d.external_id)])),
|
|
31688
|
+
[documents]
|
|
31689
|
+
);
|
|
31690
|
+
const create3 = useCallback(
|
|
31691
|
+
async (ctx, forceWorkflow = false) => {
|
|
31692
|
+
const request = taskComposerToCreateRequest(
|
|
31693
|
+
{ ...ctx, documentTitles, plan: ctx.plan ?? null },
|
|
31694
|
+
activeWorkspaceId ?? void 0,
|
|
31695
|
+
forceWorkflow
|
|
31696
|
+
);
|
|
31697
|
+
if (request.kind === "workflow") {
|
|
31698
|
+
const workflow = await createWorkflow.mutateAsync(request.body);
|
|
31699
|
+
const workspaceId = workflow.workspace_ext_id ?? request.body.workspace_ext_id;
|
|
31700
|
+
if (workflow.auth_mode === "scheduled_permanent" && !workflow.on_demand && workflow.agent_ext_id && workspaceId) {
|
|
31701
|
+
await grantAgentAccess(workflow.agent_ext_id, workspaceId);
|
|
31702
|
+
}
|
|
31703
|
+
if (ctx.workflow.documentAction && ctx.values.when === "now" && !forceWorkflow) {
|
|
31704
|
+
const result = await runWorkflow.mutateAsync(workflow.external_id);
|
|
31705
|
+
if (result.error) throw new Error(result.error);
|
|
31706
|
+
openFiles();
|
|
31707
|
+
}
|
|
31708
|
+
return { kind: "workflow", workflow };
|
|
31709
|
+
}
|
|
31710
|
+
if (request.kind === "query") {
|
|
31711
|
+
const { conversationId } = await startQuery.start(request.query);
|
|
31712
|
+
return {
|
|
31713
|
+
kind: "work",
|
|
31714
|
+
task: { external_id: conversationId, title: request.query.task.title ?? null },
|
|
31715
|
+
ran: true
|
|
31716
|
+
};
|
|
31717
|
+
}
|
|
31718
|
+
const task = await createWork.mutateAsync(request.body);
|
|
31719
|
+
return { kind: "work", task, ran: null };
|
|
31720
|
+
},
|
|
31721
|
+
[
|
|
31722
|
+
activeWorkspaceId,
|
|
31723
|
+
createWork,
|
|
31724
|
+
createWorkflow,
|
|
31725
|
+
documentTitles,
|
|
31726
|
+
grantAgentAccess,
|
|
31727
|
+
startQuery,
|
|
31728
|
+
runWorkflow,
|
|
31729
|
+
openFiles
|
|
31730
|
+
]
|
|
31731
|
+
);
|
|
31732
|
+
const update = useCallback(
|
|
31733
|
+
async (task, ctx) => {
|
|
31734
|
+
const patch = taskComposerToUpdateRequest({ ...ctx, plan: ctx.plan ?? null });
|
|
31735
|
+
if (task.is_owner === false) delete patch.shared;
|
|
31736
|
+
await updateConversation.mutateAsync({ conversationId: task.external_id, patch });
|
|
31737
|
+
},
|
|
31738
|
+
[updateConversation]
|
|
31739
|
+
);
|
|
31740
|
+
const updateWorkflow = useCallback(
|
|
31741
|
+
async (workflow, ctx) => {
|
|
31742
|
+
const patch = composerToWorkflowUpdate({ ...ctx, documentTitles, plan: ctx.plan ?? null });
|
|
31743
|
+
if (workflow.is_owner === false) delete patch.shared;
|
|
31744
|
+
const workspaceId = workflow.workspace_ext_id ?? activeWorkspaceId;
|
|
31745
|
+
const updated = await updateWorkflowMutation.mutateAsync({
|
|
31746
|
+
workflowId: workflow.external_id,
|
|
31747
|
+
patch
|
|
31748
|
+
});
|
|
31749
|
+
const agentId = updated.agent_ext_id ?? patch.agent_ext_id ?? workflow.agent_ext_id;
|
|
31750
|
+
if (updated.auth_mode === "scheduled_permanent" && !updated.on_demand && agentId && workspaceId) {
|
|
31751
|
+
await grantAgentAccess(agentId, workspaceId);
|
|
31752
|
+
}
|
|
31753
|
+
},
|
|
31754
|
+
[activeWorkspaceId, documentTitles, grantAgentAccess, updateWorkflowMutation]
|
|
31755
|
+
);
|
|
31756
|
+
return {
|
|
31757
|
+
create: create3,
|
|
31758
|
+
update,
|
|
31759
|
+
updateWorkflow,
|
|
31760
|
+
isPending: createWork.isPending || startQuery.isPending || createWorkflow.isPending || updateConversation.isPending || updateWorkflowMutation.isPending
|
|
31761
|
+
};
|
|
31762
|
+
}
|
|
31763
|
+
|
|
31764
|
+
// src/connection/workflows/useLaunchWorkflow.ts
|
|
31765
|
+
var text = (inputs, name) => {
|
|
31766
|
+
const v = inputs[name];
|
|
31767
|
+
return typeof v === "string" ? v.trim() : "";
|
|
31768
|
+
};
|
|
31769
|
+
function useLaunchWorkflow({ landing: surfaceLanding } = {}) {
|
|
31770
|
+
const { data: documents = [] } = useDocuments();
|
|
31771
|
+
const { data: workspaceTags = [] } = useTags();
|
|
31772
|
+
const tags = useMemo(() => documentScopeLabels(workspaceTags), [workspaceTags]);
|
|
31773
|
+
const createTag = useCreateTag();
|
|
31774
|
+
const updateTag = useUpdateTag();
|
|
31775
|
+
const generate = useGenerateDocTags();
|
|
31776
|
+
const { create: createTask } = useWorkflowTasks();
|
|
31777
|
+
const applyModel = useApplyChatModel();
|
|
31778
|
+
const session = useArbiSessionStore();
|
|
31779
|
+
const { notify: notify17, openFiles, openNewConversation } = useBlocksEnvironment();
|
|
31780
|
+
const annotate = useCallback(
|
|
31781
|
+
async ({ inputs, scope }) => {
|
|
31782
|
+
const description = text(inputs, "description");
|
|
31783
|
+
const name = text(inputs, "name") || deriveAnnotationName(description);
|
|
31784
|
+
const matching = matchWorkflowScope(documents, scope);
|
|
31785
|
+
if (!name || !description || matching.length === 0) return;
|
|
31786
|
+
try {
|
|
31787
|
+
const existing = tags.find((t) => t.name.toLowerCase() === name.toLowerCase());
|
|
31788
|
+
let tagId;
|
|
31789
|
+
if (existing) {
|
|
31790
|
+
tagId = existing.external_id;
|
|
31791
|
+
await updateTag.mutateAsync({
|
|
31792
|
+
tagId,
|
|
31793
|
+
change: { instruction: description }
|
|
31794
|
+
});
|
|
31795
|
+
} else {
|
|
31796
|
+
const created = await createTag.mutateAsync({
|
|
31797
|
+
name,
|
|
31798
|
+
tagType: { type: "text", options: [] },
|
|
31799
|
+
shared: true,
|
|
31800
|
+
instruction: description
|
|
31801
|
+
});
|
|
31802
|
+
const createdId = created?.external_id;
|
|
31803
|
+
if (!createdId) throw new Error("tag create returned no id");
|
|
31804
|
+
tagId = createdId;
|
|
31805
|
+
}
|
|
31806
|
+
const docIds = matching.map((d) => d.external_id);
|
|
31807
|
+
await generate.mutateAsync({ tagIds: [tagId], docIds, overwrite: true });
|
|
31808
|
+
const filters = {};
|
|
31809
|
+
scope.folders.forEach((folder) => {
|
|
31810
|
+
filters[folder === "" ? "folder:none" : `folder:${folder}`] = "include";
|
|
31811
|
+
});
|
|
31812
|
+
scope.labels.forEach((labelId) => {
|
|
31813
|
+
filters[labelId] = "include";
|
|
31814
|
+
});
|
|
31815
|
+
openFiles({ select: docIds, filters });
|
|
31816
|
+
} catch (error) {
|
|
31817
|
+
notify17("Could not start the annotation", "error");
|
|
31818
|
+
throw error;
|
|
31819
|
+
}
|
|
31820
|
+
},
|
|
31821
|
+
[documents, tags, createTag, updateTag, generate, openFiles, notify17]
|
|
31822
|
+
);
|
|
31823
|
+
return useCallback(
|
|
31824
|
+
async (launch) => {
|
|
31825
|
+
const { workflow, inputs, scope, agentId } = launch;
|
|
31826
|
+
if (workflow.run.kind === "operation") {
|
|
31827
|
+
if (workflow.id === ANNOTATE_ID) {
|
|
31828
|
+
await annotate(launch);
|
|
31829
|
+
recordWorkflowUse(workflow.id);
|
|
31830
|
+
return;
|
|
31831
|
+
}
|
|
31832
|
+
throw new Error(`No host handler for workflow "${workflow.id}"`);
|
|
31833
|
+
}
|
|
31834
|
+
const documentTitles = Object.fromEntries(
|
|
31835
|
+
documents.map((d) => [d.external_id, getDocumentTitle(d, d.external_id)])
|
|
31836
|
+
);
|
|
31837
|
+
const prompt = composeWorkflowPrompt(workflow, inputs, { documentTitles });
|
|
31838
|
+
if (!prompt) return;
|
|
31839
|
+
recordWorkflowUse(workflow.id);
|
|
31840
|
+
if (agentId) {
|
|
31841
|
+
try {
|
|
31842
|
+
const created = await createTask({
|
|
31843
|
+
workflow,
|
|
31844
|
+
values: {
|
|
31845
|
+
assignee: "agent",
|
|
31846
|
+
workflowId: workflow.id,
|
|
31847
|
+
inputs,
|
|
31848
|
+
when: "now",
|
|
31849
|
+
runAt: "",
|
|
31850
|
+
rrule: "",
|
|
31851
|
+
timezone: "UTC",
|
|
31852
|
+
eventKind: "",
|
|
31853
|
+
afterTaskId: "",
|
|
31854
|
+
parentTaskId: "",
|
|
31855
|
+
shared: true,
|
|
31856
|
+
description: "",
|
|
31857
|
+
dueAt: "",
|
|
31858
|
+
agentId,
|
|
31859
|
+
name: "",
|
|
31860
|
+
notifyOnComplete: true,
|
|
31861
|
+
access: "ask_each_run"
|
|
31862
|
+
}
|
|
31863
|
+
});
|
|
31864
|
+
const ran = created.kind === "work" ? created.ran : null;
|
|
31865
|
+
const title = created.kind === "work" ? created.task.title : created.workflow.name;
|
|
31866
|
+
notify17(
|
|
31867
|
+
ran === false ? "Task created, but the run could not start" : `Running \u201C${title ?? workflow.title}\u201D`,
|
|
31868
|
+
ran === false ? "warning" : "success"
|
|
31869
|
+
);
|
|
31870
|
+
} catch (error) {
|
|
31871
|
+
notify17(
|
|
31872
|
+
error instanceof Error && error.message.startsWith("Open a workspace") ? error.message : "Could not start the run",
|
|
31873
|
+
"error"
|
|
31874
|
+
);
|
|
31875
|
+
throw error;
|
|
31876
|
+
}
|
|
31877
|
+
return;
|
|
31878
|
+
}
|
|
31879
|
+
const landing = launch.landing ?? surfaceLanding ?? workflow.landing;
|
|
31880
|
+
const inPlace = landing === "current-chat";
|
|
31881
|
+
const binding = PROMPT_BINDINGS[workflow.id];
|
|
31882
|
+
if (!inPlace) openNewConversation();
|
|
31883
|
+
if (binding?.attachScope !== false && !isEmptyWorkflowScope(scope)) {
|
|
31884
|
+
const ids = matchWorkflowScope(documents, scope).map((d) => d.external_id);
|
|
31885
|
+
if (ids.length > 0) {
|
|
31886
|
+
session.setConversationDocuments(
|
|
31887
|
+
inPlace ? session.getState().conversationId ?? "new" : "new",
|
|
31888
|
+
ids.map((docId) => ({ docId, isPinned: false }))
|
|
31889
|
+
);
|
|
31890
|
+
}
|
|
31891
|
+
}
|
|
31892
|
+
if (workflow.model) void applyModel(workflow.model, `Workflow - ${workflow.title}`);
|
|
31893
|
+
session.setPendingTools(binding?.tools?.(inputs) ?? null);
|
|
31894
|
+
session.setDraft(prompt);
|
|
31895
|
+
session.setAutoSendDraft(true);
|
|
31896
|
+
},
|
|
31897
|
+
[
|
|
31898
|
+
annotate,
|
|
31899
|
+
applyModel,
|
|
31900
|
+
createTask,
|
|
31901
|
+
documents,
|
|
31902
|
+
surfaceLanding,
|
|
31903
|
+
session,
|
|
31904
|
+
notify17,
|
|
31905
|
+
openNewConversation
|
|
31906
|
+
]
|
|
31907
|
+
);
|
|
31908
|
+
}
|
|
31909
|
+
var AGENT_LABELS = { label: "Who this runs for", myAssistant: "Me (your own assistant)" };
|
|
31910
|
+
function ConnectedWorkflowStart({
|
|
31911
|
+
workflows,
|
|
31912
|
+
landing,
|
|
31913
|
+
addFilesAction,
|
|
31914
|
+
...rest
|
|
31915
|
+
}) {
|
|
31916
|
+
const onLaunch = useLaunchWorkflow({ landing });
|
|
31917
|
+
const { openUpload } = useBlocksEnvironment();
|
|
31918
|
+
const { data: workspaceTags = [] } = useTags();
|
|
31919
|
+
const tags = useMemo(() => documentScopeLabels(workspaceTags), [workspaceTags]);
|
|
31920
|
+
const fieldPlaceholder = useCallback(
|
|
31921
|
+
(field, inputs, workflow) => {
|
|
31922
|
+
if (workflow.id !== ANNOTATE_ID || field.name !== "name") return void 0;
|
|
31923
|
+
const derived = deriveAnnotationName(String(inputs.description ?? ""));
|
|
31924
|
+
return derived ? `Otherwise \u201C${derived}\u201D` : "Taken from the description";
|
|
31925
|
+
},
|
|
31926
|
+
[]
|
|
31927
|
+
);
|
|
31928
|
+
return /* @__PURE__ */ jsx(
|
|
31929
|
+
ConnectedWorkflowLauncher,
|
|
31930
|
+
{
|
|
31931
|
+
...rest,
|
|
31932
|
+
workflows,
|
|
31933
|
+
onLaunch,
|
|
31934
|
+
renderIcon: renderWorkflowIcon,
|
|
31935
|
+
onAddFiles: openUpload,
|
|
31936
|
+
agentLabels: AGENT_LABELS,
|
|
31937
|
+
addFilesAction,
|
|
31938
|
+
fieldPlaceholder,
|
|
31939
|
+
submitLabel: ({ workflow, matchedCount }) => workflow.id === ANNOTATE_ID && matchedCount !== null ? `Annotate ${matchedCount} document${matchedCount !== 1 ? "s" : ""}` : void 0,
|
|
31940
|
+
renderNotice: ({ workflow, inputs }) => {
|
|
31941
|
+
if (workflow.id !== ANNOTATE_ID) return null;
|
|
31942
|
+
const name = String(inputs.name ?? "").trim() || deriveAnnotationName(String(inputs.description ?? ""));
|
|
31943
|
+
const existing = name ? tags.find((t) => t.name.toLowerCase() === name.toLowerCase()) : void 0;
|
|
31944
|
+
if (!existing) return null;
|
|
31945
|
+
return /* @__PURE__ */ jsxs(
|
|
31946
|
+
"div",
|
|
31947
|
+
{
|
|
31948
|
+
className: "flex items-start gap-2 rounded-md border border-amber-500/40 bg-amber-500/10 px-3 py-2 text-sm text-amber-800 dark:text-amber-200",
|
|
31949
|
+
role: "status",
|
|
31950
|
+
"data-testid": "workflow-existing-label-warning",
|
|
31951
|
+
children: [
|
|
31952
|
+
/* @__PURE__ */ jsx(TriangleAlert, { className: "mt-0.5 size-4 shrink-0 text-amber-500" }),
|
|
31953
|
+
/* @__PURE__ */ jsxs("span", { children: [
|
|
31954
|
+
"An annotation called ",
|
|
31955
|
+
/* @__PURE__ */ jsx("span", { className: "font-medium", children: existing.name }),
|
|
31956
|
+
" already exists. Annotating will overwrite its description and the current cell values for the selected files."
|
|
31957
|
+
] })
|
|
31958
|
+
]
|
|
31959
|
+
}
|
|
31960
|
+
);
|
|
31961
|
+
}
|
|
31962
|
+
}
|
|
31963
|
+
);
|
|
31964
|
+
}
|
|
31965
|
+
function useSkillsEnabled() {
|
|
31966
|
+
const { data: userSettings } = useUserSettings();
|
|
31967
|
+
return userSettings?.show_skills ?? false;
|
|
31968
|
+
}
|
|
31969
|
+
|
|
31970
|
+
// src/connection/workflows/useWorkflowDefinitions.ts
|
|
31971
|
+
function useWorkflowDefinitions() {
|
|
31972
|
+
const { data: listings } = useSkills();
|
|
31973
|
+
const usage = useWorkflowUsage();
|
|
31974
|
+
const skillsEnabled = useSkillsEnabled();
|
|
31975
|
+
return useMemo(() => {
|
|
31976
|
+
const { host: builtins, skills: fromServer } = mergeSkillWorkflows(
|
|
31977
|
+
WEB_WORKFLOWS,
|
|
31978
|
+
listings ?? []
|
|
31979
|
+
);
|
|
31980
|
+
const all = [...builtins, ...fromServer];
|
|
31981
|
+
const byId = new Map(all.map((w) => [w.id, w]));
|
|
31982
|
+
const pinned = DASHBOARD_PINNED.flatMap((id) => {
|
|
31983
|
+
const w = byId.get(id);
|
|
31984
|
+
return w ? [w] : [];
|
|
31985
|
+
});
|
|
31986
|
+
return {
|
|
31987
|
+
skills: all,
|
|
31988
|
+
skillsEnabled,
|
|
31989
|
+
start: skillsEnabled ? [...builtins, ...sortByRecentUse(fromServer, usage)] : [],
|
|
31990
|
+
dashboard: [...pinned, ...DASHBOARD_OPERATIONS],
|
|
31991
|
+
forTasks: [CUSTOM_TASK, ...all.filter((w) => w.schedulable), REMIND_TASK]
|
|
31992
|
+
};
|
|
31993
|
+
}, [listings, usage, skillsEnabled]);
|
|
31994
|
+
}
|
|
31995
|
+
|
|
31996
|
+
// src/connection/workflows/useWorkflowLaunch.ts
|
|
31997
|
+
function suppliedKinds(context) {
|
|
31998
|
+
const kinds = [];
|
|
31999
|
+
if (context.documents?.length) kinds.push("documents");
|
|
32000
|
+
if (context.selection) kinds.push("selection");
|
|
32001
|
+
if (context.image) kinds.push("image");
|
|
32002
|
+
return kinds;
|
|
32003
|
+
}
|
|
32004
|
+
function resolveLaunchInputs(workflow, request) {
|
|
32005
|
+
const fromContext = request.context ? inputsFromContext(workflow, request.context) : {};
|
|
32006
|
+
const fileField = workflow.inputs.find((f) => f.type === "scope" || f.type === "documents");
|
|
32007
|
+
const fromScope = request.scope && fileField ? { [fileField.name]: request.scope } : {};
|
|
32008
|
+
return { ...fromContext, ...fromScope, ...request.inputs };
|
|
32009
|
+
}
|
|
32010
|
+
function useWorkflowLaunch() {
|
|
32011
|
+
const { skills } = useWorkflowDefinitions();
|
|
32012
|
+
const launch = useCallback(
|
|
32013
|
+
(workflowId, options2 = {}) => openWorkflowLaunch({ workflowId, ...options2 }),
|
|
32014
|
+
[]
|
|
32015
|
+
);
|
|
32016
|
+
const itemsFor = useCallback(
|
|
32017
|
+
(context, options2 = {}) => {
|
|
32018
|
+
const { fileField, ...launchOptions } = options2;
|
|
32019
|
+
return workflowsAccepting(skills, suppliedKinds(context)).filter(
|
|
32020
|
+
(w) => !fileField || w.inputs.some((f) => f.type === fileField && f.context !== void 0)
|
|
32021
|
+
).map((w) => ({
|
|
32022
|
+
id: w.id,
|
|
32023
|
+
title: w.title,
|
|
32024
|
+
icon: w.icon,
|
|
32025
|
+
run: () => launch(w.id, { context, ...launchOptions })
|
|
32026
|
+
}));
|
|
32027
|
+
},
|
|
32028
|
+
[skills, launch]
|
|
32029
|
+
);
|
|
32030
|
+
const scopeItemsFor = useCallback(
|
|
32031
|
+
(scope) => skills.filter((w) => w.inputs.some((f) => f.type === "scope")).map((w) => ({
|
|
32032
|
+
id: w.id,
|
|
32033
|
+
title: w.title,
|
|
32034
|
+
icon: w.icon,
|
|
32035
|
+
run: () => launch(w.id, { scope })
|
|
32036
|
+
})),
|
|
32037
|
+
[skills, launch]
|
|
32038
|
+
);
|
|
32039
|
+
return { launch, itemsFor, scopeItemsFor };
|
|
32040
|
+
}
|
|
32041
|
+
function Inner() {
|
|
32042
|
+
const request = useWorkflowLaunchRequest();
|
|
32043
|
+
const close = closeWorkflowLaunch;
|
|
32044
|
+
const { skills } = useWorkflowDefinitions();
|
|
32045
|
+
const run = useLaunchWorkflow({ landing: request?.landing });
|
|
32046
|
+
const workflow = skills.find((w) => w.id === request?.workflowId);
|
|
32047
|
+
const inputs = useMemo(
|
|
32048
|
+
() => workflow && request ? resolveLaunchInputs(workflow, request) : void 0,
|
|
32049
|
+
[workflow, request]
|
|
32050
|
+
);
|
|
32051
|
+
const complete = Boolean(
|
|
32052
|
+
workflow && inputs && !Object.keys(validateInputs(workflow, { ...defaultInputs(workflow), ...inputs })).length
|
|
32053
|
+
);
|
|
32054
|
+
const autoStart = Boolean(request?.autoStart && complete);
|
|
32055
|
+
useEffect(() => {
|
|
32056
|
+
if (!workflow || !request) {
|
|
32057
|
+
if (request) close();
|
|
32058
|
+
return;
|
|
32059
|
+
}
|
|
32060
|
+
if (!autoStart) return;
|
|
32061
|
+
close();
|
|
32062
|
+
void Promise.resolve(
|
|
32063
|
+
run(buildLaunch(workflow, { ...defaultInputs(workflow), ...inputs }))
|
|
32064
|
+
).catch(() => {
|
|
32065
|
+
});
|
|
32066
|
+
}, [request, workflow, autoStart]);
|
|
32067
|
+
if (!request || !workflow || autoStart) return null;
|
|
32068
|
+
return /* @__PURE__ */ jsx(
|
|
32069
|
+
ConnectedWorkflowStart,
|
|
32070
|
+
{
|
|
32071
|
+
workflows: skills,
|
|
32072
|
+
showTiles: false,
|
|
32073
|
+
landing: request.landing,
|
|
32074
|
+
activeId: workflow.id,
|
|
32075
|
+
onActiveIdChange: (id) => id === null && close(),
|
|
32076
|
+
initialInputsFor: () => inputs
|
|
32077
|
+
}
|
|
32078
|
+
);
|
|
32079
|
+
}
|
|
32080
|
+
function WorkflowLaunchHost() {
|
|
32081
|
+
return useWorkflowLaunchRequest() ? /* @__PURE__ */ jsx(Inner, {}) : null;
|
|
32082
|
+
}
|
|
32083
|
+
var BUILTIN_GLOBAL_DIALOGS = {
|
|
32084
|
+
quota: ({ props, onClose }) => /* @__PURE__ */ jsx(ConnectedQuotaDialog, { info: props, onClose }),
|
|
32085
|
+
welcome: ({ props, onClose }) => /* @__PURE__ */ jsx(ConnectedWelcomeDialog, { open: props !== null, onOpenChange: (open) => !open && onClose() }),
|
|
32086
|
+
grantAccess: () => /* @__PURE__ */ jsx(ConnectedGrantWorkspaceAccessDialog, {}),
|
|
32087
|
+
workflowLaunch: () => /* @__PURE__ */ jsx(WorkflowLaunchHost, {}),
|
|
32088
|
+
transfer: ({ props, onClose }) => /* @__PURE__ */ jsx(
|
|
32089
|
+
ConnectedExportDialog,
|
|
32090
|
+
{
|
|
32091
|
+
open: props !== null,
|
|
32092
|
+
onOpenChange: (open) => !open && onClose(),
|
|
32093
|
+
testId: "workspace-transfer-modal"
|
|
32094
|
+
}
|
|
32095
|
+
),
|
|
32096
|
+
logout: ({ props, onClose }) => /* @__PURE__ */ jsx(ConnectedLogoutDialog, { open: props !== null, onClose })
|
|
32097
|
+
};
|
|
32098
|
+
function GlobalDialog({
|
|
32099
|
+
kind,
|
|
32100
|
+
render: Render
|
|
32101
|
+
}) {
|
|
32102
|
+
const props = useDialogProps(kind);
|
|
32103
|
+
const { closeDialog: closeDialog2 } = useBlocksEnvironment();
|
|
32104
|
+
const [opened, setOpened] = useState(false);
|
|
32105
|
+
if (props !== null && !opened) setOpened(true);
|
|
32106
|
+
if (!opened && props === null) return null;
|
|
32107
|
+
return /* @__PURE__ */ jsx(Suspense, { fallback: null, children: /* @__PURE__ */ jsx(Render, { props, onClose: () => closeDialog2(kind) }) });
|
|
32108
|
+
}
|
|
32109
|
+
function ConnectedGlobalDialogs({ dialogs }) {
|
|
32110
|
+
const renderers = { ...BUILTIN_GLOBAL_DIALOGS, ...dialogs };
|
|
32111
|
+
return /* @__PURE__ */ jsx(Fragment, { children: Object.keys(renderers).map((kind) => {
|
|
32112
|
+
const render = renderers[kind];
|
|
32113
|
+
return render ? /* @__PURE__ */ jsx(GlobalDialog, { kind, render }, kind) : null;
|
|
32114
|
+
}) });
|
|
32115
|
+
}
|
|
31652
32116
|
var ConversationEntity = memo(function ConversationEntity2({
|
|
31653
32117
|
conversation,
|
|
31654
32118
|
variant = "pill",
|
|
@@ -32428,131 +32892,6 @@ function ConnectedThreadTaskBar({
|
|
|
32428
32892
|
}
|
|
32429
32893
|
);
|
|
32430
32894
|
}
|
|
32431
|
-
function useSkillsEnabled() {
|
|
32432
|
-
const { data: userSettings } = useUserSettings();
|
|
32433
|
-
return userSettings?.show_skills ?? false;
|
|
32434
|
-
}
|
|
32435
|
-
|
|
32436
|
-
// src/connection/workflows/useWorkflowDefinitions.ts
|
|
32437
|
-
function useWorkflowDefinitions() {
|
|
32438
|
-
const { data: listings } = useSkills();
|
|
32439
|
-
const usage = useWorkflowUsage();
|
|
32440
|
-
const skillsEnabled = useSkillsEnabled();
|
|
32441
|
-
return useMemo(() => {
|
|
32442
|
-
const { host: builtins, skills: fromServer } = mergeSkillWorkflows(
|
|
32443
|
-
WEB_WORKFLOWS,
|
|
32444
|
-
listings ?? []
|
|
32445
|
-
);
|
|
32446
|
-
const all = [...builtins, ...fromServer];
|
|
32447
|
-
const byId = new Map(all.map((w) => [w.id, w]));
|
|
32448
|
-
const pinned = DASHBOARD_PINNED.flatMap((id) => {
|
|
32449
|
-
const w = byId.get(id);
|
|
32450
|
-
return w ? [w] : [];
|
|
32451
|
-
});
|
|
32452
|
-
return {
|
|
32453
|
-
skills: all,
|
|
32454
|
-
skillsEnabled,
|
|
32455
|
-
start: skillsEnabled ? [...builtins, ...sortByRecentUse(fromServer, usage)] : [],
|
|
32456
|
-
dashboard: [...pinned, ...DASHBOARD_OPERATIONS],
|
|
32457
|
-
forTasks: [CUSTOM_TASK, ...all.filter((w) => w.schedulable), REMIND_TASK]
|
|
32458
|
-
};
|
|
32459
|
-
}, [listings, usage, skillsEnabled]);
|
|
32460
|
-
}
|
|
32461
|
-
function useWorkflowTasks() {
|
|
32462
|
-
const createWork = useCreateWork();
|
|
32463
|
-
const runWorkflow = useRunWorkflow();
|
|
32464
|
-
const startQuery = useStartTaskQuery();
|
|
32465
|
-
const createWorkflow = useCreateWorkflow();
|
|
32466
|
-
const updateConversation = useUpdateConversation();
|
|
32467
|
-
const updateWorkflowMutation = useUpdateWorkflow();
|
|
32468
|
-
const activeWorkspaceId = useArbiSessionState((s) => s.workspaceId);
|
|
32469
|
-
const { openFiles } = useBlocksEnvironment();
|
|
32470
|
-
const { mutateAsync: grant } = useGrantAgentAccess();
|
|
32471
|
-
const grantAgentAccess = useCallback(
|
|
32472
|
-
(agentExtId, workspaceId) => grant({ agentExtId, workspaceId }).then(
|
|
32473
|
-
() => void 0,
|
|
32474
|
-
() => void 0
|
|
32475
|
-
),
|
|
32476
|
-
[grant]
|
|
32477
|
-
);
|
|
32478
|
-
const { data: documents = [] } = useDocuments();
|
|
32479
|
-
const documentTitles = useMemo(
|
|
32480
|
-
() => Object.fromEntries(documents.map((d) => [d.external_id, getDocumentTitle(d, d.external_id)])),
|
|
32481
|
-
[documents]
|
|
32482
|
-
);
|
|
32483
|
-
const create3 = useCallback(
|
|
32484
|
-
async (ctx, forceWorkflow = false) => {
|
|
32485
|
-
const request = taskComposerToCreateRequest(
|
|
32486
|
-
{ ...ctx, documentTitles, plan: ctx.plan ?? null },
|
|
32487
|
-
activeWorkspaceId ?? void 0,
|
|
32488
|
-
forceWorkflow
|
|
32489
|
-
);
|
|
32490
|
-
if (request.kind === "workflow") {
|
|
32491
|
-
const workflow = await createWorkflow.mutateAsync(request.body);
|
|
32492
|
-
const workspaceId = workflow.workspace_ext_id ?? request.body.workspace_ext_id;
|
|
32493
|
-
if (workflow.auth_mode === "scheduled_permanent" && !workflow.on_demand && workflow.agent_ext_id && workspaceId) {
|
|
32494
|
-
await grantAgentAccess(workflow.agent_ext_id, workspaceId);
|
|
32495
|
-
}
|
|
32496
|
-
if (ctx.workflow.documentAction && ctx.values.when === "now" && !forceWorkflow) {
|
|
32497
|
-
const result = await runWorkflow.mutateAsync(workflow.external_id);
|
|
32498
|
-
if (result.error) throw new Error(result.error);
|
|
32499
|
-
openFiles();
|
|
32500
|
-
}
|
|
32501
|
-
return { kind: "workflow", workflow };
|
|
32502
|
-
}
|
|
32503
|
-
if (request.kind === "query") {
|
|
32504
|
-
const { conversationId } = await startQuery.start(request.query);
|
|
32505
|
-
return {
|
|
32506
|
-
kind: "work",
|
|
32507
|
-
task: { external_id: conversationId, title: request.query.task.title ?? null },
|
|
32508
|
-
ran: true
|
|
32509
|
-
};
|
|
32510
|
-
}
|
|
32511
|
-
const task = await createWork.mutateAsync(request.body);
|
|
32512
|
-
return { kind: "work", task, ran: null };
|
|
32513
|
-
},
|
|
32514
|
-
[
|
|
32515
|
-
activeWorkspaceId,
|
|
32516
|
-
createWork,
|
|
32517
|
-
createWorkflow,
|
|
32518
|
-
documentTitles,
|
|
32519
|
-
grantAgentAccess,
|
|
32520
|
-
startQuery,
|
|
32521
|
-
runWorkflow,
|
|
32522
|
-
openFiles
|
|
32523
|
-
]
|
|
32524
|
-
);
|
|
32525
|
-
const update = useCallback(
|
|
32526
|
-
async (task, ctx) => {
|
|
32527
|
-
const patch = taskComposerToUpdateRequest({ ...ctx, plan: ctx.plan ?? null });
|
|
32528
|
-
if (task.is_owner === false) delete patch.shared;
|
|
32529
|
-
await updateConversation.mutateAsync({ conversationId: task.external_id, patch });
|
|
32530
|
-
},
|
|
32531
|
-
[updateConversation]
|
|
32532
|
-
);
|
|
32533
|
-
const updateWorkflow = useCallback(
|
|
32534
|
-
async (workflow, ctx) => {
|
|
32535
|
-
const patch = composerToWorkflowUpdate({ ...ctx, documentTitles, plan: ctx.plan ?? null });
|
|
32536
|
-
if (workflow.is_owner === false) delete patch.shared;
|
|
32537
|
-
const workspaceId = workflow.workspace_ext_id ?? activeWorkspaceId;
|
|
32538
|
-
const updated = await updateWorkflowMutation.mutateAsync({
|
|
32539
|
-
workflowId: workflow.external_id,
|
|
32540
|
-
patch
|
|
32541
|
-
});
|
|
32542
|
-
const agentId = updated.agent_ext_id ?? patch.agent_ext_id ?? workflow.agent_ext_id;
|
|
32543
|
-
if (updated.auth_mode === "scheduled_permanent" && !updated.on_demand && agentId && workspaceId) {
|
|
32544
|
-
await grantAgentAccess(agentId, workspaceId);
|
|
32545
|
-
}
|
|
32546
|
-
},
|
|
32547
|
-
[activeWorkspaceId, documentTitles, grantAgentAccess, updateWorkflowMutation]
|
|
32548
|
-
);
|
|
32549
|
-
return {
|
|
32550
|
-
create: create3,
|
|
32551
|
-
update,
|
|
32552
|
-
updateWorkflow,
|
|
32553
|
-
isPending: createWork.isPending || startQuery.isPending || createWorkflow.isPending || updateConversation.isPending || updateWorkflowMutation.isPending
|
|
32554
|
-
};
|
|
32555
|
-
}
|
|
32556
32895
|
function StandingAccessNote({
|
|
32557
32896
|
agentId,
|
|
32558
32897
|
activeWorkspaceName
|
|
@@ -33255,318 +33594,6 @@ function useRenderTaskPerson() {
|
|
|
33255
33594
|
[byId]
|
|
33256
33595
|
);
|
|
33257
33596
|
}
|
|
33258
|
-
var referencesOf = (inputs) => {
|
|
33259
|
-
const value = inputs.references;
|
|
33260
|
-
return value?.documents ?? [];
|
|
33261
|
-
};
|
|
33262
|
-
var PROMPT_BINDINGS = {
|
|
33263
|
-
[GENERATE_IMAGE_ID]: {
|
|
33264
|
-
attachScope: false,
|
|
33265
|
-
tools: (inputs) => {
|
|
33266
|
-
const aspectRatio = typeof inputs.aspect_ratio === "string" ? inputs.aspect_ratio : "";
|
|
33267
|
-
return {
|
|
33268
|
-
retrieval_chunk: buildRetrievalChunkTool([]),
|
|
33269
|
-
retrieval_full_context: buildRetrievalFullContextTool(referencesOf(inputs)),
|
|
33270
|
-
...aspectRatio && aspectRatio !== IMAGE_ASPECT_AUTO ? {
|
|
33271
|
-
image_generation: {
|
|
33272
|
-
name: "image_generation",
|
|
33273
|
-
description: "image generation",
|
|
33274
|
-
tool_args: { aspect_ratio: aspectRatio },
|
|
33275
|
-
tool_responses: {}
|
|
33276
|
-
}
|
|
33277
|
-
} : {}
|
|
33278
|
-
};
|
|
33279
|
-
}
|
|
33280
|
-
}
|
|
33281
|
-
};
|
|
33282
|
-
|
|
33283
|
-
// src/connection/workflows/useLaunchWorkflow.ts
|
|
33284
|
-
var text = (inputs, name) => {
|
|
33285
|
-
const v = inputs[name];
|
|
33286
|
-
return typeof v === "string" ? v.trim() : "";
|
|
33287
|
-
};
|
|
33288
|
-
function useLaunchWorkflow({ landing: surfaceLanding } = {}) {
|
|
33289
|
-
const { data: documents = [] } = useDocuments();
|
|
33290
|
-
const { data: workspaceTags = [] } = useTags();
|
|
33291
|
-
const tags = useMemo(() => documentScopeLabels(workspaceTags), [workspaceTags]);
|
|
33292
|
-
const createTag = useCreateTag();
|
|
33293
|
-
const updateTag = useUpdateTag();
|
|
33294
|
-
const generate = useGenerateDocTags();
|
|
33295
|
-
const { create: createTask } = useWorkflowTasks();
|
|
33296
|
-
const applyModel = useApplyChatModel();
|
|
33297
|
-
const session = useArbiSessionStore();
|
|
33298
|
-
const { notify: notify17, openFiles, openNewConversation } = useBlocksEnvironment();
|
|
33299
|
-
const annotate = useCallback(
|
|
33300
|
-
async ({ inputs, scope }) => {
|
|
33301
|
-
const description = text(inputs, "description");
|
|
33302
|
-
const name = text(inputs, "name") || deriveAnnotationName(description);
|
|
33303
|
-
const matching = matchWorkflowScope(documents, scope);
|
|
33304
|
-
if (!name || !description || matching.length === 0) return;
|
|
33305
|
-
try {
|
|
33306
|
-
const existing = tags.find((t) => t.name.toLowerCase() === name.toLowerCase());
|
|
33307
|
-
let tagId;
|
|
33308
|
-
if (existing) {
|
|
33309
|
-
tagId = existing.external_id;
|
|
33310
|
-
await updateTag.mutateAsync({
|
|
33311
|
-
tagId,
|
|
33312
|
-
change: { instruction: description }
|
|
33313
|
-
});
|
|
33314
|
-
} else {
|
|
33315
|
-
const created = await createTag.mutateAsync({
|
|
33316
|
-
name,
|
|
33317
|
-
tagType: { type: "text", options: [] },
|
|
33318
|
-
shared: true,
|
|
33319
|
-
instruction: description
|
|
33320
|
-
});
|
|
33321
|
-
const createdId = created?.external_id;
|
|
33322
|
-
if (!createdId) throw new Error("tag create returned no id");
|
|
33323
|
-
tagId = createdId;
|
|
33324
|
-
}
|
|
33325
|
-
const docIds = matching.map((d) => d.external_id);
|
|
33326
|
-
await generate.mutateAsync({ tagIds: [tagId], docIds, overwrite: true });
|
|
33327
|
-
const filters = {};
|
|
33328
|
-
scope.folders.forEach((folder) => {
|
|
33329
|
-
filters[folder === "" ? "folder:none" : `folder:${folder}`] = "include";
|
|
33330
|
-
});
|
|
33331
|
-
scope.labels.forEach((labelId) => {
|
|
33332
|
-
filters[labelId] = "include";
|
|
33333
|
-
});
|
|
33334
|
-
openFiles({ select: docIds, filters });
|
|
33335
|
-
} catch (error) {
|
|
33336
|
-
notify17("Could not start the annotation", "error");
|
|
33337
|
-
throw error;
|
|
33338
|
-
}
|
|
33339
|
-
},
|
|
33340
|
-
[documents, tags, createTag, updateTag, generate, openFiles, notify17]
|
|
33341
|
-
);
|
|
33342
|
-
return useCallback(
|
|
33343
|
-
async (launch) => {
|
|
33344
|
-
const { workflow, inputs, scope, agentId } = launch;
|
|
33345
|
-
if (workflow.run.kind === "operation") {
|
|
33346
|
-
if (workflow.id === ANNOTATE_ID) {
|
|
33347
|
-
await annotate(launch);
|
|
33348
|
-
recordWorkflowUse(workflow.id);
|
|
33349
|
-
return;
|
|
33350
|
-
}
|
|
33351
|
-
throw new Error(`No host handler for workflow "${workflow.id}"`);
|
|
33352
|
-
}
|
|
33353
|
-
const documentTitles = Object.fromEntries(
|
|
33354
|
-
documents.map((d) => [d.external_id, getDocumentTitle(d, d.external_id)])
|
|
33355
|
-
);
|
|
33356
|
-
const prompt = composeWorkflowPrompt(workflow, inputs, { documentTitles });
|
|
33357
|
-
if (!prompt) return;
|
|
33358
|
-
recordWorkflowUse(workflow.id);
|
|
33359
|
-
if (agentId) {
|
|
33360
|
-
try {
|
|
33361
|
-
const created = await createTask({
|
|
33362
|
-
workflow,
|
|
33363
|
-
values: {
|
|
33364
|
-
assignee: "agent",
|
|
33365
|
-
workflowId: workflow.id,
|
|
33366
|
-
inputs,
|
|
33367
|
-
when: "now",
|
|
33368
|
-
runAt: "",
|
|
33369
|
-
rrule: "",
|
|
33370
|
-
timezone: "UTC",
|
|
33371
|
-
eventKind: "",
|
|
33372
|
-
afterTaskId: "",
|
|
33373
|
-
parentTaskId: "",
|
|
33374
|
-
shared: true,
|
|
33375
|
-
description: "",
|
|
33376
|
-
dueAt: "",
|
|
33377
|
-
agentId,
|
|
33378
|
-
name: "",
|
|
33379
|
-
notifyOnComplete: true,
|
|
33380
|
-
access: "ask_each_run"
|
|
33381
|
-
}
|
|
33382
|
-
});
|
|
33383
|
-
const ran = created.kind === "work" ? created.ran : null;
|
|
33384
|
-
const title = created.kind === "work" ? created.task.title : created.workflow.name;
|
|
33385
|
-
notify17(
|
|
33386
|
-
ran === false ? "Task created, but the run could not start" : `Running \u201C${title ?? workflow.title}\u201D`,
|
|
33387
|
-
ran === false ? "warning" : "success"
|
|
33388
|
-
);
|
|
33389
|
-
} catch (error) {
|
|
33390
|
-
notify17(
|
|
33391
|
-
error instanceof Error && error.message.startsWith("Open a workspace") ? error.message : "Could not start the run",
|
|
33392
|
-
"error"
|
|
33393
|
-
);
|
|
33394
|
-
throw error;
|
|
33395
|
-
}
|
|
33396
|
-
return;
|
|
33397
|
-
}
|
|
33398
|
-
const landing = launch.landing ?? surfaceLanding ?? workflow.landing;
|
|
33399
|
-
const inPlace = landing === "current-chat";
|
|
33400
|
-
const binding = PROMPT_BINDINGS[workflow.id];
|
|
33401
|
-
if (!inPlace) openNewConversation();
|
|
33402
|
-
if (binding?.attachScope !== false && !isEmptyWorkflowScope(scope)) {
|
|
33403
|
-
const ids = matchWorkflowScope(documents, scope).map((d) => d.external_id);
|
|
33404
|
-
if (ids.length > 0) {
|
|
33405
|
-
session.setConversationDocuments(
|
|
33406
|
-
inPlace ? session.getState().conversationId ?? "new" : "new",
|
|
33407
|
-
ids.map((docId) => ({ docId, isPinned: false }))
|
|
33408
|
-
);
|
|
33409
|
-
}
|
|
33410
|
-
}
|
|
33411
|
-
if (workflow.model) void applyModel(workflow.model, `Workflow - ${workflow.title}`);
|
|
33412
|
-
session.setPendingTools(binding?.tools?.(inputs) ?? null);
|
|
33413
|
-
session.setDraft(prompt);
|
|
33414
|
-
session.setAutoSendDraft(true);
|
|
33415
|
-
},
|
|
33416
|
-
[
|
|
33417
|
-
annotate,
|
|
33418
|
-
applyModel,
|
|
33419
|
-
createTask,
|
|
33420
|
-
documents,
|
|
33421
|
-
surfaceLanding,
|
|
33422
|
-
session,
|
|
33423
|
-
notify17,
|
|
33424
|
-
openNewConversation
|
|
33425
|
-
]
|
|
33426
|
-
);
|
|
33427
|
-
}
|
|
33428
|
-
function suppliedKinds(context) {
|
|
33429
|
-
const kinds = [];
|
|
33430
|
-
if (context.documents?.length) kinds.push("documents");
|
|
33431
|
-
if (context.selection) kinds.push("selection");
|
|
33432
|
-
if (context.image) kinds.push("image");
|
|
33433
|
-
return kinds;
|
|
33434
|
-
}
|
|
33435
|
-
function resolveLaunchInputs(workflow, request) {
|
|
33436
|
-
const fromContext = request.context ? inputsFromContext(workflow, request.context) : {};
|
|
33437
|
-
const fileField = workflow.inputs.find((f) => f.type === "scope" || f.type === "documents");
|
|
33438
|
-
const fromScope = request.scope && fileField ? { [fileField.name]: request.scope } : {};
|
|
33439
|
-
return { ...fromContext, ...fromScope, ...request.inputs };
|
|
33440
|
-
}
|
|
33441
|
-
function useWorkflowLaunch() {
|
|
33442
|
-
const { skills } = useWorkflowDefinitions();
|
|
33443
|
-
const launch = useCallback(
|
|
33444
|
-
(workflowId, options2 = {}) => openWorkflowLaunch({ workflowId, ...options2 }),
|
|
33445
|
-
[]
|
|
33446
|
-
);
|
|
33447
|
-
const itemsFor = useCallback(
|
|
33448
|
-
(context, options2 = {}) => {
|
|
33449
|
-
const { fileField, ...launchOptions } = options2;
|
|
33450
|
-
return workflowsAccepting(skills, suppliedKinds(context)).filter(
|
|
33451
|
-
(w) => !fileField || w.inputs.some((f) => f.type === fileField && f.context !== void 0)
|
|
33452
|
-
).map((w) => ({
|
|
33453
|
-
id: w.id,
|
|
33454
|
-
title: w.title,
|
|
33455
|
-
icon: w.icon,
|
|
33456
|
-
run: () => launch(w.id, { context, ...launchOptions })
|
|
33457
|
-
}));
|
|
33458
|
-
},
|
|
33459
|
-
[skills, launch]
|
|
33460
|
-
);
|
|
33461
|
-
const scopeItemsFor = useCallback(
|
|
33462
|
-
(scope) => skills.filter((w) => w.inputs.some((f) => f.type === "scope")).map((w) => ({
|
|
33463
|
-
id: w.id,
|
|
33464
|
-
title: w.title,
|
|
33465
|
-
icon: w.icon,
|
|
33466
|
-
run: () => launch(w.id, { scope })
|
|
33467
|
-
})),
|
|
33468
|
-
[skills, launch]
|
|
33469
|
-
);
|
|
33470
|
-
return { launch, itemsFor, scopeItemsFor };
|
|
33471
|
-
}
|
|
33472
|
-
var AGENT_LABELS = { label: "Who this runs for", myAssistant: "Me (your own assistant)" };
|
|
33473
|
-
function ConnectedWorkflowStart({
|
|
33474
|
-
workflows,
|
|
33475
|
-
landing,
|
|
33476
|
-
addFilesAction,
|
|
33477
|
-
...rest
|
|
33478
|
-
}) {
|
|
33479
|
-
const onLaunch = useLaunchWorkflow({ landing });
|
|
33480
|
-
const { openUpload } = useBlocksEnvironment();
|
|
33481
|
-
const { data: workspaceTags = [] } = useTags();
|
|
33482
|
-
const tags = useMemo(() => documentScopeLabels(workspaceTags), [workspaceTags]);
|
|
33483
|
-
const fieldPlaceholder = useCallback(
|
|
33484
|
-
(field, inputs, workflow) => {
|
|
33485
|
-
if (workflow.id !== ANNOTATE_ID || field.name !== "name") return void 0;
|
|
33486
|
-
const derived = deriveAnnotationName(String(inputs.description ?? ""));
|
|
33487
|
-
return derived ? `Otherwise \u201C${derived}\u201D` : "Taken from the description";
|
|
33488
|
-
},
|
|
33489
|
-
[]
|
|
33490
|
-
);
|
|
33491
|
-
return /* @__PURE__ */ jsx(
|
|
33492
|
-
ConnectedWorkflowLauncher,
|
|
33493
|
-
{
|
|
33494
|
-
...rest,
|
|
33495
|
-
workflows,
|
|
33496
|
-
onLaunch,
|
|
33497
|
-
renderIcon: renderWorkflowIcon,
|
|
33498
|
-
onAddFiles: openUpload,
|
|
33499
|
-
agentLabels: AGENT_LABELS,
|
|
33500
|
-
addFilesAction,
|
|
33501
|
-
fieldPlaceholder,
|
|
33502
|
-
submitLabel: ({ workflow, matchedCount }) => workflow.id === ANNOTATE_ID && matchedCount !== null ? `Annotate ${matchedCount} document${matchedCount !== 1 ? "s" : ""}` : void 0,
|
|
33503
|
-
renderNotice: ({ workflow, inputs }) => {
|
|
33504
|
-
if (workflow.id !== ANNOTATE_ID) return null;
|
|
33505
|
-
const name = String(inputs.name ?? "").trim() || deriveAnnotationName(String(inputs.description ?? ""));
|
|
33506
|
-
const existing = name ? tags.find((t) => t.name.toLowerCase() === name.toLowerCase()) : void 0;
|
|
33507
|
-
if (!existing) return null;
|
|
33508
|
-
return /* @__PURE__ */ jsxs(
|
|
33509
|
-
"div",
|
|
33510
|
-
{
|
|
33511
|
-
className: "flex items-start gap-2 rounded-md border border-amber-500/40 bg-amber-500/10 px-3 py-2 text-sm text-amber-800 dark:text-amber-200",
|
|
33512
|
-
role: "status",
|
|
33513
|
-
"data-testid": "workflow-existing-label-warning",
|
|
33514
|
-
children: [
|
|
33515
|
-
/* @__PURE__ */ jsx(TriangleAlert, { className: "mt-0.5 size-4 shrink-0 text-amber-500" }),
|
|
33516
|
-
/* @__PURE__ */ jsxs("span", { children: [
|
|
33517
|
-
"An annotation called ",
|
|
33518
|
-
/* @__PURE__ */ jsx("span", { className: "font-medium", children: existing.name }),
|
|
33519
|
-
" already exists. Annotating will overwrite its description and the current cell values for the selected files."
|
|
33520
|
-
] })
|
|
33521
|
-
]
|
|
33522
|
-
}
|
|
33523
|
-
);
|
|
33524
|
-
}
|
|
33525
|
-
}
|
|
33526
|
-
);
|
|
33527
|
-
}
|
|
33528
|
-
function Inner() {
|
|
33529
|
-
const request = useWorkflowLaunchRequest();
|
|
33530
|
-
const close = closeWorkflowLaunch;
|
|
33531
|
-
const { skills } = useWorkflowDefinitions();
|
|
33532
|
-
const run = useLaunchWorkflow({ landing: request?.landing });
|
|
33533
|
-
const workflow = skills.find((w) => w.id === request?.workflowId);
|
|
33534
|
-
const inputs = useMemo(
|
|
33535
|
-
() => workflow && request ? resolveLaunchInputs(workflow, request) : void 0,
|
|
33536
|
-
[workflow, request]
|
|
33537
|
-
);
|
|
33538
|
-
const complete = Boolean(
|
|
33539
|
-
workflow && inputs && !Object.keys(validateInputs(workflow, { ...defaultInputs(workflow), ...inputs })).length
|
|
33540
|
-
);
|
|
33541
|
-
const autoStart = Boolean(request?.autoStart && complete);
|
|
33542
|
-
useEffect(() => {
|
|
33543
|
-
if (!workflow || !request) {
|
|
33544
|
-
if (request) close();
|
|
33545
|
-
return;
|
|
33546
|
-
}
|
|
33547
|
-
if (!autoStart) return;
|
|
33548
|
-
close();
|
|
33549
|
-
void Promise.resolve(
|
|
33550
|
-
run(buildLaunch(workflow, { ...defaultInputs(workflow), ...inputs }))
|
|
33551
|
-
).catch(() => {
|
|
33552
|
-
});
|
|
33553
|
-
}, [request, workflow, autoStart]);
|
|
33554
|
-
if (!request || !workflow || autoStart) return null;
|
|
33555
|
-
return /* @__PURE__ */ jsx(
|
|
33556
|
-
ConnectedWorkflowStart,
|
|
33557
|
-
{
|
|
33558
|
-
workflows: skills,
|
|
33559
|
-
showTiles: false,
|
|
33560
|
-
landing: request.landing,
|
|
33561
|
-
activeId: workflow.id,
|
|
33562
|
-
onActiveIdChange: (id) => id === null && close(),
|
|
33563
|
-
initialInputsFor: () => inputs
|
|
33564
|
-
}
|
|
33565
|
-
);
|
|
33566
|
-
}
|
|
33567
|
-
function WorkflowLaunchHost() {
|
|
33568
|
-
return useWorkflowLaunchRequest() ? /* @__PURE__ */ jsx(Inner, {}) : null;
|
|
33569
|
-
}
|
|
33570
33597
|
var START_VISIBLE = 8;
|
|
33571
33598
|
var START_SEARCH_ABOVE = 8;
|
|
33572
33599
|
function ConnectedConversationStart() {
|
|
@@ -35775,7 +35802,7 @@ function areMessagesEqual(prevProps, nextProps) {
|
|
|
35775
35802
|
}
|
|
35776
35803
|
var ConnectedMessage = React9.memo(MessageComponent, areMessagesEqual);
|
|
35777
35804
|
var VERSION_LABELS = {
|
|
35778
|
-
branchOf: (
|
|
35805
|
+
branchOf: (current, total) => `Version ${current} of ${total}`,
|
|
35779
35806
|
previousBranch: "Previous version",
|
|
35780
35807
|
nextBranch: "Next version"
|
|
35781
35808
|
};
|
|
@@ -35922,8 +35949,8 @@ var measureMessageElement = typeof window !== "undefined" ? (element) => {
|
|
|
35922
35949
|
if (id) rememberRowHeight(id, height);
|
|
35923
35950
|
return height;
|
|
35924
35951
|
} : void 0;
|
|
35925
|
-
function resolveScrollContainer(
|
|
35926
|
-
if (
|
|
35952
|
+
function resolveScrollContainer(current) {
|
|
35953
|
+
if (current?.isConnected) return current;
|
|
35927
35954
|
return document.querySelector("[data-scroll-container]") || document.documentElement;
|
|
35928
35955
|
}
|
|
35929
35956
|
function stripThinking(content) {
|
|
@@ -39928,6 +39955,6 @@ function ConnectedAccountAccessBadge() {
|
|
|
39928
39955
|
] });
|
|
39929
39956
|
}
|
|
39930
39957
|
|
|
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 };
|
|
39958
|
+
export { AddAddonDialog, AddFromAccountsButton, AgentBarShell, AgentControlBar, AgentSteps, AnswerTable, AskAgainContext, BACKFILL_OPTIONS, BUILTIN_GLOBAL_DIALOGS, 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, ConnectedGlobalDialogs, 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 };
|
|
39932
39959
|
//# sourceMappingURL=index.js.map
|
|
39933
39960
|
//# sourceMappingURL=index.js.map
|