@arbidocs/blocks 0.5.62 → 0.5.63
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/README.md +7 -0
- package/dist/{ConnectedCallDock-CRECGH7K.js → ConnectedCallDock-DEAEFUUD.js} +5 -5
- package/dist/{ConnectedCallDock-CRECGH7K.js.map → ConnectedCallDock-DEAEFUUD.js.map} +1 -1
- package/dist/{ConnectedCallDock-RGDNX76B.cjs → ConnectedCallDock-GJAGY75U.cjs} +14 -14
- package/dist/{ConnectedCallDock-RGDNX76B.cjs.map → ConnectedCallDock-GJAGY75U.cjs.map} +1 -1
- package/dist/{ConnectedCallRoom-Z2M6QRJJ.js → ConnectedCallRoom-DI7UYRHE.js} +5 -5
- package/dist/{ConnectedCallRoom-Z2M6QRJJ.js.map → ConnectedCallRoom-DI7UYRHE.js.map} +1 -1
- package/dist/{ConnectedCallRoom-LM7UNH34.cjs → ConnectedCallRoom-KLE2PCMQ.cjs} +6 -6
- package/dist/{ConnectedCallRoom-LM7UNH34.cjs.map → ConnectedCallRoom-KLE2PCMQ.cjs.map} +1 -1
- package/dist/{ConnectedDocumentViewer-ELA7R4RJ.js → ConnectedDocumentViewer-7VKAM6KD.js} +8 -8
- package/dist/{ConnectedDocumentViewer-ELA7R4RJ.js.map → ConnectedDocumentViewer-7VKAM6KD.js.map} +1 -1
- package/dist/{ConnectedDocumentViewer-6SFJWKXN.cjs → ConnectedDocumentViewer-FGQ27H4B.cjs} +9 -9
- package/dist/{ConnectedDocumentViewer-6SFJWKXN.cjs.map → ConnectedDocumentViewer-FGQ27H4B.cjs.map} +1 -1
- package/dist/{ConnectedNativeDocxComparison-3MCCETF5.js → ConnectedNativeDocxComparison-FPW3BNBN.js} +8 -8
- package/dist/ConnectedNativeDocxComparison-FPW3BNBN.js.map +1 -0
- package/dist/{ConnectedNativeDocxComparison-XZIRCESL.cjs → ConnectedNativeDocxComparison-HJ4FTVH6.cjs} +9 -9
- package/dist/ConnectedNativeDocxComparison-HJ4FTVH6.cjs.map +1 -0
- package/dist/{ConnectedNativeDocxEditor-YE6KA53Q.cjs → ConnectedNativeDocxEditor-PF46MU5H.cjs} +9 -9
- package/dist/ConnectedNativeDocxEditor-PF46MU5H.cjs.map +1 -0
- package/dist/{ConnectedNativeDocxEditor-FGW35PIL.js → ConnectedNativeDocxEditor-S7NJMDSU.js} +7 -7
- package/dist/ConnectedNativeDocxEditor-S7NJMDSU.js.map +1 -0
- package/dist/{ConnectedStreamedWordArtifact-N6YRKWDH.js → ConnectedStreamedWordArtifact-5MHLV24V.js} +8 -8
- package/dist/ConnectedStreamedWordArtifact-5MHLV24V.js.map +1 -0
- package/dist/{ConnectedStreamedWordArtifact-ROPYU3LE.cjs → ConnectedStreamedWordArtifact-LNGW7YGV.cjs} +9 -9
- package/dist/ConnectedStreamedWordArtifact-LNGW7YGV.cjs.map +1 -0
- package/dist/{DocumentReviewCard-SYBCU7NL.js → DocumentReviewCard-5U3TGJZA.js} +7 -7
- package/dist/{DocumentReviewCard-SYBCU7NL.js.map → DocumentReviewCard-5U3TGJZA.js.map} +1 -1
- package/dist/{DocumentReviewCard-YOZMWE33.cjs → DocumentReviewCard-VFNMJSK7.cjs} +7 -7
- package/dist/{DocumentReviewCard-YOZMWE33.cjs.map → DocumentReviewCard-VFNMJSK7.cjs.map} +1 -1
- package/dist/{WorkspaceTableView-4DGONK5A.cjs → WorkspaceTableView-DHMCJRC6.cjs} +7 -7
- package/dist/{WorkspaceTableView-4DGONK5A.cjs.map → WorkspaceTableView-DHMCJRC6.cjs.map} +1 -1
- package/dist/{WorkspaceTableView-ZCUYOMSL.js → WorkspaceTableView-EH5CEB44.js} +5 -5
- package/dist/{WorkspaceTableView-ZCUYOMSL.js.map → WorkspaceTableView-EH5CEB44.js.map} +1 -1
- package/dist/agents/index.cjs +283 -283
- package/dist/agents/index.js +5 -5
- package/dist/agents/tasks/WorkflowsTable.d.ts +2 -1
- package/dist/calls/index.cjs +132 -132
- package/dist/calls/index.js +8 -8
- package/dist/{chunk-57FBBWU2.cjs → chunk-23ACBETH.cjs} +4 -4
- package/dist/{chunk-57FBBWU2.cjs.map → chunk-23ACBETH.cjs.map} +1 -1
- package/dist/{chunk-D34YIJGE.js → chunk-2SLDVFOZ.js} +4 -4
- package/dist/{chunk-D34YIJGE.js.map → chunk-2SLDVFOZ.js.map} +1 -1
- package/dist/{chunk-6SWK5QCT.cjs → chunk-33PWCTND.cjs} +21 -21
- package/dist/{chunk-6SWK5QCT.cjs.map → chunk-33PWCTND.cjs.map} +1 -1
- package/dist/{chunk-LZROSRGK.cjs → chunk-3X37I6QE.cjs} +10 -10
- package/dist/{chunk-LZROSRGK.cjs.map → chunk-3X37I6QE.cjs.map} +1 -1
- package/dist/{chunk-3VCVMW5X.cjs → chunk-4RJPTXUQ.cjs} +5 -5
- package/dist/{chunk-3VCVMW5X.cjs.map → chunk-4RJPTXUQ.cjs.map} +1 -1
- package/dist/{chunk-GWTKLPBJ.js → chunk-5CWBAINB.js} +3 -3
- package/dist/{chunk-GWTKLPBJ.js.map → chunk-5CWBAINB.js.map} +1 -1
- package/dist/{chunk-X5GO56JN.js → chunk-64DMXUYS.js} +3 -3
- package/dist/{chunk-X5GO56JN.js.map → chunk-64DMXUYS.js.map} +1 -1
- package/dist/{chunk-PBIFISDD.js → chunk-7P24MJQN.js} +3 -3
- package/dist/{chunk-PBIFISDD.js.map → chunk-7P24MJQN.js.map} +1 -1
- package/dist/{chunk-CLOYC6QG.cjs → chunk-7YHGLYRJ.cjs} +67 -67
- package/dist/{chunk-CLOYC6QG.cjs.map → chunk-7YHGLYRJ.cjs.map} +1 -1
- package/dist/{chunk-2CH22I7M.js → chunk-AMP7KX7F.js} +3 -3
- package/dist/{chunk-2CH22I7M.js.map → chunk-AMP7KX7F.js.map} +1 -1
- package/dist/{chunk-UQAHDGYH.cjs → chunk-CCSF7RI4.cjs} +5 -5
- package/dist/{chunk-UQAHDGYH.cjs.map → chunk-CCSF7RI4.cjs.map} +1 -1
- package/dist/{chunk-QK546T4C.cjs → chunk-CKNUL4LM.cjs} +3 -3
- package/dist/{chunk-QK546T4C.cjs.map → chunk-CKNUL4LM.cjs.map} +1 -1
- package/dist/{chunk-6USEJFPC.cjs → chunk-COZDIUG7.cjs} +24 -24
- package/dist/chunk-COZDIUG7.cjs.map +1 -0
- package/dist/{chunk-SLX2YIUA.cjs → chunk-EOIJ5JYP.cjs} +4 -4
- package/dist/{chunk-SLX2YIUA.cjs.map → chunk-EOIJ5JYP.cjs.map} +1 -1
- package/dist/{chunk-LMKEDVEB.cjs → chunk-F73EZQT4.cjs} +4 -4
- package/dist/{chunk-LMKEDVEB.cjs.map → chunk-F73EZQT4.cjs.map} +1 -1
- package/dist/{chunk-J55WDXIR.js → chunk-G4OZQFES.js} +3 -3
- package/dist/{chunk-J55WDXIR.js.map → chunk-G4OZQFES.js.map} +1 -1
- package/dist/{chunk-JHLIVEJI.js → chunk-GRDLCRNL.js} +5 -5
- package/dist/{chunk-JHLIVEJI.js.map → chunk-GRDLCRNL.js.map} +1 -1
- package/dist/{chunk-XPB6KMPY.cjs → chunk-HVOPUYAG.cjs} +19 -19
- package/dist/{chunk-XPB6KMPY.cjs.map → chunk-HVOPUYAG.cjs.map} +1 -1
- package/dist/{chunk-TL7SHXBN.js → chunk-IC6SBDYA.js} +3 -3
- package/dist/{chunk-TL7SHXBN.js.map → chunk-IC6SBDYA.js.map} +1 -1
- package/dist/{chunk-QTZ25F5G.js → chunk-IFLFLP4K.js} +5 -5
- package/dist/{chunk-QTZ25F5G.js.map → chunk-IFLFLP4K.js.map} +1 -1
- package/dist/{chunk-C3SLFANS.js → chunk-ITS3USZ3.js} +5 -5
- package/dist/{chunk-C3SLFANS.js.map → chunk-ITS3USZ3.js.map} +1 -1
- package/dist/{chunk-SEH4ZDN5.js → chunk-IUFS3AYQ.js} +7 -7
- package/dist/{chunk-SEH4ZDN5.js.map → chunk-IUFS3AYQ.js.map} +1 -1
- package/dist/{chunk-3IRJ4MTF.cjs → chunk-J25NN3XJ.cjs} +14 -14
- package/dist/{chunk-3IRJ4MTF.cjs.map → chunk-J25NN3XJ.cjs.map} +1 -1
- package/dist/{chunk-TX4CIWH5.cjs → chunk-JBL4PPEE.cjs} +6 -6
- package/dist/{chunk-TX4CIWH5.cjs.map → chunk-JBL4PPEE.cjs.map} +1 -1
- package/dist/{chunk-QUSDMOSF.js → chunk-JWRTUYLC.js} +3 -3
- package/dist/{chunk-QUSDMOSF.js.map → chunk-JWRTUYLC.js.map} +1 -1
- package/dist/{chunk-XGJU2Y5N.cjs → chunk-LBKTTQUR.cjs} +7 -7
- package/dist/{chunk-XGJU2Y5N.cjs.map → chunk-LBKTTQUR.cjs.map} +1 -1
- package/dist/{chunk-SMM32PL6.cjs → chunk-M42XWNS6.cjs} +4 -4
- package/dist/{chunk-SMM32PL6.cjs.map → chunk-M42XWNS6.cjs.map} +1 -1
- package/dist/{chunk-F3VIBHH2.cjs → chunk-MAKTAR7H.cjs} +18 -18
- package/dist/{chunk-F3VIBHH2.cjs.map → chunk-MAKTAR7H.cjs.map} +1 -1
- package/dist/{chunk-2TOM5FT5.js → chunk-NDVLCOWS.js} +12 -12
- package/dist/chunk-NDVLCOWS.js.map +1 -0
- package/dist/{chunk-UJI52BUA.js → chunk-OI4DL2DX.js} +3 -3
- package/dist/{chunk-UJI52BUA.js.map → chunk-OI4DL2DX.js.map} +1 -1
- package/dist/{chunk-7BH55CGS.js → chunk-OZL5ABLF.js} +4 -4
- package/dist/{chunk-7BH55CGS.js.map → chunk-OZL5ABLF.js.map} +1 -1
- package/dist/{chunk-7S3CTSF7.js → chunk-PKDPQS6Z.js} +3 -3
- package/dist/{chunk-7S3CTSF7.js.map → chunk-PKDPQS6Z.js.map} +1 -1
- package/dist/{chunk-LIOT6WLN.js → chunk-PVPGD6QR.js} +3 -3
- package/dist/{chunk-LIOT6WLN.js.map → chunk-PVPGD6QR.js.map} +1 -1
- package/dist/{chunk-HISU5HLW.js → chunk-QUZPQWPX.js} +3 -3
- package/dist/{chunk-HISU5HLW.js.map → chunk-QUZPQWPX.js.map} +1 -1
- package/dist/{chunk-RCBGX4IC.cjs → chunk-RGPKW6KQ.cjs} +4 -4
- package/dist/{chunk-RCBGX4IC.cjs.map → chunk-RGPKW6KQ.cjs.map} +1 -1
- package/dist/{chunk-VFBQBWZI.js → chunk-TAI23FCY.js} +46 -43
- package/dist/chunk-TAI23FCY.js.map +1 -0
- package/dist/{chunk-ONML6J5O.cjs → chunk-UDMII47W.cjs} +8 -8
- package/dist/{chunk-ONML6J5O.cjs.map → chunk-UDMII47W.cjs.map} +1 -1
- package/dist/{chunk-ABEKUV6L.js → chunk-VDXKB4WK.js} +82 -77
- package/dist/chunk-VDXKB4WK.js.map +1 -0
- package/dist/{chunk-MEMWZ72Y.cjs → chunk-WVEFRQSW.cjs} +81 -76
- package/dist/chunk-WVEFRQSW.cjs.map +1 -0
- package/dist/{chunk-PJW2IOPZ.cjs → chunk-X3JJTHQ4.cjs} +51 -51
- package/dist/{chunk-PJW2IOPZ.cjs.map → chunk-X3JJTHQ4.cjs.map} +1 -1
- package/dist/{chunk-4OJGFYB5.cjs → chunk-Y6ZNWC7E.cjs} +47 -44
- package/dist/chunk-Y6ZNWC7E.cjs.map +1 -0
- package/dist/{chunk-B63TSC3W.js → chunk-ZZTH27G7.js} +3 -3
- package/dist/{chunk-B63TSC3W.js.map → chunk-ZZTH27G7.js.map} +1 -1
- package/dist/connect/docx.cjs +13 -13
- package/dist/connect/docx.js +9 -9
- package/dist/connect/index.cjs +694 -694
- package/dist/connect/index.js +36 -36
- package/dist/connect/viewer.cjs +7 -7
- package/dist/connect/viewer.js +6 -6
- package/dist/connection/workflows/ConnectedWorkflowsPage.d.ts +7 -1
- package/dist/dashboards/index.cjs +1 -1
- package/dist/dashboards/index.js +1 -1
- package/dist/document-tools/index.cjs +17 -17
- package/dist/document-tools/index.js +2 -2
- package/dist/embed/index.cjs +13 -13
- package/dist/embed/index.js +10 -10
- package/dist/facts/index.cjs +40 -40
- package/dist/facts/index.js +4 -4
- package/dist/files/index.cjs +1 -1
- package/dist/files/index.js +1 -1
- package/dist/index.cjs +434 -434
- package/dist/index.js +13 -13
- package/dist/settings/index.cjs +156 -156
- package/dist/settings/index.js +2 -2
- package/dist/shell/TabHeader.d.ts +6 -1
- package/dist/shell/index.cjs +3 -3
- package/dist/shell/index.js +1 -1
- package/dist/site/index.cjs +22 -22
- package/dist/site/index.js +2 -2
- package/dist/studio/index.cjs +3 -3
- package/dist/studio/index.js +3 -3
- package/dist/workflow-canvas/index.cjs +64 -40
- package/dist/workflow-canvas/index.cjs.map +1 -1
- package/dist/workflow-canvas/index.js +49 -25
- package/dist/workflow-canvas/index.js.map +1 -1
- package/node_modules/@arbidocs/coedit/package.json +1 -1
- package/package.json +5 -5
- package/dist/ConnectedNativeDocxComparison-3MCCETF5.js.map +0 -1
- package/dist/ConnectedNativeDocxComparison-XZIRCESL.cjs.map +0 -1
- package/dist/ConnectedNativeDocxEditor-FGW35PIL.js.map +0 -1
- package/dist/ConnectedNativeDocxEditor-YE6KA53Q.cjs.map +0 -1
- package/dist/ConnectedStreamedWordArtifact-N6YRKWDH.js.map +0 -1
- package/dist/ConnectedStreamedWordArtifact-ROPYU3LE.cjs.map +0 -1
- package/dist/chunk-2TOM5FT5.js.map +0 -1
- package/dist/chunk-4OJGFYB5.cjs.map +0 -1
- package/dist/chunk-6USEJFPC.cjs.map +0 -1
- package/dist/chunk-ABEKUV6L.js.map +0 -1
- package/dist/chunk-MEMWZ72Y.cjs.map +0 -1
- package/dist/chunk-VFBQBWZI.js.map +0 -1
package/dist/connect/index.cjs
CHANGED
|
@@ -1,55 +1,55 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var chunkCCSF7RI4_cjs = require('../chunk-CCSF7RI4.cjs');
|
|
5
5
|
var chunkZ7DJS6M3_cjs = require('../chunk-Z7DJS6M3.cjs');
|
|
6
6
|
var chunkSEVFIBF3_cjs = require('../chunk-SEVFIBF3.cjs');
|
|
7
|
-
var
|
|
7
|
+
var chunkX3JJTHQ4_cjs = require('../chunk-X3JJTHQ4.cjs');
|
|
8
8
|
var chunkE5625KT2_cjs = require('../chunk-E5625KT2.cjs');
|
|
9
9
|
var chunk2GSZG6KA_cjs = require('../chunk-2GSZG6KA.cjs');
|
|
10
10
|
var chunkHYAYXLIZ_cjs = require('../chunk-HYAYXLIZ.cjs');
|
|
11
11
|
var chunkKWJW5TMH_cjs = require('../chunk-KWJW5TMH.cjs');
|
|
12
12
|
var chunkPSIKUQYM_cjs = require('../chunk-PSIKUQYM.cjs');
|
|
13
|
-
var
|
|
14
|
-
var
|
|
13
|
+
var chunk3X37I6QE_cjs = require('../chunk-3X37I6QE.cjs');
|
|
14
|
+
var chunkLBKTTQUR_cjs = require('../chunk-LBKTTQUR.cjs');
|
|
15
15
|
var chunkEGJ7WJ6Q_cjs = require('../chunk-EGJ7WJ6Q.cjs');
|
|
16
|
-
var
|
|
16
|
+
var chunkF73EZQT4_cjs = require('../chunk-F73EZQT4.cjs');
|
|
17
|
+
var chunkXFL67STW_cjs = require('../chunk-XFL67STW.cjs');
|
|
17
18
|
var chunkOM5IVNEW_cjs = require('../chunk-OM5IVNEW.cjs');
|
|
18
19
|
var chunkOU3RGQFX_cjs = require('../chunk-OU3RGQFX.cjs');
|
|
19
20
|
require('../chunk-REH7PX3N.cjs');
|
|
20
21
|
require('../chunk-H32DV7XS.cjs');
|
|
21
|
-
var
|
|
22
|
-
var
|
|
23
|
-
var chunkONML6J5O_cjs = require('../chunk-ONML6J5O.cjs');
|
|
24
|
-
var chunkT35SGVB2_cjs = require('../chunk-T35SGVB2.cjs');
|
|
22
|
+
var chunkJBL4PPEE_cjs = require('../chunk-JBL4PPEE.cjs');
|
|
23
|
+
var chunkUDMII47W_cjs = require('../chunk-UDMII47W.cjs');
|
|
25
24
|
var chunk464YPRAE_cjs = require('../chunk-464YPRAE.cjs');
|
|
26
25
|
var chunkPICGTGEB_cjs = require('../chunk-PICGTGEB.cjs');
|
|
26
|
+
var chunkT35SGVB2_cjs = require('../chunk-T35SGVB2.cjs');
|
|
27
27
|
var chunk5FYU7ZIU_cjs = require('../chunk-5FYU7ZIU.cjs');
|
|
28
28
|
var chunk6JRRJSJN_cjs = require('../chunk-6JRRJSJN.cjs');
|
|
29
29
|
var chunk2FRUMQLS_cjs = require('../chunk-2FRUMQLS.cjs');
|
|
30
|
-
require('../chunk-324RBHCF.cjs');
|
|
31
30
|
var chunkVGNCU5JJ_cjs = require('../chunk-VGNCU5JJ.cjs');
|
|
32
|
-
var chunk223D4727_cjs = require('../chunk-223D4727.cjs');
|
|
33
31
|
var chunk2WLXQGWC_cjs = require('../chunk-2WLXQGWC.cjs');
|
|
32
|
+
require('../chunk-324RBHCF.cjs');
|
|
33
|
+
var chunk223D4727_cjs = require('../chunk-223D4727.cjs');
|
|
34
34
|
var chunk2VJBIBPE_cjs = require('../chunk-2VJBIBPE.cjs');
|
|
35
35
|
var chunkTQSU3I4C_cjs = require('../chunk-TQSU3I4C.cjs');
|
|
36
36
|
var chunkMISPPQBP_cjs = require('../chunk-MISPPQBP.cjs');
|
|
37
37
|
require('../chunk-JH6JTI76.cjs');
|
|
38
|
-
var chunkIRY63R4L_cjs = require('../chunk-IRY63R4L.cjs');
|
|
39
38
|
require('../chunk-UWIILWDI.cjs');
|
|
39
|
+
var chunkIRY63R4L_cjs = require('../chunk-IRY63R4L.cjs');
|
|
40
40
|
require('../chunk-ZESMRGDV.cjs');
|
|
41
|
-
var
|
|
41
|
+
var chunk4RJPTXUQ_cjs = require('../chunk-4RJPTXUQ.cjs');
|
|
42
|
+
var chunkN5WJBQYF_cjs = require('../chunk-N5WJBQYF.cjs');
|
|
42
43
|
var chunkZ3LFF3YT_cjs = require('../chunk-Z3LFF3YT.cjs');
|
|
43
44
|
var chunkC2ECYOPP_cjs = require('../chunk-C2ECYOPP.cjs');
|
|
44
45
|
var chunkTMX7YFVM_cjs = require('../chunk-TMX7YFVM.cjs');
|
|
45
46
|
require('../chunk-QXNEXPUL.cjs');
|
|
46
|
-
var
|
|
47
|
+
var chunkVPPX5XUF_cjs = require('../chunk-VPPX5XUF.cjs');
|
|
48
|
+
require('../chunk-PCB2BPN3.cjs');
|
|
47
49
|
var chunkGOWXP5KT_cjs = require('../chunk-GOWXP5KT.cjs');
|
|
48
50
|
var chunkYCO4ZBBL_cjs = require('../chunk-YCO4ZBBL.cjs');
|
|
49
|
-
var
|
|
51
|
+
var chunkQZTNTP75_cjs = require('../chunk-QZTNTP75.cjs');
|
|
50
52
|
require('../chunk-NWNVWO6L.cjs');
|
|
51
|
-
require('../chunk-PCB2BPN3.cjs');
|
|
52
|
-
var chunkVPPX5XUF_cjs = require('../chunk-VPPX5XUF.cjs');
|
|
53
53
|
var chunkXDMIVPJP_cjs = require('../chunk-XDMIVPJP.cjs');
|
|
54
54
|
require('../chunk-7G2LJMUG.cjs');
|
|
55
55
|
var chunkJIOHDVWH_cjs = require('../chunk-JIOHDVWH.cjs');
|
|
@@ -62,17 +62,17 @@ var chunkY5WE72RB_cjs = require('../chunk-Y5WE72RB.cjs');
|
|
|
62
62
|
var chunk4623VCCR_cjs = require('../chunk-4623VCCR.cjs');
|
|
63
63
|
require('../chunk-VLCY46K6.cjs');
|
|
64
64
|
var chunkI4NP577O_cjs = require('../chunk-I4NP577O.cjs');
|
|
65
|
-
var chunkNSD37OF5_cjs = require('../chunk-NSD37OF5.cjs');
|
|
66
65
|
var chunkZU2B2RZK_cjs = require('../chunk-ZU2B2RZK.cjs');
|
|
66
|
+
var chunkNSD37OF5_cjs = require('../chunk-NSD37OF5.cjs');
|
|
67
67
|
require('../chunk-72YEEUH7.cjs');
|
|
68
68
|
require('../chunk-D54JXTPG.cjs');
|
|
69
|
-
var
|
|
69
|
+
var chunkHVOPUYAG_cjs = require('../chunk-HVOPUYAG.cjs');
|
|
70
70
|
var chunk3T3IKNGF_cjs = require('../chunk-3T3IKNGF.cjs');
|
|
71
71
|
var chunkRFIBUWLF_cjs = require('../chunk-RFIBUWLF.cjs');
|
|
72
|
-
var
|
|
72
|
+
var chunkY6ZNWC7E_cjs = require('../chunk-Y6ZNWC7E.cjs');
|
|
73
73
|
require('../chunk-3YEXZX4H.cjs');
|
|
74
|
-
var chunkAQPZ4QMV_cjs = require('../chunk-AQPZ4QMV.cjs');
|
|
75
74
|
var chunkZDZY6OPL_cjs = require('../chunk-ZDZY6OPL.cjs');
|
|
75
|
+
var chunkAQPZ4QMV_cjs = require('../chunk-AQPZ4QMV.cjs');
|
|
76
76
|
require('../chunk-SIB6C7P7.cjs');
|
|
77
77
|
require('../chunk-DVUZTGVL.cjs');
|
|
78
78
|
var chunkV4ISCZJ7_cjs = require('../chunk-V4ISCZJ7.cjs');
|
|
@@ -87,15 +87,15 @@ var chunkCG757WKY_cjs = require('../chunk-CG757WKY.cjs');
|
|
|
87
87
|
var chunkW3PSIIMN_cjs = require('../chunk-W3PSIIMN.cjs');
|
|
88
88
|
var chunkQUMUAJ2P_cjs = require('../chunk-QUMUAJ2P.cjs');
|
|
89
89
|
var chunkVZOOGA47_cjs = require('../chunk-VZOOGA47.cjs');
|
|
90
|
-
var
|
|
91
|
-
var
|
|
92
|
-
require('../chunk-
|
|
93
|
-
require('../chunk-
|
|
90
|
+
var chunk33PWCTND_cjs = require('../chunk-33PWCTND.cjs');
|
|
91
|
+
var chunkRGPKW6KQ_cjs = require('../chunk-RGPKW6KQ.cjs');
|
|
92
|
+
require('../chunk-J25NN3XJ.cjs');
|
|
93
|
+
require('../chunk-M42XWNS6.cjs');
|
|
94
94
|
var chunk7JVP3LS6_cjs = require('../chunk-7JVP3LS6.cjs');
|
|
95
95
|
var chunkKGAYUFXD_cjs = require('../chunk-KGAYUFXD.cjs');
|
|
96
96
|
var chunkMOIZ2R5X_cjs = require('../chunk-MOIZ2R5X.cjs');
|
|
97
97
|
var chunkEFS3XXZS_cjs = require('../chunk-EFS3XXZS.cjs');
|
|
98
|
-
var
|
|
98
|
+
var chunkWVEFRQSW_cjs = require('../chunk-WVEFRQSW.cjs');
|
|
99
99
|
var chunkZW6FPIFC_cjs = require('../chunk-ZW6FPIFC.cjs');
|
|
100
100
|
var chunkTVHTXO6V_cjs = require('../chunk-TVHTXO6V.cjs');
|
|
101
101
|
require('../chunk-PNZVUH46.cjs');
|
|
@@ -230,7 +230,7 @@ function ConnectedWorkspaceActivity({
|
|
|
230
230
|
[feed.data]
|
|
231
231
|
);
|
|
232
232
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
233
|
-
|
|
233
|
+
chunk4RJPTXUQ_cjs.WorkspaceActivityList,
|
|
234
234
|
{
|
|
235
235
|
...listProps,
|
|
236
236
|
items,
|
|
@@ -941,8 +941,8 @@ function NotificationCenter({
|
|
|
941
941
|
}
|
|
942
942
|
];
|
|
943
943
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col h-full bg-background", "data-testid": "notifications-page", children: [
|
|
944
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
945
|
-
|
|
944
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.DraggableHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
945
|
+
chunkWVEFRQSW_cjs.TabHeader,
|
|
946
946
|
{
|
|
947
947
|
tabs,
|
|
948
948
|
activeTabId: "notifications",
|
|
@@ -1367,7 +1367,7 @@ function ConnectedSkillUpload({ onDone, labels, className }) {
|
|
|
1367
1367
|
onChange: (e) => {
|
|
1368
1368
|
const file = e.target.files?.[0];
|
|
1369
1369
|
e.target.value = "";
|
|
1370
|
-
if (file) void add(() =>
|
|
1370
|
+
if (file) void add(() => chunkHVOPUYAG_cjs.importSkillFile(file));
|
|
1371
1371
|
}
|
|
1372
1372
|
}
|
|
1373
1373
|
),
|
|
@@ -1392,7 +1392,7 @@ function ConnectedSkillUpload({ onDone, labels, className }) {
|
|
|
1392
1392
|
className: "space-y-2",
|
|
1393
1393
|
onSubmit: (e) => {
|
|
1394
1394
|
e.preventDefault();
|
|
1395
|
-
if (url.trim()) void add(() =>
|
|
1395
|
+
if (url.trim()) void add(() => chunkHVOPUYAG_cjs.importSkillFromUrl(url));
|
|
1396
1396
|
},
|
|
1397
1397
|
children: [
|
|
1398
1398
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { htmlFor: "skills-add-url", children: l.fromLink }),
|
|
@@ -1455,9 +1455,9 @@ function ConnectedSkillsLibrary({
|
|
|
1455
1455
|
const [type, setType] = react$1.useState("all");
|
|
1456
1456
|
const [view, setView] = react$1.useState("gallery");
|
|
1457
1457
|
const [isBusy, setIsBusy] = react$1.useState(false);
|
|
1458
|
-
const all = react$1.useMemo(() =>
|
|
1458
|
+
const all = react$1.useMemo(() => chunkHVOPUYAG_cjs.buildLibrarySkills(builtins, listings ?? []), [builtins, listings]);
|
|
1459
1459
|
const shown = react$1.useMemo(
|
|
1460
|
-
() =>
|
|
1460
|
+
() => chunkHVOPUYAG_cjs.filterLibrarySkills(all, { query, source, type }),
|
|
1461
1461
|
[all, query, source, type]
|
|
1462
1462
|
);
|
|
1463
1463
|
const current = all.find((s) => s.slug === selected) ?? null;
|
|
@@ -1468,21 +1468,21 @@ function ConnectedSkillsLibrary({
|
|
|
1468
1468
|
const count2 = (s) => all.filter((x) => x.source === s).length;
|
|
1469
1469
|
const sourceOptions = [
|
|
1470
1470
|
{ id: "all", label: "All", count: all.length },
|
|
1471
|
-
{ id: "builtin", label:
|
|
1472
|
-
{ id: "mine", label:
|
|
1473
|
-
{ id: "shared", label:
|
|
1471
|
+
{ id: "builtin", label: chunkHVOPUYAG_cjs.SKILL_SOURCE_LABELS.builtin, count: count2("builtin") },
|
|
1472
|
+
{ id: "mine", label: chunkHVOPUYAG_cjs.SKILL_SOURCE_LABELS.mine, count: count2("mine") },
|
|
1473
|
+
{ id: "shared", label: chunkHVOPUYAG_cjs.SKILL_SOURCE_LABELS.shared, count: count2("shared") }
|
|
1474
1474
|
];
|
|
1475
1475
|
const types = [...new Set(all.map((s) => s.type))];
|
|
1476
1476
|
const typeOptions = [
|
|
1477
1477
|
{ id: "all", label: "Any kind" },
|
|
1478
|
-
...types.map((t) => ({ id: t, label:
|
|
1478
|
+
...types.map((t) => ({ id: t, label: chunkHVOPUYAG_cjs.SKILL_TYPE_LABELS[t] ?? t }))
|
|
1479
1479
|
];
|
|
1480
1480
|
const pick = (slug) => {
|
|
1481
1481
|
setSelected(slug);
|
|
1482
1482
|
setMode("detail");
|
|
1483
1483
|
};
|
|
1484
1484
|
const markdownOf = async (skill) => {
|
|
1485
|
-
if (!skill.docExtId) return
|
|
1485
|
+
if (!skill.docExtId) return chunkHVOPUYAG_cjs.workflowToSkillMarkdown(skill.workflow);
|
|
1486
1486
|
const response = await arbi.documents.download(skill.docExtId);
|
|
1487
1487
|
if (!response.ok) throw new Error(`Could not read the skill (${response.status})`);
|
|
1488
1488
|
return response.text();
|
|
@@ -1546,7 +1546,7 @@ function ConnectedSkillsLibrary({
|
|
|
1546
1546
|
try {
|
|
1547
1547
|
documentTools.downloadBlob(
|
|
1548
1548
|
new Blob([await markdownOf(skill)], { type: "text/markdown" }),
|
|
1549
|
-
|
|
1549
|
+
chunkHVOPUYAG_cjs.SKILL_MAIN_FILENAME
|
|
1550
1550
|
);
|
|
1551
1551
|
} catch (error) {
|
|
1552
1552
|
notify16(errorText(error, "Could not export the skill"), "error");
|
|
@@ -1587,10 +1587,10 @@ function ConnectedSkillsLibrary({
|
|
|
1587
1587
|
}
|
|
1588
1588
|
)
|
|
1589
1589
|
] }),
|
|
1590
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1590
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkHVOPUYAG_cjs.SkillViewToggle, { value: view, onChange: setView })
|
|
1591
1591
|
] }),
|
|
1592
1592
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1593
|
-
|
|
1593
|
+
chunkHVOPUYAG_cjs.SkillFilterChips,
|
|
1594
1594
|
{
|
|
1595
1595
|
label: "Show",
|
|
1596
1596
|
value: source,
|
|
@@ -1599,7 +1599,7 @@ function ConnectedSkillsLibrary({
|
|
|
1599
1599
|
}
|
|
1600
1600
|
),
|
|
1601
1601
|
types.length > 1 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1602
|
-
|
|
1602
|
+
chunkHVOPUYAG_cjs.SkillFilterChips,
|
|
1603
1603
|
{
|
|
1604
1604
|
label: "Kind",
|
|
1605
1605
|
value: type,
|
|
@@ -1646,12 +1646,12 @@ function ConnectedSkillsLibrary({
|
|
|
1646
1646
|
view === "gallery" ? "grid grid-cols-[repeat(auto-fill,minmax(9.5rem,1fr))]" : "flex flex-col"
|
|
1647
1647
|
),
|
|
1648
1648
|
children: shown.map((skill) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1649
|
-
|
|
1649
|
+
chunkHVOPUYAG_cjs.SkillTile,
|
|
1650
1650
|
{
|
|
1651
1651
|
name: skill.title,
|
|
1652
1652
|
testId: `skill-tile-${skill.slug}`,
|
|
1653
1653
|
description: skill.description,
|
|
1654
|
-
sourceLabel: skill.isShared ? `${
|
|
1654
|
+
sourceLabel: skill.isShared ? `${chunkHVOPUYAG_cjs.SKILL_SOURCE_LABELS.mine}, shared` : chunkHVOPUYAG_cjs.SKILL_SOURCE_LABELS[skill.source],
|
|
1655
1655
|
type: skill.type,
|
|
1656
1656
|
icon,
|
|
1657
1657
|
layout: view,
|
|
@@ -1686,7 +1686,7 @@ function ConnectedSkillsLibrary({
|
|
|
1686
1686
|
}
|
|
1687
1687
|
),
|
|
1688
1688
|
mode === "new" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1689
|
-
|
|
1689
|
+
chunkHVOPUYAG_cjs.SkillGenerateForm,
|
|
1690
1690
|
{
|
|
1691
1691
|
icon,
|
|
1692
1692
|
onGenerate: (desc) => {
|
|
@@ -1713,11 +1713,11 @@ function ConnectedSkillsLibrary({
|
|
|
1713
1713
|
),
|
|
1714
1714
|
mode === "add" && /* @__PURE__ */ jsxRuntime.jsx(ConnectedSkillUpload, { onDone: done }),
|
|
1715
1715
|
mode === "detail" && current && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1716
|
-
|
|
1716
|
+
chunkHVOPUYAG_cjs.SkillLibraryDetail,
|
|
1717
1717
|
{
|
|
1718
1718
|
skill: current,
|
|
1719
1719
|
icon,
|
|
1720
|
-
instructions: current.docExtId ? currentText ?
|
|
1720
|
+
instructions: current.docExtId ? currentText ? chunkHVOPUYAG_cjs.parseSkillFrontmatter(currentText, chunkHVOPUYAG_cjs.SKILL_MAIN_FILENAME).content : "" : current.workflow.run.kind === "prompt" ? current.workflow.run.promptTemplate : "",
|
|
1721
1721
|
isLoading: !!current.docExtId && textLoading,
|
|
1722
1722
|
actions: {
|
|
1723
1723
|
onRun: () => onRun(current.slug),
|
|
@@ -1752,7 +1752,7 @@ function SkillEditor({
|
|
|
1752
1752
|
const [seeded, setSeeded] = react$1.useState(!isEditing);
|
|
1753
1753
|
const [nameError, setNameError] = react$1.useState(null);
|
|
1754
1754
|
if (isEditing && !seeded && text2 !== void 0) {
|
|
1755
|
-
const parsed =
|
|
1755
|
+
const parsed = chunkHVOPUYAG_cjs.parseSkillFrontmatter(text2, chunkHVOPUYAG_cjs.SKILL_MAIN_FILENAME);
|
|
1756
1756
|
setDescription(parsed.description ?? "");
|
|
1757
1757
|
setBody(parsed.content ?? "");
|
|
1758
1758
|
setSeeded(true);
|
|
@@ -1766,15 +1766,15 @@ function SkillEditor({
|
|
|
1766
1766
|
notify16("Add a short description.", "error");
|
|
1767
1767
|
return;
|
|
1768
1768
|
}
|
|
1769
|
-
const slug =
|
|
1769
|
+
const slug = chunkHVOPUYAG_cjs.skillSlug(name);
|
|
1770
1770
|
try {
|
|
1771
|
-
await onSave(slug,
|
|
1771
|
+
await onSave(slug, chunkHVOPUYAG_cjs.serializeSkill({ name: slug, description, body }), isEditing);
|
|
1772
1772
|
} catch (err) {
|
|
1773
1773
|
notify16(errorText(err, "Could not save the skill"), "error");
|
|
1774
1774
|
}
|
|
1775
1775
|
};
|
|
1776
1776
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1777
|
-
|
|
1777
|
+
chunkHVOPUYAG_cjs.SkillEditForm,
|
|
1778
1778
|
{
|
|
1779
1779
|
name,
|
|
1780
1780
|
onNameChange: setName,
|
|
@@ -1813,7 +1813,7 @@ var DEFAULT_CONNECTED_SKILLS_BROWSER_LABELS = {
|
|
|
1813
1813
|
function ConnectedSkillsBrowser({
|
|
1814
1814
|
props,
|
|
1815
1815
|
onClose: close,
|
|
1816
|
-
builtins =
|
|
1816
|
+
builtins = chunkHVOPUYAG_cjs.BUILTIN_SKILLS,
|
|
1817
1817
|
renderEditor,
|
|
1818
1818
|
labels
|
|
1819
1819
|
}) {
|
|
@@ -1866,7 +1866,7 @@ function ConnectedSkillsBrowser({
|
|
|
1866
1866
|
}
|
|
1867
1867
|
) }),
|
|
1868
1868
|
runSkillId && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1869
|
-
|
|
1869
|
+
chunkX3JJTHQ4_cjs.ConnectedTaskComposer,
|
|
1870
1870
|
{
|
|
1871
1871
|
kind: "workflow",
|
|
1872
1872
|
open: true,
|
|
@@ -1890,9 +1890,9 @@ function ConnectedAgentCreator({
|
|
|
1890
1890
|
agent,
|
|
1891
1891
|
initialName,
|
|
1892
1892
|
onSaved,
|
|
1893
|
-
capabilities =
|
|
1894
|
-
templates =
|
|
1895
|
-
types =
|
|
1893
|
+
capabilities = chunkHVOPUYAG_cjs.DEFAULT_AGENT_CAPABILITIES,
|
|
1894
|
+
templates = chunkHVOPUYAG_cjs.DEFAULT_AGENT_TEMPLATES,
|
|
1895
|
+
types = chunkHVOPUYAG_cjs.DEFAULT_AGENT_TYPES,
|
|
1896
1896
|
canRevokeWorkspaces = false,
|
|
1897
1897
|
labels
|
|
1898
1898
|
}) {
|
|
@@ -1934,7 +1934,7 @@ function ConnectedAgentCreator({
|
|
|
1934
1934
|
const initialValues = react$1.useMemo(
|
|
1935
1935
|
() => ({
|
|
1936
1936
|
name: agent?.given_name ?? initialName ?? "",
|
|
1937
|
-
persona: isEdit ?
|
|
1937
|
+
persona: isEdit ? chunkHVOPUYAG_cjs.stripPersonaPreamble(String(agents.PERSONA ?? "")) : "",
|
|
1938
1938
|
modelName: String(agents.AGENT_MODEL_NAME ?? ""),
|
|
1939
1939
|
capabilities: Object.fromEntries(capabilities.map(({ key }) => [key, Boolean(agents[key])])),
|
|
1940
1940
|
type: "builtin",
|
|
@@ -1953,7 +1953,7 @@ function ConnectedAgentCreator({
|
|
|
1953
1953
|
try {
|
|
1954
1954
|
let agentExtId = agent?.external_id ?? early?.id ?? "";
|
|
1955
1955
|
if (!agentExtId) {
|
|
1956
|
-
if (!
|
|
1956
|
+
if (!chunkHVOPUYAG_cjs.isValidAgentName(values.name)) {
|
|
1957
1957
|
notify16("Give the agent a name first.", "error");
|
|
1958
1958
|
return;
|
|
1959
1959
|
}
|
|
@@ -1989,7 +1989,7 @@ function ConnectedAgentCreator({
|
|
|
1989
1989
|
title: `agent-${name}`,
|
|
1990
1990
|
sections: {
|
|
1991
1991
|
Agents: {
|
|
1992
|
-
PERSONA:
|
|
1992
|
+
PERSONA: chunkHVOPUYAG_cjs.composePersona(name, values.persona),
|
|
1993
1993
|
...values.modelName ? { AGENT_MODEL_NAME: values.modelName } : {},
|
|
1994
1994
|
...Object.fromEntries(capabilities.map(({ key }) => [key, !!values.capabilities[key]])),
|
|
1995
1995
|
ENABLED_SKILLS: values.capabilities.SKILLS_ENABLED && skills.length ? skills : null,
|
|
@@ -2012,7 +2012,7 @@ function ConnectedAgentCreator({
|
|
|
2012
2012
|
};
|
|
2013
2013
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2014
2014
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2015
|
-
|
|
2015
|
+
chunkHVOPUYAG_cjs.AgentCreator,
|
|
2016
2016
|
{
|
|
2017
2017
|
open: ready,
|
|
2018
2018
|
onOpenChange,
|
|
@@ -2028,11 +2028,11 @@ function ConnectedAgentCreator({
|
|
|
2028
2028
|
) : void 0,
|
|
2029
2029
|
revokingWorkspaceId: revokeAccess.isPending ? revokeAccess.variables?.workspaceId : void 0,
|
|
2030
2030
|
avatar: (values) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
2031
|
-
|
|
2031
|
+
chunkHVOPUYAG_cjs.AgentAvatarField,
|
|
2032
2032
|
{
|
|
2033
2033
|
picture,
|
|
2034
2034
|
isBusy: avatarBusy,
|
|
2035
|
-
canGenerate: isEdit ||
|
|
2035
|
+
canGenerate: isEdit || chunkHVOPUYAG_cjs.isValidAgentName(values.name),
|
|
2036
2036
|
onGenerate: () => handleGenerateAvatar(values)
|
|
2037
2037
|
}
|
|
2038
2038
|
),
|
|
@@ -2084,7 +2084,7 @@ function ConnectedAgentCreator({
|
|
|
2084
2084
|
/* @__PURE__ */ jsxRuntime.jsx(ui.DialogTitle, { children: "Connect your agent" }),
|
|
2085
2085
|
/* @__PURE__ */ jsxRuntime.jsx(ui.DialogDescription, { children: "This key is shown once. Run the script on the machine that will host the agent." })
|
|
2086
2086
|
] }),
|
|
2087
|
-
connect && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2087
|
+
connect && /* @__PURE__ */ jsxRuntime.jsx(chunkHVOPUYAG_cjs.AgentConnectInstructions, { email: connect.email, signingKey: connect.signingKey })
|
|
2088
2088
|
]
|
|
2089
2089
|
}
|
|
2090
2090
|
) })
|
|
@@ -2533,7 +2533,7 @@ function useMemoryCount(enabled) {
|
|
|
2533
2533
|
}
|
|
2534
2534
|
function AgentsTasks({ tasks, isLoading, agents, labels: l, onCompose }) {
|
|
2535
2535
|
const { notify: notify16, openConversation, openDocument } = chunkT6GRWWRY_cjs.useBlocksEnvironment();
|
|
2536
|
-
const people =
|
|
2536
|
+
const people = chunkX3JJTHQ4_cjs.useTaskPeople();
|
|
2537
2537
|
const canEditShared = react.useCanEditShared();
|
|
2538
2538
|
const isWorkspaceOwner = react.useIsWorkspaceOwner();
|
|
2539
2539
|
const { data: workflows = [] } = react.useWorkflows({ live: true });
|
|
@@ -2559,7 +2559,7 @@ function AgentsTasks({ tasks, isLoading, agents, labels: l, onCompose }) {
|
|
|
2559
2559
|
}, [documents]);
|
|
2560
2560
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2561
2561
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2562
|
-
|
|
2562
|
+
chunkHVOPUYAG_cjs.TaskTable,
|
|
2563
2563
|
{
|
|
2564
2564
|
tasks,
|
|
2565
2565
|
isLoading,
|
|
@@ -2586,7 +2586,7 @@ function AgentsTasks({ tasks, isLoading, agents, labels: l, onCompose }) {
|
|
|
2586
2586
|
}
|
|
2587
2587
|
),
|
|
2588
2588
|
activityFor && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2589
|
-
|
|
2589
|
+
chunkX3JJTHQ4_cjs.ConnectedTaskActivityDialog,
|
|
2590
2590
|
{
|
|
2591
2591
|
conversationId: activityFor.external_id,
|
|
2592
2592
|
taskName: activityFor.title || l.untitledTask,
|
|
@@ -2608,7 +2608,7 @@ function AgentsLauncher({
|
|
|
2608
2608
|
const { notify: notify16, openConversation } = chunkT6GRWWRY_cjs.useBlocksEnvironment();
|
|
2609
2609
|
const { workspaceId, ensureWorkspaceOpen } = chunkKGAYUFXD_cjs.useConnectedWorkspace();
|
|
2610
2610
|
const { data: skills = [] } = react.useSkills({ enabled: includeSkills && !!workspaceId, live: true });
|
|
2611
|
-
const workflowTasks =
|
|
2611
|
+
const workflowTasks = chunkX3JJTHQ4_cjs.useWorkflowTasks();
|
|
2612
2612
|
const launchable = react$1.useMemo(
|
|
2613
2613
|
() => [
|
|
2614
2614
|
...workflows,
|
|
@@ -2631,7 +2631,7 @@ function AgentsLauncher({
|
|
|
2631
2631
|
[workflows, includeSkills, skills, l.skillFiles]
|
|
2632
2632
|
);
|
|
2633
2633
|
const launch = async ({ workflow, inputs, agentId }) => {
|
|
2634
|
-
const values =
|
|
2634
|
+
const values = chunkHVOPUYAG_cjs.defaultTaskComposerValues(launchable, {
|
|
2635
2635
|
workflowId: workflow.id,
|
|
2636
2636
|
assignee: "agent",
|
|
2637
2637
|
inputs,
|
|
@@ -2652,7 +2652,7 @@ function AgentsLauncher({
|
|
|
2652
2652
|
}
|
|
2653
2653
|
};
|
|
2654
2654
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2655
|
-
|
|
2655
|
+
chunkUDMII47W_cjs.ConnectedWorkflowLauncher,
|
|
2656
2656
|
{
|
|
2657
2657
|
workflows: launchable,
|
|
2658
2658
|
onLaunch: launch,
|
|
@@ -2755,7 +2755,7 @@ function ConnectedAgentsPage({
|
|
|
2755
2755
|
labels: agentOptions.managementLabels
|
|
2756
2756
|
});
|
|
2757
2757
|
const { agents, isLoading: agentsLoading } = management;
|
|
2758
|
-
const tasksByAgent = react$1.useMemo(() =>
|
|
2758
|
+
const tasksByAgent = react$1.useMemo(() => chunkHVOPUYAG_cjs.groupAgentTasks(tasks), [tasks]);
|
|
2759
2759
|
const behaviour = useAgentBehaviour(
|
|
2760
2760
|
l.defaultBehaviour,
|
|
2761
2761
|
details.includes("behaviour") || sections.includes("stats")
|
|
@@ -2780,7 +2780,7 @@ function ConnectedAgentsPage({
|
|
|
2780
2780
|
renderDetails?.(agent)
|
|
2781
2781
|
] });
|
|
2782
2782
|
const gallery = /* @__PURE__ */ jsxRuntime.jsx(
|
|
2783
|
-
|
|
2783
|
+
chunkHVOPUYAG_cjs.AgentGallery,
|
|
2784
2784
|
{
|
|
2785
2785
|
count: agents.length,
|
|
2786
2786
|
onCreate: management.create,
|
|
@@ -2790,10 +2790,10 @@ function ConnectedAgentsPage({
|
|
|
2790
2790
|
const agentTasks = tasksByAgent.get(agent.external_id) ?? [];
|
|
2791
2791
|
const running = agentTasks.filter((t) => t.in_progress);
|
|
2792
2792
|
const watchConversationId = running[0]?.external_id ?? null;
|
|
2793
|
-
const progress = agentTasks[0] ?
|
|
2793
|
+
const progress = agentTasks[0] ? chunkHVOPUYAG_cjs.goalProgress(agentTasks[0]) : null;
|
|
2794
2794
|
const name = displayName(agent);
|
|
2795
2795
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2796
|
-
|
|
2796
|
+
chunkHVOPUYAG_cjs.AgentCard,
|
|
2797
2797
|
{
|
|
2798
2798
|
name,
|
|
2799
2799
|
avatar: avatar === "icon" ? /* @__PURE__ */ jsxRuntime.jsx(AgentIconAvatar, {}) : /* @__PURE__ */ jsxRuntime.jsx(AgentInitialsAvatar, { agent }),
|
|
@@ -2892,7 +2892,7 @@ function ConnectedAgentsPage({
|
|
|
2892
2892
|
) });
|
|
2893
2893
|
case "scheduled":
|
|
2894
2894
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-[min(32rem,70dvh)] min-h-64 flex-col", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2895
|
-
|
|
2895
|
+
chunkUDMII47W_cjs.ConnectedWorkflowsTable,
|
|
2896
2896
|
{
|
|
2897
2897
|
filter: "scheduled",
|
|
2898
2898
|
onEdit: (w) => openWorkflow?.(w.external_id),
|
|
@@ -2920,7 +2920,7 @@ function ConnectedAgentsPage({
|
|
|
2920
2920
|
const dialogs = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2921
2921
|
/* @__PURE__ */ jsxRuntime.jsx(ConnectedAgentCreator, { ...management.editorProps, ...agentOptions.creator }),
|
|
2922
2922
|
taskDialog && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2923
|
-
|
|
2923
|
+
chunkX3JJTHQ4_cjs.ConnectedTaskComposer,
|
|
2924
2924
|
{
|
|
2925
2925
|
open: true,
|
|
2926
2926
|
onOpenChange: (open) => !open && setTaskDialog(null),
|
|
@@ -2989,8 +2989,8 @@ function ConnectedAgentsPage({
|
|
|
2989
2989
|
] });
|
|
2990
2990
|
}
|
|
2991
2991
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-full flex-col", "data-testid": ids.root, children: [
|
|
2992
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2993
|
-
|
|
2992
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.DraggableHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2993
|
+
chunkWVEFRQSW_cjs.TabHeader,
|
|
2994
2994
|
{
|
|
2995
2995
|
tabs: [
|
|
2996
2996
|
{
|
|
@@ -3100,10 +3100,10 @@ function cascadeTagCombination(tags, previous, next) {
|
|
|
3100
3100
|
function tagCombinationMatches(combination, items) {
|
|
3101
3101
|
if (!isCombining(combination)) return void 0;
|
|
3102
3102
|
const pass = (list) => new Set(
|
|
3103
|
-
|
|
3103
|
+
chunkJBL4PPEE_cjs.applyInvertedIndexFilter(
|
|
3104
3104
|
[...list],
|
|
3105
3105
|
combination,
|
|
3106
|
-
|
|
3106
|
+
chunkJBL4PPEE_cjs.buildInvertedIndex(
|
|
3107
3107
|
[...list],
|
|
3108
3108
|
(item) => item.id,
|
|
3109
3109
|
(item) => item.tagIds
|
|
@@ -3220,7 +3220,7 @@ function ConnectedTagTable({
|
|
|
3220
3220
|
const fail2 = (fallback) => (e) => notify16(browser.refusalReason(e, fallback), "error");
|
|
3221
3221
|
const snapshot2 = (data) => {
|
|
3222
3222
|
const title = exportTitle ?? ui.tagKindTitle(kind, { plural: true });
|
|
3223
|
-
const bytes =
|
|
3223
|
+
const bytes = chunk4RJPTXUQ_cjs.tagTableDocx(data, {
|
|
3224
3224
|
title,
|
|
3225
3225
|
nameOf: (id) => people.find((p) => p.value === id)?.label
|
|
3226
3226
|
});
|
|
@@ -3229,7 +3229,7 @@ function ConnectedTagTable({
|
|
|
3229
3229
|
return { blob: new Blob([bytes], { type: chunkJIOHDVWH_cjs.DOCX_MIME_TYPE }), name };
|
|
3230
3230
|
};
|
|
3231
3231
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3232
|
-
|
|
3232
|
+
chunk4RJPTXUQ_cjs.TagTable,
|
|
3233
3233
|
{
|
|
3234
3234
|
...props,
|
|
3235
3235
|
table,
|
|
@@ -3310,7 +3310,7 @@ function DocTagPassages({ docId, tagId, label, docOf, testId }) {
|
|
|
3310
3310
|
const doc = docOf(cited.doc_ext_id);
|
|
3311
3311
|
const passages = ordered(cited);
|
|
3312
3312
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3313
|
-
|
|
3313
|
+
chunkF73EZQT4_cjs.FactSourceGroup,
|
|
3314
3314
|
{
|
|
3315
3315
|
docId: cited.doc_ext_id,
|
|
3316
3316
|
hasPassages: passages.length > 0,
|
|
@@ -3367,9 +3367,9 @@ function GlossaryExport({ labelId, nameOf }) {
|
|
|
3367
3367
|
const narrowed = agreements.find((a) => a.id === narrowTo);
|
|
3368
3368
|
const title = narrowed ? `Glossary - ${narrowed.name}` : "Glossary";
|
|
3369
3369
|
const download = (format) => {
|
|
3370
|
-
const entries =
|
|
3371
|
-
const blob = format === "docx" ? new Blob([
|
|
3372
|
-
documentTools.downloadBlob(blob,
|
|
3370
|
+
const entries = chunk4RJPTXUQ_cjs.glossaryEntries(sources, { labelId: narrowed?.id });
|
|
3371
|
+
const blob = format === "docx" ? new Blob([chunk4RJPTXUQ_cjs.glossaryDocx(entries, { title })], { type: chunkJIOHDVWH_cjs.DOCX_MIME_TYPE }) : new Blob([chunk4RJPTXUQ_cjs.glossaryMarkdown(entries, { title })], { type: "text/markdown" });
|
|
3372
|
+
documentTools.downloadBlob(blob, chunk4RJPTXUQ_cjs.glossaryFileName(title, format));
|
|
3373
3373
|
};
|
|
3374
3374
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", "data-testid": "tags-glossary", children: [
|
|
3375
3375
|
agreements.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -3786,7 +3786,7 @@ function TagFilterChips({
|
|
|
3786
3786
|
const name = (id) => tags.find((t) => t.external_id === id)?.name ?? id;
|
|
3787
3787
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-1.5", "data-testid": "tags-filter-chips", children: [
|
|
3788
3788
|
set.map(([id, state]) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
3789
|
-
|
|
3789
|
+
chunkJBL4PPEE_cjs.FilterChip,
|
|
3790
3790
|
{
|
|
3791
3791
|
label: name(id),
|
|
3792
3792
|
state,
|
|
@@ -3914,7 +3914,7 @@ function KindSection({
|
|
|
3914
3914
|
{
|
|
3915
3915
|
testId: `tags-kind-${kind}`,
|
|
3916
3916
|
title: ui.tagKindTitle(kind, { plural: true }),
|
|
3917
|
-
description:
|
|
3917
|
+
description: chunk4RJPTXUQ_cjs.tagKindDescription(kind),
|
|
3918
3918
|
actions: picker,
|
|
3919
3919
|
children: [
|
|
3920
3920
|
browser.isEntityTag({ kind }) && extractingCount > 0 && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -3925,9 +3925,9 @@ function KindSection({
|
|
|
3925
3925
|
children: [
|
|
3926
3926
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "size-4 animate-spin" }),
|
|
3927
3927
|
"Extracting ",
|
|
3928
|
-
|
|
3928
|
+
chunk4RJPTXUQ_cjs.entitiesPhrase().toLowerCase(),
|
|
3929
3929
|
" from ",
|
|
3930
|
-
|
|
3930
|
+
chunk4RJPTXUQ_cjs.documentCount(extractingCount),
|
|
3931
3931
|
"\u2026"
|
|
3932
3932
|
]
|
|
3933
3933
|
}
|
|
@@ -3945,7 +3945,7 @@ function KindSection({
|
|
|
3945
3945
|
onOpenDocument: (id) => openDocument(id),
|
|
3946
3946
|
onOpenFact: ctx.onOpenFact,
|
|
3947
3947
|
onOpenThread: (id) => openConversation(id),
|
|
3948
|
-
labels:
|
|
3948
|
+
labels: chunk4RJPTXUQ_cjs.tagTableLabels(kind),
|
|
3949
3949
|
testId: `tags-table-${kind}`
|
|
3950
3950
|
}
|
|
3951
3951
|
)
|
|
@@ -4047,12 +4047,12 @@ function TagSection({
|
|
|
4047
4047
|
onOpenDocument: (id) => openDocument(id),
|
|
4048
4048
|
onOpenFact: ctx.onOpenFact,
|
|
4049
4049
|
onOpenThread: (id) => openConversation(id),
|
|
4050
|
-
labels:
|
|
4050
|
+
labels: chunk4RJPTXUQ_cjs.tagTableLabels(tag.kind),
|
|
4051
4051
|
testId: "tags-rows"
|
|
4052
4052
|
}
|
|
4053
4053
|
),
|
|
4054
4054
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4055
|
-
|
|
4055
|
+
chunk4RJPTXUQ_cjs.TagDetail,
|
|
4056
4056
|
{
|
|
4057
4057
|
row: detailRow && narrowTagRow(detailRow, ctx.filter.matches),
|
|
4058
4058
|
fields: schema.data?.fields ?? [],
|
|
@@ -4064,10 +4064,10 @@ function TagSection({
|
|
|
4064
4064
|
onOpenDocument: (id) => openDocument(id),
|
|
4065
4065
|
onOpenFact: ctx.onOpenFact,
|
|
4066
4066
|
onOpenThread: (id) => openConversation(id),
|
|
4067
|
-
noteLabel:
|
|
4067
|
+
noteLabel: chunk4RJPTXUQ_cjs.tagNoteLabel(tag.kind),
|
|
4068
4068
|
noteIsValue: tag.kind === "annotation",
|
|
4069
4069
|
renderPassages: (d, label) => renderPassages(d.doc_ext_id, label),
|
|
4070
|
-
labels:
|
|
4070
|
+
labels: chunk4RJPTXUQ_cjs.tagDetailLabels(),
|
|
4071
4071
|
testId: "tags-detail"
|
|
4072
4072
|
}
|
|
4073
4073
|
)
|
|
@@ -4155,7 +4155,7 @@ function ConnectedTagsPage({
|
|
|
4155
4155
|
const onDelete = async (t) => {
|
|
4156
4156
|
const nested = browser.getChildTags([...tags], t.external_id);
|
|
4157
4157
|
const uses = browser.tagUseCount(t);
|
|
4158
|
-
const n2 =
|
|
4158
|
+
const n2 = chunk4RJPTXUQ_cjs.tagsPageNouns();
|
|
4159
4159
|
const tagNoun = (count2) => (count2 === 1 ? n2.tag : n2.tags).toLowerCase();
|
|
4160
4160
|
const carriers = uses === 1 ? `${n2.document}, ${n2.fact} or ${n2.thread}` : `${n2.documents}, ${n2.facts} and ${n2.threads}`;
|
|
4161
4161
|
const message = `Delete ${ui.tagKindNouns(t.kind).singular} "${t.name}"?` + (uses > 0 ? `
|
|
@@ -4176,16 +4176,16 @@ ${nested.length} nested ${tagNoun(nested.length)} ${nested.length === 1 ? "moves
|
|
|
4176
4176
|
try {
|
|
4177
4177
|
await extract.mutateAsync(docIds);
|
|
4178
4178
|
notify16(
|
|
4179
|
-
`Extracting ${
|
|
4179
|
+
`Extracting ${chunk4RJPTXUQ_cjs.entitiesPhrase().toLowerCase()} from ${chunk4RJPTXUQ_cjs.documentCount(docIds.length)}. You will be notified when it is done.`,
|
|
4180
4180
|
"info"
|
|
4181
4181
|
);
|
|
4182
4182
|
} catch (error) {
|
|
4183
|
-
notify16(browser.refusalReason(error, `Could not extract ${
|
|
4183
|
+
notify16(browser.refusalReason(error, `Could not extract ${chunk4RJPTXUQ_cjs.entitiesPhrase().toLowerCase()}`), "error");
|
|
4184
4184
|
throw error;
|
|
4185
4185
|
}
|
|
4186
4186
|
};
|
|
4187
4187
|
const picker = /* @__PURE__ */ jsxRuntime.jsx(
|
|
4188
|
-
|
|
4188
|
+
chunk4RJPTXUQ_cjs.TagPicker,
|
|
4189
4189
|
{
|
|
4190
4190
|
tags: viewTags,
|
|
4191
4191
|
selectedId: tag?.external_id,
|
|
@@ -4199,10 +4199,10 @@ ${nested.length} nested ${tagNoun(nested.length)} ${nested.length === 1 ? "moves
|
|
|
4199
4199
|
onOpenTag: openTag,
|
|
4200
4200
|
onOpenFact
|
|
4201
4201
|
};
|
|
4202
|
-
const n =
|
|
4202
|
+
const n = chunk4RJPTXUQ_cjs.tagsPageNouns();
|
|
4203
4203
|
const action = view === "person" || view === "organisation" ? {
|
|
4204
4204
|
label: "Extract",
|
|
4205
|
-
title: `Extract ${
|
|
4205
|
+
title: `Extract ${chunk4RJPTXUQ_cjs.entitiesPhrase().toLowerCase()} from ${n.documents.toLowerCase()}`,
|
|
4206
4206
|
icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Sparkles, { className: "h-4 w-4" }),
|
|
4207
4207
|
run: () => setExtracting(true),
|
|
4208
4208
|
testId: "tags-extract-entities"
|
|
@@ -4226,7 +4226,7 @@ ${nested.length} nested ${tagNoun(nested.length)} ${nested.length === 1 ? "moves
|
|
|
4226
4226
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-6 p-2 sm:p-4", children: [
|
|
4227
4227
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "sticky top-0 z-10 -mx-2 -mt-2 bg-background sm:-mx-4 sm:-mt-4", children: [
|
|
4228
4228
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4229
|
-
|
|
4229
|
+
chunkWVEFRQSW_cjs.TabHeader,
|
|
4230
4230
|
{
|
|
4231
4231
|
testId: "tags-tab-header",
|
|
4232
4232
|
tabs: [
|
|
@@ -4352,7 +4352,7 @@ ${nested.length} nested ${tagNoun(nested.length)} ${nested.length === 1 ? "moves
|
|
|
4352
4352
|
}
|
|
4353
4353
|
),
|
|
4354
4354
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4355
|
-
|
|
4355
|
+
chunk4RJPTXUQ_cjs.ExtractEntitiesDialog,
|
|
4356
4356
|
{
|
|
4357
4357
|
open: extracting,
|
|
4358
4358
|
onOpenChange: setExtracting,
|
|
@@ -4443,7 +4443,7 @@ function FactSourcesPopover({
|
|
|
4443
4443
|
const olderVersion = refOf(docId) !== docId ? refOf(docId).split("@v")[1] : null;
|
|
4444
4444
|
const cited = passagesOf(docId);
|
|
4445
4445
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4446
|
-
|
|
4446
|
+
chunkF73EZQT4_cjs.FactSourceGroup,
|
|
4447
4447
|
{
|
|
4448
4448
|
docId,
|
|
4449
4449
|
isViewing,
|
|
@@ -4532,7 +4532,7 @@ function FactMarkdownEditor({
|
|
|
4532
4532
|
const editorRef = react$1.useRef(null);
|
|
4533
4533
|
react$1.useEffect(() => {
|
|
4534
4534
|
if (!editorRef.current) return;
|
|
4535
|
-
return
|
|
4535
|
+
return chunkF73EZQT4_cjs.enableFactTableColumnResize(editorRef.current);
|
|
4536
4536
|
}, []);
|
|
4537
4537
|
react$1.useEffect(() => {
|
|
4538
4538
|
if (!editing) return;
|
|
@@ -5049,10 +5049,10 @@ function useFactFilters(notes, view, chat) {
|
|
|
5049
5049
|
const factFilters = view.filters;
|
|
5050
5050
|
const setFactFilters = view.setFilters;
|
|
5051
5051
|
const quickFilteredNotes = react$1.useMemo(
|
|
5052
|
-
() =>
|
|
5052
|
+
() => chunkJBL4PPEE_cjs.applyInvertedIndexFilter(
|
|
5053
5053
|
notes,
|
|
5054
5054
|
factFilters,
|
|
5055
|
-
|
|
5055
|
+
chunkJBL4PPEE_cjs.buildInvertedIndex(
|
|
5056
5056
|
notes,
|
|
5057
5057
|
(f) => f.external_id,
|
|
5058
5058
|
(f) => Object.entries(getFactFilterAttributes(f)).filter(([id, on]) => on && factFilterIds.includes(id)).map(([id]) => id)
|
|
@@ -5130,7 +5130,7 @@ function useFactFilters(notes, view, chat) {
|
|
|
5130
5130
|
const makeTagPicker = react$1.useCallback(
|
|
5131
5131
|
(selected, setSelected, opts) => {
|
|
5132
5132
|
const applied = new Set(selected);
|
|
5133
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
5133
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkF73EZQT4_cjs.FactFieldRow, { label: "Labels", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
5134
5134
|
chunkVGNCU5JJ_cjs.FieldLabelsSelect,
|
|
5135
5135
|
{
|
|
5136
5136
|
options: labelOptions,
|
|
@@ -5321,14 +5321,14 @@ function useFactSelection(notes, gridApiRef, setFactTags, chat) {
|
|
|
5321
5321
|
}
|
|
5322
5322
|
function renderSourcesCell(params) {
|
|
5323
5323
|
const fact = params.data;
|
|
5324
|
-
const count2 =
|
|
5324
|
+
const count2 = chunkF73EZQT4_cjs.sourceDocCount(fact);
|
|
5325
5325
|
if (!fact || count2 === 0) return /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground/40", children: "\u2014" });
|
|
5326
5326
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5327
5327
|
"button",
|
|
5328
5328
|
{
|
|
5329
5329
|
type: "button",
|
|
5330
5330
|
onClick: () => params.context?.openEdit?.(fact),
|
|
5331
|
-
title:
|
|
5331
|
+
title: chunkF73EZQT4_cjs.DEFAULT_FACT_COLUMN_LABELS.sourcedFrom(count2),
|
|
5332
5332
|
"data-testid": `facts-grid-sources-${fact.external_id}`,
|
|
5333
5333
|
className: "inline-flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground",
|
|
5334
5334
|
children: [
|
|
@@ -5385,14 +5385,14 @@ function createFactPageColumns({
|
|
|
5385
5385
|
onToggleConfirmed,
|
|
5386
5386
|
onToggleShared
|
|
5387
5387
|
}) {
|
|
5388
|
-
const columns =
|
|
5388
|
+
const columns = chunkF73EZQT4_cjs.createFactColumns({
|
|
5389
5389
|
onToggleInChat,
|
|
5390
5390
|
isInChat,
|
|
5391
5391
|
renderHeader: (params, colId) => /* @__PURE__ */ jsxRuntime.jsx(FactHeader, { params, colId }),
|
|
5392
5392
|
renderRowActions: (fact, params) => {
|
|
5393
5393
|
const ctx = params.context;
|
|
5394
5394
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
5395
|
-
|
|
5395
|
+
chunkF73EZQT4_cjs.FactRowActions,
|
|
5396
5396
|
{
|
|
5397
5397
|
onEdit: () => ctx?.openEdit?.(fact),
|
|
5398
5398
|
canEdit: ctx?.canRewrite?.(fact) !== false,
|
|
@@ -5522,7 +5522,7 @@ function useFactsGrid({
|
|
|
5522
5522
|
);
|
|
5523
5523
|
const renderFactTags = react$1.useCallback(
|
|
5524
5524
|
(fact, rowHeight) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
5525
|
-
|
|
5525
|
+
chunkF73EZQT4_cjs.FactLabelsCell,
|
|
5526
5526
|
{
|
|
5527
5527
|
options: labelOptions,
|
|
5528
5528
|
selectedIds: fact.tags.map((t) => t.tag_ext_id),
|
|
@@ -6326,7 +6326,7 @@ function ConnectedFactsPage({
|
|
|
6326
6326
|
};
|
|
6327
6327
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref: setFactSection, className: "relative flex h-full flex-col", "data-testid": "facts-page", children: [
|
|
6328
6328
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6329
|
-
|
|
6329
|
+
chunkF73EZQT4_cjs.FactsToolbar,
|
|
6330
6330
|
{
|
|
6331
6331
|
count: filteredNotes.length,
|
|
6332
6332
|
hasActiveFilters: filters.hasActiveFilters,
|
|
@@ -6355,7 +6355,7 @@ function ConnectedFactsPage({
|
|
|
6355
6355
|
onNewFact: composing && !editingId ? () => void 0 : composer.startNewFact,
|
|
6356
6356
|
navSlotRef: setNavSlot,
|
|
6357
6357
|
navigator: view === "table" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
6358
|
-
|
|
6358
|
+
chunk4RJPTXUQ_cjs.GridRowNavigator,
|
|
6359
6359
|
{
|
|
6360
6360
|
gridApi,
|
|
6361
6361
|
selectedId: editingId,
|
|
@@ -6366,7 +6366,7 @@ function ConnectedFactsPage({
|
|
|
6366
6366
|
) : null,
|
|
6367
6367
|
showToolbarRow: view !== "smart_search",
|
|
6368
6368
|
tools: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
6369
|
-
view === "table" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
6369
|
+
view === "table" && /* @__PURE__ */ jsxRuntime.jsx(chunkF73EZQT4_cjs.FactsFieldsButton, { getGridApi: () => gridApiRef.current }),
|
|
6370
6370
|
view === "table" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
6371
6371
|
chunkVGNCU5JJ_cjs.RowDensityControl,
|
|
6372
6372
|
{
|
|
@@ -6387,7 +6387,7 @@ function ConnectedFactsPage({
|
|
|
6387
6387
|
}
|
|
6388
6388
|
),
|
|
6389
6389
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6390
|
-
|
|
6390
|
+
chunkF73EZQT4_cjs.FactComposer,
|
|
6391
6391
|
{
|
|
6392
6392
|
isOpen: composing,
|
|
6393
6393
|
isEditing: !!editingId,
|
|
@@ -6420,7 +6420,7 @@ function ConnectedFactsPage({
|
|
|
6420
6420
|
reserveSourcesSpace: view === "gantt" || view === "calendar",
|
|
6421
6421
|
citationContainer: factSection,
|
|
6422
6422
|
renderDocumentPicker: (onSelect, selectedIds, onOpen, sourcesToggle, sourcesOpen) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
6423
|
-
|
|
6423
|
+
chunkF73EZQT4_cjs.FactSourcesRow,
|
|
6424
6424
|
{
|
|
6425
6425
|
toggle: sourcesToggle,
|
|
6426
6426
|
picker: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -6466,7 +6466,7 @@ function ConnectedFactsPage({
|
|
|
6466
6466
|
}
|
|
6467
6467
|
),
|
|
6468
6468
|
dateInput: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6469
|
-
|
|
6469
|
+
chunkF73EZQT4_cjs.FactDateInput,
|
|
6470
6470
|
{
|
|
6471
6471
|
value: composer.draftDateFields,
|
|
6472
6472
|
onChange: composer.setDraftDateFields,
|
|
@@ -6476,13 +6476,13 @@ function ConnectedFactsPage({
|
|
|
6476
6476
|
}
|
|
6477
6477
|
),
|
|
6478
6478
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "scrollbar-subtle flex-1 overflow-y-auto pb-2", children: [
|
|
6479
|
-
isLoading ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
6479
|
+
isLoading ? /* @__PURE__ */ jsxRuntime.jsx(chunkF73EZQT4_cjs.FactsLoading, {}) : isError ? /* @__PURE__ */ jsxRuntime.jsx(chunkF73EZQT4_cjs.FactsLoadError, { onRetry: () => refetch() }) : smartSearch ? (
|
|
6480
6480
|
// Searches facts only (never documents). Kept before the empty-state guard so the
|
|
6481
6481
|
// search UI is reachable even in an empty workspace.
|
|
6482
6482
|
smartSearch({ selectedFactId: editingId, onOpenFact: openFactById })
|
|
6483
6483
|
) : notes.length === 0 ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-h-full flex-col items-center justify-center", children: [
|
|
6484
6484
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6485
|
-
|
|
6485
|
+
chunkF73EZQT4_cjs.FactsEmptyState,
|
|
6486
6486
|
{
|
|
6487
6487
|
onUseExample: (text2) => {
|
|
6488
6488
|
composer.setDraft(text2);
|
|
@@ -6493,7 +6493,7 @@ function ConnectedFactsPage({
|
|
|
6493
6493
|
),
|
|
6494
6494
|
emptyStateExtra
|
|
6495
6495
|
] }) : view === "calendar" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
6496
|
-
|
|
6496
|
+
chunkF73EZQT4_cjs.FactsCalendar,
|
|
6497
6497
|
{
|
|
6498
6498
|
facts: filteredNotes,
|
|
6499
6499
|
onSelect: (n) => openEditIfAllowed(n),
|
|
@@ -6502,7 +6502,7 @@ function ConnectedFactsPage({
|
|
|
6502
6502
|
navigatorTotal: filteredNotes.length
|
|
6503
6503
|
}
|
|
6504
6504
|
) : view === "gantt" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
6505
|
-
|
|
6505
|
+
chunkF73EZQT4_cjs.FactsGanttPane,
|
|
6506
6506
|
{
|
|
6507
6507
|
items: ganttItems,
|
|
6508
6508
|
labelWidth: pageView.labelWidth,
|
|
@@ -6552,7 +6552,7 @@ function ConnectedFactsPage({
|
|
|
6552
6552
|
)
|
|
6553
6553
|
] }),
|
|
6554
6554
|
selectable && notes.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
6555
|
-
|
|
6555
|
+
chunkF73EZQT4_cjs.FactsBulkBar,
|
|
6556
6556
|
{
|
|
6557
6557
|
count: selection.selectedFacts.length,
|
|
6558
6558
|
onClear: selection.clearSelection,
|
|
@@ -6675,11 +6675,11 @@ function ConnectedProfileCard({
|
|
|
6675
6675
|
const display = profile?.fullName || "Unnamed";
|
|
6676
6676
|
return /* @__PURE__ */ jsxRuntime.jsxs(chunkIRY63R4L_cjs.SettingsSection, { icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.UserCircle, {}), title, children: [
|
|
6677
6677
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6678
|
-
|
|
6678
|
+
chunkJBL4PPEE_cjs.ProfileCard,
|
|
6679
6679
|
{
|
|
6680
6680
|
avatar: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
6681
6681
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6682
|
-
|
|
6682
|
+
chunkJBL4PPEE_cjs.AvatarPicker,
|
|
6683
6683
|
{
|
|
6684
6684
|
pictureUrl: profile?.picture,
|
|
6685
6685
|
initials: chunkUFEXJIEY_cjs.initials(display),
|
|
@@ -6729,7 +6729,7 @@ function ConnectedIdentityVerification({
|
|
|
6729
6729
|
});
|
|
6730
6730
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
6731
6731
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6732
|
-
|
|
6732
|
+
chunkJBL4PPEE_cjs.IdentityVerificationCard,
|
|
6733
6733
|
{
|
|
6734
6734
|
flow,
|
|
6735
6735
|
labels,
|
|
@@ -6738,7 +6738,7 @@ function ConnectedIdentityVerification({
|
|
|
6738
6738
|
}
|
|
6739
6739
|
),
|
|
6740
6740
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6741
|
-
|
|
6741
|
+
chunkJBL4PPEE_cjs.IdentityVerificationDialog,
|
|
6742
6742
|
{
|
|
6743
6743
|
flow,
|
|
6744
6744
|
accountName: profile?.fullName ?? "",
|
|
@@ -6751,7 +6751,7 @@ function ConnectedIdentityVerification({
|
|
|
6751
6751
|
function ConnectedRequireVerified({ children, labels }) {
|
|
6752
6752
|
const { data: profile } = react.useProfile();
|
|
6753
6753
|
const flow = react.useIdentityVerification();
|
|
6754
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
6754
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.RequireVerified, { flow, accountName: profile?.fullName ?? "", labels, children });
|
|
6755
6755
|
}
|
|
6756
6756
|
function ConnectedPasswordChangeDialog({
|
|
6757
6757
|
open,
|
|
@@ -6760,7 +6760,7 @@ function ConnectedPasswordChangeDialog({
|
|
|
6760
6760
|
onRecoveryComplete
|
|
6761
6761
|
}) {
|
|
6762
6762
|
const { notify: notify16 } = chunkT6GRWWRY_cjs.useBlocksEnvironment();
|
|
6763
|
-
const getUnmetRequirement =
|
|
6763
|
+
const getUnmetRequirement = chunk3X37I6QE_cjs.useAuthPages().passwordRules.unmet;
|
|
6764
6764
|
const change = react.usePasswordChange();
|
|
6765
6765
|
const form = react.usePasswordChangeForm({
|
|
6766
6766
|
recoveryMode,
|
|
@@ -6776,7 +6776,7 @@ function ConnectedPasswordChangeDialog({
|
|
|
6776
6776
|
onRecoveryComplete
|
|
6777
6777
|
});
|
|
6778
6778
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
6779
|
-
|
|
6779
|
+
chunkJBL4PPEE_cjs.PasswordChangeDialog,
|
|
6780
6780
|
{
|
|
6781
6781
|
open,
|
|
6782
6782
|
onClose: form.onCancel,
|
|
@@ -6816,23 +6816,23 @@ function ConnectedSecuritySection({ children }) {
|
|
|
6816
6816
|
] });
|
|
6817
6817
|
}
|
|
6818
6818
|
function ConnectedNotificationPreferences({
|
|
6819
|
-
categories =
|
|
6819
|
+
categories = chunkJBL4PPEE_cjs.EMAIL_NOTIFICATION_CATEGORIES,
|
|
6820
6820
|
title = "Notifications"
|
|
6821
6821
|
}) {
|
|
6822
6822
|
const keys = react$1.useMemo(
|
|
6823
|
-
() => categories ===
|
|
6823
|
+
() => categories === chunkJBL4PPEE_cjs.EMAIL_NOTIFICATION_CATEGORIES ? chunkJBL4PPEE_cjs.EMAIL_NOTIFICATION_KEYS : categories.map((c) => c.key),
|
|
6824
6824
|
[categories]
|
|
6825
6825
|
);
|
|
6826
6826
|
const prefs = react.useNotificationPreferences(keys);
|
|
6827
6827
|
return /* @__PURE__ */ jsxRuntime.jsx(chunkIRY63R4L_cjs.SettingsSection, { title, children: /* @__PURE__ */ jsxRuntime.jsx(chunkIRY63R4L_cjs.SettingsCard, { className: "space-y-0", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6828
|
-
|
|
6828
|
+
chunkJBL4PPEE_cjs.NotificationCategoryList,
|
|
6829
6829
|
{
|
|
6830
6830
|
masterId: "emailNotifications",
|
|
6831
6831
|
masterTitle: "Email Notifications",
|
|
6832
6832
|
masterDescription: "Email me about activity when I\u2019m away",
|
|
6833
6833
|
masterChecked: prefs.masterChecked,
|
|
6834
6834
|
onMasterChange: prefs.setAll,
|
|
6835
|
-
categories:
|
|
6835
|
+
categories: chunkJBL4PPEE_cjs.toNotificationCategories(prefs.checked, categories),
|
|
6836
6836
|
onCategoryChange: prefs.setCategory
|
|
6837
6837
|
}
|
|
6838
6838
|
) }) });
|
|
@@ -6845,7 +6845,7 @@ function ConnectedSessionsRow({
|
|
|
6845
6845
|
const sessions = react.useSessions({ enabled: open });
|
|
6846
6846
|
const currentSessionId = react.useCurrentSessionId();
|
|
6847
6847
|
const terminate = react.useTerminateSession();
|
|
6848
|
-
const views =
|
|
6848
|
+
const views = chunkJBL4PPEE_cjs.toActiveSessionViews(sessions.data ?? [], {
|
|
6849
6849
|
currentSessionId,
|
|
6850
6850
|
terminatingId: terminate.isPending ? terminate.variables : null,
|
|
6851
6851
|
renderIcon: renderSessionIcon
|
|
@@ -6874,7 +6874,7 @@ function ConnectedSessionsRow({
|
|
|
6874
6874
|
}
|
|
6875
6875
|
),
|
|
6876
6876
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6877
|
-
|
|
6877
|
+
chunkJBL4PPEE_cjs.ActiveSessionsDialog,
|
|
6878
6878
|
{
|
|
6879
6879
|
open,
|
|
6880
6880
|
onOpenChange: setOpen,
|
|
@@ -6917,7 +6917,7 @@ function ConnectedLogoutDialog({
|
|
|
6917
6917
|
signOut.mutate({ everywhere, reason: "manual" });
|
|
6918
6918
|
};
|
|
6919
6919
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
6920
|
-
|
|
6920
|
+
chunkJBL4PPEE_cjs.LogoutDialog,
|
|
6921
6921
|
{
|
|
6922
6922
|
open,
|
|
6923
6923
|
onClose,
|
|
@@ -6925,7 +6925,7 @@ function ConnectedLogoutDialog({
|
|
|
6925
6925
|
onLogoutAll: () => void run(true),
|
|
6926
6926
|
canLogoutAll: canLogoutAll ?? !(user && ui.isAgent(user)),
|
|
6927
6927
|
isOnline,
|
|
6928
|
-
sessions:
|
|
6928
|
+
sessions: chunkJBL4PPEE_cjs.toLogoutSessionViews(sessions.data ?? []),
|
|
6929
6929
|
renderSessionIcon
|
|
6930
6930
|
}
|
|
6931
6931
|
);
|
|
@@ -6967,12 +6967,12 @@ function ConnectedDangerZone({ renderSubscriptionLink }) {
|
|
|
6967
6967
|
}
|
|
6968
6968
|
),
|
|
6969
6969
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6970
|
-
|
|
6970
|
+
chunkJBL4PPEE_cjs.DeleteAccountDialog,
|
|
6971
6971
|
{
|
|
6972
6972
|
open: dialogOpen,
|
|
6973
6973
|
onClose: flow.onClose,
|
|
6974
6974
|
step: flow.step,
|
|
6975
|
-
blockers:
|
|
6975
|
+
blockers: chunkJBL4PPEE_cjs.toDeleteBlockerViews(flow.blockers, renderSubscriptionLink),
|
|
6976
6976
|
onContinue: flow.onContinue,
|
|
6977
6977
|
onBack: flow.onBack,
|
|
6978
6978
|
userEmail,
|
|
@@ -6987,7 +6987,7 @@ function ConnectedDangerZone({ renderSubscriptionLink }) {
|
|
|
6987
6987
|
function ConnectedSsoDisconnect() {
|
|
6988
6988
|
const { client } = react.useAccountClient();
|
|
6989
6989
|
const { data: profile } = react.useProfile();
|
|
6990
|
-
const auth =
|
|
6990
|
+
const auth = chunk3X37I6QE_cjs.useAuthPages();
|
|
6991
6991
|
const { notify: notify16 } = chunkT6GRWWRY_cjs.useBlocksEnvironment();
|
|
6992
6992
|
const [open, setOpen] = react$1.useState(false);
|
|
6993
6993
|
const [step, setStep] = react$1.useState("email");
|
|
@@ -7132,7 +7132,7 @@ function ConnectedBoxPortalSection() {
|
|
|
7132
7132
|
function ServerConnectionRow({ onRefresh, ...status }) {
|
|
7133
7133
|
const { runtimeConfig } = chunkT6GRWWRY_cjs.useBlocksEnvironment();
|
|
7134
7134
|
const [isRefreshing, setIsRefreshing] = react$1.useState(false);
|
|
7135
|
-
const view =
|
|
7135
|
+
const view = chunkJBL4PPEE_cjs.serverConnectionView(status, runtimeConfig.deploymentDomain || "server");
|
|
7136
7136
|
const refresh = async () => {
|
|
7137
7137
|
setIsRefreshing(true);
|
|
7138
7138
|
try {
|
|
@@ -7142,7 +7142,7 @@ function ServerConnectionRow({ onRefresh, ...status }) {
|
|
|
7142
7142
|
}
|
|
7143
7143
|
};
|
|
7144
7144
|
return /* @__PURE__ */ jsxRuntime.jsx(chunkIRY63R4L_cjs.SettingsRow, { label: "Server connection", description: view.description, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7145
|
-
|
|
7145
|
+
chunkJBL4PPEE_cjs.ServerConnectionButton,
|
|
7146
7146
|
{
|
|
7147
7147
|
state: view.state,
|
|
7148
7148
|
label: view.label,
|
|
@@ -7552,13 +7552,13 @@ var COLUMNS = [
|
|
|
7552
7552
|
flex: 1,
|
|
7553
7553
|
minWidth: 120,
|
|
7554
7554
|
cellRenderer: (params) => isStandard(params.data) ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
7555
|
-
|
|
7555
|
+
chunkJBL4PPEE_cjs.ModelProviderLabel,
|
|
7556
7556
|
{
|
|
7557
7557
|
logo: /* @__PURE__ */ jsxRuntime.jsx(ui.ArbiIcon, { size: 14, "aria-label": "ARBI", className: "flex-shrink-0 rounded-sm" }),
|
|
7558
7558
|
children: "ARBI CITY"
|
|
7559
7559
|
}
|
|
7560
7560
|
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
7561
|
-
|
|
7561
|
+
chunkJBL4PPEE_cjs.ModelProviderLabel,
|
|
7562
7562
|
{
|
|
7563
7563
|
logo: /* @__PURE__ */ jsxRuntime.jsx(ui.ProviderIcon, { modelName: params.data?.model_name, provider: params.value, size: 14 }),
|
|
7564
7564
|
children: PROVIDER_NAMES[params.value ?? ""] || params.value || "\u2014"
|
|
@@ -7635,7 +7635,7 @@ function ConnectedPremiumModels() {
|
|
|
7635
7635
|
);
|
|
7636
7636
|
if (premiumModels.length === 0) return null;
|
|
7637
7637
|
return /* @__PURE__ */ jsxRuntime.jsx(chunkIRY63R4L_cjs.SettingsPanel, { className: "max-w-2xl space-y-4", children: /* @__PURE__ */ jsxRuntime.jsx(chunkIRY63R4L_cjs.SettingsSection, { title: "Premium models", children: /* @__PURE__ */ jsxRuntime.jsx(chunkIRY63R4L_cjs.SettingsCard, { className: "space-y-0", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7638
|
-
|
|
7638
|
+
chunkJBL4PPEE_cjs.PremiumModelsFrame,
|
|
7639
7639
|
{
|
|
7640
7640
|
enabled: premiumModel !== "",
|
|
7641
7641
|
onEnabledChange: (enabled) => {
|
|
@@ -7764,10 +7764,10 @@ function ConnectedAppsSettings({
|
|
|
7764
7764
|
}
|
|
7765
7765
|
};
|
|
7766
7766
|
if (isLoading) {
|
|
7767
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
7767
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.ConnectionsLoading, { message: "Loading connected apps\u2026" });
|
|
7768
7768
|
}
|
|
7769
7769
|
if (catalogError) {
|
|
7770
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
7770
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.ConnectionsError, { message: "Failed to load connector catalog. Please refresh and try again." });
|
|
7771
7771
|
}
|
|
7772
7772
|
const visibleCatalog = catalog.filter((c) => isVendorVisible(c.vendor_key));
|
|
7773
7773
|
const sharePointVisible = isVendorVisible("microsoft_sharepoint");
|
|
@@ -7776,7 +7776,7 @@ function ConnectedAppsSettings({
|
|
|
7776
7776
|
(c) => !react.isMailboxSyncVendor(c.vendor_key) && !react.isSharePointVendor(c.vendor_key)
|
|
7777
7777
|
);
|
|
7778
7778
|
const renderCard = (entry) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
7779
|
-
|
|
7779
|
+
chunkJBL4PPEE_cjs.ConnectionCard,
|
|
7780
7780
|
{
|
|
7781
7781
|
connection: toConnectionCardView(entry, connectedByVendor[entry.vendor_key], {
|
|
7782
7782
|
isDisconnecting: disconnect.isPending && disconnect.variables?.vendorKey === entry.vendor_key,
|
|
@@ -7904,7 +7904,7 @@ function ConnectedAppsSettings({
|
|
|
7904
7904
|
}
|
|
7905
7905
|
)
|
|
7906
7906
|
] }),
|
|
7907
|
-
catalog.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(chunkIRY63R4L_cjs.SettingsCard, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7907
|
+
catalog.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(chunkIRY63R4L_cjs.SettingsCard, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.ConnectionsEmpty, { message: "No connectors available yet." }) }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
7908
7908
|
renderGroup("Email & Drive", EMAIL_AND_DRIVE_SUBTITLE, /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Mail, {}), emailCatalog),
|
|
7909
7909
|
renderGroup(
|
|
7910
7910
|
"Apps & Integrations (MCP)",
|
|
@@ -8357,7 +8357,7 @@ function ConnectedStorageProjectCard({
|
|
|
8357
8357
|
project.personal && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-0.5 text-sm text-muted-foreground", children: "Mail, recordings of calls you host, chat attachments and everything not in a project." })
|
|
8358
8358
|
] }),
|
|
8359
8359
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8360
|
-
|
|
8360
|
+
chunkJBL4PPEE_cjs.UsageToggle,
|
|
8361
8361
|
{
|
|
8362
8362
|
value: view,
|
|
8363
8363
|
onChange: setView,
|
|
@@ -8442,7 +8442,7 @@ function ConnectedStorageProjectCard({
|
|
|
8442
8442
|
] })
|
|
8443
8443
|
] }),
|
|
8444
8444
|
view === "largest" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
|
|
8445
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8445
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.UsageToggle, { value: kind, onChange: setKind, options: KIND_FILTERS, ariaLabel: "Kind" }),
|
|
8446
8446
|
largest.isLoading ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: "Loading\u2026" }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
8447
8447
|
StorageItemsTable,
|
|
8448
8448
|
{
|
|
@@ -8692,7 +8692,7 @@ function ConnectedSettingsPage({
|
|
|
8692
8692
|
}, [requested]);
|
|
8693
8693
|
const controlled = section !== void 0;
|
|
8694
8694
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
8695
|
-
|
|
8695
|
+
chunkJBL4PPEE_cjs.SettingsPage,
|
|
8696
8696
|
{
|
|
8697
8697
|
...page,
|
|
8698
8698
|
sections,
|
|
@@ -8724,7 +8724,7 @@ function UsageSettings({ icon: icon2 }) {
|
|
|
8724
8724
|
description: "AI usage today, in \xA3 (ex VAT).",
|
|
8725
8725
|
testId: "settings-usage",
|
|
8726
8726
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
8727
|
-
|
|
8727
|
+
chunkJBL4PPEE_cjs.UsageSummary,
|
|
8728
8728
|
{
|
|
8729
8729
|
stats: [
|
|
8730
8730
|
{
|
|
@@ -8842,7 +8842,7 @@ function ReaderAppearance({ bundle }) {
|
|
|
8842
8842
|
const { defaults } = bundle;
|
|
8843
8843
|
const isDefault = state.pairingId === defaults.pairingId && state.colorScheme === defaults.colorScheme && state.textSize === defaults.textSize;
|
|
8844
8844
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
8845
|
-
|
|
8845
|
+
chunkJBL4PPEE_cjs.AppearanceSettings,
|
|
8846
8846
|
{
|
|
8847
8847
|
colorScheme: state.colorScheme,
|
|
8848
8848
|
onColorSchemeChange: state.setColorScheme,
|
|
@@ -8903,7 +8903,7 @@ function SwitchRow({ row: row2 }) {
|
|
|
8903
8903
|
const { on, set } = react.useFeatureSwitch(row2.feature);
|
|
8904
8904
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
8905
8905
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8906
|
-
|
|
8906
|
+
chunkJBL4PPEE_cjs.SettingsSwitchRow,
|
|
8907
8907
|
{
|
|
8908
8908
|
id: row2.id ?? row2.feature,
|
|
8909
8909
|
testId: row2.testId ?? `toggle-${row2.feature}`,
|
|
@@ -8914,14 +8914,14 @@ function SwitchRow({ row: row2 }) {
|
|
|
8914
8914
|
onCheckedChange: set
|
|
8915
8915
|
}
|
|
8916
8916
|
),
|
|
8917
|
-
on && row2.rows && row2.rows.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
8917
|
+
on && row2.rows && row2.rows.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.SettingsSwitchGroup, { children: row2.rows.map((sub) => /* @__PURE__ */ jsxRuntime.jsx(FeatureRow, { row: sub }, sub.feature)) })
|
|
8918
8918
|
] });
|
|
8919
8919
|
}
|
|
8920
8920
|
function CallsRow({ row: row2 }) {
|
|
8921
8921
|
const { on, set } = react.useFeatureSwitch(row2.feature);
|
|
8922
|
-
const state =
|
|
8922
|
+
const state = chunkJBL4PPEE_cjs.callsSwitchState(react.useCallsConfig(), on);
|
|
8923
8923
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
8924
|
-
|
|
8924
|
+
chunkJBL4PPEE_cjs.SettingsSwitchRow,
|
|
8925
8925
|
{
|
|
8926
8926
|
id: row2.id ?? row2.feature,
|
|
8927
8927
|
testId: row2.testId ?? `toggle-${row2.feature}`,
|
|
@@ -9052,7 +9052,7 @@ function ConnectedDeploymentStorage() {
|
|
|
9052
9052
|
deployment.unattributed_bytes > 0 && ` \xB7 ${chunk2VJBIBPE_cjs.formatBytes(deployment.unattributed_bytes)} not owned by any ${ui.entityNoun("PROJECT")}`
|
|
9053
9053
|
] }),
|
|
9054
9054
|
trend.dates.length > 1 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
9055
|
-
|
|
9055
|
+
chunkJBL4PPEE_cjs.UsageLineChart,
|
|
9056
9056
|
{
|
|
9057
9057
|
dates: trend.dates,
|
|
9058
9058
|
series: trend.series,
|
|
@@ -9061,7 +9061,7 @@ function ConnectedDeploymentStorage() {
|
|
|
9061
9061
|
}
|
|
9062
9062
|
),
|
|
9063
9063
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
9064
|
-
|
|
9064
|
+
chunkJBL4PPEE_cjs.UsageToggle,
|
|
9065
9065
|
{
|
|
9066
9066
|
value: view,
|
|
9067
9067
|
onChange: setView,
|
|
@@ -9793,7 +9793,7 @@ function ConnectedPeopleMultiSelect({
|
|
|
9793
9793
|
identity: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
9794
9794
|
selected.user ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
9795
9795
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
9796
|
-
|
|
9796
|
+
chunk3X37I6QE_cjs.ConnectedUserEntity,
|
|
9797
9797
|
{
|
|
9798
9798
|
user: selected.user,
|
|
9799
9799
|
size: "xs",
|
|
@@ -9821,7 +9821,7 @@ function ConnectedPeopleMultiSelect({
|
|
|
9821
9821
|
}
|
|
9822
9822
|
),
|
|
9823
9823
|
person.user ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
9824
|
-
|
|
9824
|
+
chunk3X37I6QE_cjs.ConnectedUserEntity,
|
|
9825
9825
|
{
|
|
9826
9826
|
user: person.user,
|
|
9827
9827
|
size: "xs",
|
|
@@ -10094,13 +10094,13 @@ function ConnectedWorkspaceSettings({
|
|
|
10094
10094
|
const [membersExpanded, setMembersExpanded] = react$1.useState(false);
|
|
10095
10095
|
const [shareOpen, setShareOpen] = react$1.useState(false);
|
|
10096
10096
|
if (!workspace) {
|
|
10097
|
-
return /* @__PURE__ */ jsxRuntime.jsx(chunk2GSZG6KA_cjs.PageLoading, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
10097
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunk2GSZG6KA_cjs.PageLoading, { children: /* @__PURE__ */ jsxRuntime.jsx(chunk4RJPTXUQ_cjs.LoadingIndicator, { message: "Loading workspace..." }) });
|
|
10098
10098
|
}
|
|
10099
10099
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
10100
10100
|
/* @__PURE__ */ jsxRuntime.jsxs(chunk2GSZG6KA_cjs.WorkspacePageFrame, { testId, children: [
|
|
10101
10101
|
/* @__PURE__ */ jsxRuntime.jsxs(chunk2GSZG6KA_cjs.WorkspaceIdentityPanel, { children: [
|
|
10102
10102
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10103
|
-
|
|
10103
|
+
chunk4RJPTXUQ_cjs.EntityIdentityBar,
|
|
10104
10104
|
{
|
|
10105
10105
|
testId: "workspace-identity-bar",
|
|
10106
10106
|
canEdit: isOwner,
|
|
@@ -10117,7 +10117,7 @@ function ConnectedWorkspaceSettings({
|
|
|
10117
10117
|
label: "Name",
|
|
10118
10118
|
value: workspace.name,
|
|
10119
10119
|
placeholder: "Untitled",
|
|
10120
|
-
maxLength:
|
|
10120
|
+
maxLength: chunk4RJPTXUQ_cjs.IDENTITY_NAME_MAX_LENGTH,
|
|
10121
10121
|
valueClassName: "truncate text-base font-semibold",
|
|
10122
10122
|
testId: "workspace-home-title",
|
|
10123
10123
|
hideLabel: true,
|
|
@@ -10408,20 +10408,20 @@ function ConnectedEmailWorkspaceDialog({
|
|
|
10408
10408
|
else if (activeSession)
|
|
10409
10409
|
access = {
|
|
10410
10410
|
kind: "session",
|
|
10411
|
-
expiresIn:
|
|
10411
|
+
expiresIn: chunkJBL4PPEE_cjs.formatSessionTtl(activeSession.ttl),
|
|
10412
10412
|
isEnding: terminateSession.isPending,
|
|
10413
10413
|
onEnd: handleEndSession
|
|
10414
10414
|
};
|
|
10415
10415
|
else
|
|
10416
10416
|
access = {
|
|
10417
10417
|
kind: "idle",
|
|
10418
|
-
defaultTtl: limits ?
|
|
10418
|
+
defaultTtl: limits ? chunkJBL4PPEE_cjs.formatSessionTtl(limits.default_ttl_seconds) : void 0,
|
|
10419
10419
|
isAuthorizing: grantAgentAccess.isPending && grantAgentAccess.variables?.mode?.kind === "temporary",
|
|
10420
10420
|
onAuthorize: handleAuthorize
|
|
10421
10421
|
};
|
|
10422
10422
|
}
|
|
10423
10423
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
10424
|
-
|
|
10424
|
+
chunkJBL4PPEE_cjs.EmailWorkspaceDialogView,
|
|
10425
10425
|
{
|
|
10426
10426
|
open,
|
|
10427
10427
|
onOpenChange,
|
|
@@ -10971,7 +10971,7 @@ function StripeCheckoutModal({
|
|
|
10971
10971
|
const [clientSecret, setClientSecret] = react$1.useState(null);
|
|
10972
10972
|
const [isCreating, setIsCreating] = react$1.useState(false);
|
|
10973
10973
|
const [stripe, setStripe] = react$1.useState(null);
|
|
10974
|
-
const { stripeEnabled, checkout } =
|
|
10974
|
+
const { stripeEnabled, checkout } = chunkCCSF7RI4_cjs.useBillingSupport();
|
|
10975
10975
|
const createCheckout = react.useCreateProjectCheckout();
|
|
10976
10976
|
const refreshProject = react.useRefreshProject();
|
|
10977
10977
|
const invalidateProjects = react.useInvalidateProjects();
|
|
@@ -10998,7 +10998,7 @@ function StripeCheckoutModal({
|
|
|
10998
10998
|
projectExtId,
|
|
10999
10999
|
body: {
|
|
11000
11000
|
interval,
|
|
11001
|
-
packs:
|
|
11001
|
+
packs: chunkCCSF7RI4_cjs.PRO_PACKS,
|
|
11002
11002
|
ai_blocks: aiBlocks,
|
|
11003
11003
|
storage_blocks: storageBlocks,
|
|
11004
11004
|
addon_budget_pence: addonBudgetPence,
|
|
@@ -11014,7 +11014,7 @@ function StripeCheckoutModal({
|
|
|
11014
11014
|
},
|
|
11015
11015
|
onError: (error) => {
|
|
11016
11016
|
console.error("Failed to create checkout session:", error);
|
|
11017
|
-
const reason =
|
|
11017
|
+
const reason = chunkCCSF7RI4_cjs.apiErrorDetail(error)?.message;
|
|
11018
11018
|
shell.notify.error(
|
|
11019
11019
|
reason ? `Checkout didn't start: ${reason}` : "Checkout didn't start. Try again."
|
|
11020
11020
|
);
|
|
@@ -11047,9 +11047,9 @@ function StripeCheckoutModal({
|
|
|
11047
11047
|
}
|
|
11048
11048
|
}, [open]);
|
|
11049
11049
|
const isStripeConfigured = stripeEnabled;
|
|
11050
|
-
const vatNote = quote ? `${
|
|
11050
|
+
const vatNote = quote ? `${chunkCCSF7RI4_cjs.checkoutItemsLabel(aiBlocks, storageBlocks)} \xB7 ${chunkCCSF7RI4_cjs.quoteTotalLine(quote)}` : null;
|
|
11051
11051
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
11052
|
-
|
|
11052
|
+
chunkJBL4PPEE_cjs.CheckoutDialogFrame,
|
|
11053
11053
|
{
|
|
11054
11054
|
open,
|
|
11055
11055
|
onOpenChange,
|
|
@@ -11059,7 +11059,7 @@ function StripeCheckoutModal({
|
|
|
11059
11059
|
children: clientSecret && !!stripe && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
11060
11060
|
vatNote && /* @__PURE__ */ jsxRuntime.jsx("p", { "data-testid": "checkout-vat-note", className: "mb-4 text-sm text-muted-foreground", children: vatNote }),
|
|
11061
11061
|
checkout?.render(stripe, { clientSecret, onComplete: handleComplete }),
|
|
11062
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-3", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
11062
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-3", children: /* @__PURE__ */ jsxRuntime.jsxs(chunkJBL4PPEE_cjs.MoreInfo, { title: "Paying", label: "Payment help", testId: "checkout-payment-help", children: [
|
|
11063
11063
|
/* @__PURE__ */ jsxRuntime.jsx("p", { "data-testid": "checkout-decline-note", children: "Card declined? Nothing was charged. Try again or use another card." }),
|
|
11064
11064
|
/* @__PURE__ */ jsxRuntime.jsx("p", { "data-testid": "checkout-vat-id-note", children: "No VAT number? Leave \u2018purchasing as a business\u2019 unticked." }),
|
|
11065
11065
|
/* @__PURE__ */ jsxRuntime.jsx("p", { children: "Add-ons chosen here are on the first invoice with the plan and renew with it until you reduce them." })
|
|
@@ -11101,31 +11101,31 @@ function defaultBillingCountry(languages = typeof navigator === "undefined" ? []
|
|
|
11101
11101
|
}
|
|
11102
11102
|
var choiceForPacks = (packs) => packs > 0 ? "pro" : "free";
|
|
11103
11103
|
function proCard(selected, isAnnual, prices) {
|
|
11104
|
-
const packs =
|
|
11104
|
+
const packs = chunkCCSF7RI4_cjs.PLAN_CHOICE_PACKS.pro;
|
|
11105
11105
|
const currency = prices.monthly?.currency ?? prices.annual?.currency ?? "gbp";
|
|
11106
|
-
const monthly =
|
|
11107
|
-
const annual =
|
|
11106
|
+
const monthly = chunkCCSF7RI4_cjs.packPrice(prices.monthly, packs);
|
|
11107
|
+
const annual = chunkCCSF7RI4_cjs.packPrice(prices.annual, packs);
|
|
11108
11108
|
const current = isAnnual ? annual : monthly;
|
|
11109
11109
|
const effectiveMonthly = current ? isAnnual ? current.amount_ex_vat / 12 : current.amount_ex_vat : null;
|
|
11110
11110
|
return {
|
|
11111
11111
|
id: packs,
|
|
11112
|
-
name:
|
|
11112
|
+
name: chunkCCSF7RI4_cjs.planNameForPacks(packs),
|
|
11113
11113
|
isSelected: selected === "pro",
|
|
11114
11114
|
price: current && effectiveMonthly != null ? {
|
|
11115
11115
|
annual: isAnnual,
|
|
11116
|
-
yearlyStrike: isAnnual && monthly && monthly.amount_ex_vat * 12 > current.amount_ex_vat ?
|
|
11117
|
-
yearlyTotal: isAnnual ?
|
|
11116
|
+
yearlyStrike: isAnnual && monthly && monthly.amount_ex_vat * 12 > current.amount_ex_vat ? chunkCCSF7RI4_cjs.formatMoney(monthly.amount_ex_vat * 12, currency) : void 0,
|
|
11117
|
+
yearlyTotal: isAnnual ? chunkCCSF7RI4_cjs.formatMoney(current.amount_ex_vat, currency) : void 0,
|
|
11118
11118
|
intervalLabel: isAnnual ? "/yr + VAT" : "/mo",
|
|
11119
|
-
monthly:
|
|
11119
|
+
monthly: chunkCCSF7RI4_cjs.formatMoney(Math.round(effectiveMonthly), currency),
|
|
11120
11120
|
taxLabel: "+ VAT",
|
|
11121
11121
|
// The inclusive figure for a UK customer, right under the headline.
|
|
11122
|
-
note: `${
|
|
11122
|
+
note: `${chunkCCSF7RI4_cjs.formatMoney(current.amount, currency)}${isAnnual ? "/yr" : "/mo"} incl. UK VAT`
|
|
11123
11123
|
} : void 0,
|
|
11124
11124
|
features: [
|
|
11125
|
-
`${react.formatGbp(
|
|
11126
|
-
`${
|
|
11125
|
+
`${react.formatGbp(chunkCCSF7RI4_cjs.PRO_AI_GBP)} of AI usage / month`,
|
|
11126
|
+
`${chunkCCSF7RI4_cjs.PRO_STORAGE_GB} GB storage`,
|
|
11127
11127
|
"Unlimited collaborators",
|
|
11128
|
-
...isAnnual ? [
|
|
11128
|
+
...isAnnual ? [chunkCCSF7RI4_cjs.ANNUAL_PREMIUM_AI_NOTE] : []
|
|
11129
11129
|
]
|
|
11130
11130
|
};
|
|
11131
11131
|
}
|
|
@@ -11137,9 +11137,9 @@ function buildPlanCards(selected, isAnnual, prices, isOnFree) {
|
|
|
11137
11137
|
isCurrent: isOnFree,
|
|
11138
11138
|
isSelected: selected === "free" && !isOnFree,
|
|
11139
11139
|
features: [
|
|
11140
|
-
`${react.formatGbp(
|
|
11141
|
-
`${
|
|
11142
|
-
|
|
11140
|
+
`${react.formatGbp(chunkCCSF7RI4_cjs.FREE_AI_GBP)} of AI usage / month`,
|
|
11141
|
+
`${chunkCCSF7RI4_cjs.FREE_STORAGE_MB.toLocaleString("en-US")} MB storage`,
|
|
11142
|
+
chunkCCSF7RI4_cjs.FREE_COLLABORATORS === 0 ? "Just you" : `${chunkCCSF7RI4_cjs.FREE_COLLABORATORS} collaborators`
|
|
11143
11143
|
]
|
|
11144
11144
|
};
|
|
11145
11145
|
return [free, proCard(selected, isAnnual, prices)];
|
|
@@ -11152,7 +11152,7 @@ function PlanChoiceCards({
|
|
|
11152
11152
|
isOnFree = false
|
|
11153
11153
|
}) {
|
|
11154
11154
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
11155
|
-
|
|
11155
|
+
chunkJBL4PPEE_cjs.PlanCardGrid,
|
|
11156
11156
|
{
|
|
11157
11157
|
plans: buildPlanCards(selected, isAnnual, prices, isOnFree),
|
|
11158
11158
|
onSelect: (id) => onSelect(choiceForPacks(id))
|
|
@@ -11161,13 +11161,13 @@ function PlanChoiceCards({
|
|
|
11161
11161
|
}
|
|
11162
11162
|
function PlanInfoPopover2() {
|
|
11163
11163
|
const { openSettings } = chunkT6GRWWRY_cjs.useBlocksEnvironment();
|
|
11164
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
11164
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.PlanInfoPopover, { onOpenModelList: () => openSettings("chat") });
|
|
11165
11165
|
}
|
|
11166
11166
|
function CheckoutAddonBudget({
|
|
11167
11167
|
value,
|
|
11168
11168
|
onChange
|
|
11169
11169
|
}) {
|
|
11170
|
-
const budget =
|
|
11170
|
+
const budget = chunkCCSF7RI4_cjs.parseBudgetPounds(value);
|
|
11171
11171
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
11172
11172
|
"div",
|
|
11173
11173
|
{
|
|
@@ -11190,7 +11190,7 @@ function CheckoutAddonBudget({
|
|
|
11190
11190
|
step: 25,
|
|
11191
11191
|
className: "h-8 w-24",
|
|
11192
11192
|
value,
|
|
11193
|
-
placeholder: String(
|
|
11193
|
+
placeholder: String(chunkCCSF7RI4_cjs.DEFAULT_SPEND_CAP_PENCE / 100),
|
|
11194
11194
|
onChange: (e) => onChange(e.target.value),
|
|
11195
11195
|
"aria-invalid": budget === void 0,
|
|
11196
11196
|
"data-testid": "checkout-addon-budget-input"
|
|
@@ -11208,7 +11208,7 @@ function BlockStepper({
|
|
|
11208
11208
|
onChange,
|
|
11209
11209
|
testId
|
|
11210
11210
|
}) {
|
|
11211
|
-
const set = (n) => onChange(Math.max(0, Math.min(
|
|
11211
|
+
const set = (n) => onChange(Math.max(0, Math.min(chunkCCSF7RI4_cjs.MAX_CHECKOUT_BLOCKS, n)));
|
|
11212
11212
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
11213
11213
|
"div",
|
|
11214
11214
|
{
|
|
@@ -11252,7 +11252,7 @@ function BlockStepper({
|
|
|
11252
11252
|
className: "size-8",
|
|
11253
11253
|
"aria-label": `More: ${label}`,
|
|
11254
11254
|
onClick: () => set(value + 1),
|
|
11255
|
-
disabled: value >=
|
|
11255
|
+
disabled: value >= chunkCCSF7RI4_cjs.MAX_CHECKOUT_BLOCKS,
|
|
11256
11256
|
"data-testid": `${testId}-increment`,
|
|
11257
11257
|
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Plus, { className: "size-4" })
|
|
11258
11258
|
}
|
|
@@ -11269,8 +11269,8 @@ function CheckoutAddonBlocks({
|
|
|
11269
11269
|
onStorageBlocksChange,
|
|
11270
11270
|
price
|
|
11271
11271
|
}) {
|
|
11272
|
-
const ai =
|
|
11273
|
-
const storage =
|
|
11272
|
+
const ai = chunkCCSF7RI4_cjs.addonPrice(price, "ai_usage");
|
|
11273
|
+
const storage = chunkCCSF7RI4_cjs.addonPrice(price, "storage");
|
|
11274
11274
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
11275
11275
|
"div",
|
|
11276
11276
|
{
|
|
@@ -11280,8 +11280,8 @@ function CheckoutAddonBlocks({
|
|
|
11280
11280
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
11281
11281
|
BlockStepper,
|
|
11282
11282
|
{
|
|
11283
|
-
label: `+${react.formatGbp(ai?.ai_gbp ||
|
|
11284
|
-
priceText:
|
|
11283
|
+
label: `+${react.formatGbp(ai?.ai_gbp || chunkCCSF7RI4_cjs.ADDON_BLOCK_AI_GBP)} of AI usage`,
|
|
11284
|
+
priceText: chunkCCSF7RI4_cjs.checkoutBlockPriceText(price, "ai_usage"),
|
|
11285
11285
|
value: aiBlocks,
|
|
11286
11286
|
onChange: onAiBlocksChange,
|
|
11287
11287
|
testId: "checkout-ai-blocks"
|
|
@@ -11290,8 +11290,8 @@ function CheckoutAddonBlocks({
|
|
|
11290
11290
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
11291
11291
|
BlockStepper,
|
|
11292
11292
|
{
|
|
11293
|
-
label: `+${storage?.storage_gb ||
|
|
11294
|
-
priceText:
|
|
11293
|
+
label: `+${storage?.storage_gb || chunkCCSF7RI4_cjs.STORAGE_BLOCK_GB} GB storage`,
|
|
11294
|
+
priceText: chunkCCSF7RI4_cjs.checkoutBlockPriceText(price, "storage"),
|
|
11295
11295
|
value: storageBlocks,
|
|
11296
11296
|
onChange: onStorageBlocksChange,
|
|
11297
11297
|
testId: "checkout-storage-blocks"
|
|
@@ -11353,7 +11353,7 @@ function CheckoutTotal({
|
|
|
11353
11353
|
className: "text-sm font-medium text-foreground",
|
|
11354
11354
|
"data-testid": "checkout-total",
|
|
11355
11355
|
"aria-live": "polite",
|
|
11356
|
-
children: state.quote && !state.isLoading ?
|
|
11356
|
+
children: state.quote && !state.isLoading ? chunkCCSF7RI4_cjs.quoteTotalLine(state.quote) : state.isLoading ? "Calculating total\u2026" : state.error
|
|
11357
11357
|
}
|
|
11358
11358
|
)
|
|
11359
11359
|
] });
|
|
@@ -11386,13 +11386,13 @@ function useCheckoutQuote({
|
|
|
11386
11386
|
...aiBlocks || storageBlocks ? { addons: { ai_usage: aiBlocks, storage: storageBlocks } } : {}
|
|
11387
11387
|
} : null
|
|
11388
11388
|
);
|
|
11389
|
-
const { code, message } = query.isError ?
|
|
11390
|
-
const locationInvalid = code ===
|
|
11389
|
+
const { code, message } = query.isError ? chunkCCSF7RI4_cjs.quoteError(query.error) : {};
|
|
11390
|
+
const locationInvalid = code === chunkCCSF7RI4_cjs.TAX_LOCATION_INVALID;
|
|
11391
11391
|
const isLoading = enabled && (query.isLoading || postal !== postalCode.trim());
|
|
11392
11392
|
return {
|
|
11393
11393
|
quote: query.data,
|
|
11394
11394
|
isLoading,
|
|
11395
|
-
showPostcode:
|
|
11395
|
+
showPostcode: chunkCCSF7RI4_cjs.POSTCODE_COUNTRIES.includes(country) || locationInvalid || postalCode !== "",
|
|
11396
11396
|
error: query.isError ? locationInvalid ? message ?? "Enter your ZIP / postal code to see the total." : message ?? "Couldn't calculate tax. Stripe shows the total next." : null,
|
|
11397
11397
|
canContinue: !isLoading && (!!query.data || query.isError && !locationInvalid)
|
|
11398
11398
|
};
|
|
@@ -11423,14 +11423,14 @@ function ConnectedReferralRewardSummary({
|
|
|
11423
11423
|
if (!reward) return null;
|
|
11424
11424
|
const applied = totalCents != null && currency ? applyReferralReward(totalCents, reward, currency) : null;
|
|
11425
11425
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
11426
|
-
|
|
11426
|
+
chunkJBL4PPEE_cjs.ReferralRewardSummary,
|
|
11427
11427
|
{
|
|
11428
|
-
amountLabel:
|
|
11428
|
+
amountLabel: chunkCCSF7RI4_cjs.formatMoney(reward.amount, reward.currency),
|
|
11429
11429
|
breakdown: applied && totalCents != null && currency ? {
|
|
11430
|
-
subtotal:
|
|
11431
|
-
reward:
|
|
11432
|
-
youPay:
|
|
11433
|
-
rollover: applied.remaining > 0 ?
|
|
11430
|
+
subtotal: chunkCCSF7RI4_cjs.formatMoney(totalCents, currency),
|
|
11431
|
+
reward: chunkCCSF7RI4_cjs.formatMoney(applied.bonus, currency),
|
|
11432
|
+
youPay: chunkCCSF7RI4_cjs.formatMoney(applied.youPay, currency),
|
|
11433
|
+
rollover: applied.remaining > 0 ? chunkCCSF7RI4_cjs.formatMoney(applied.remaining, currency) : void 0
|
|
11434
11434
|
} : void 0
|
|
11435
11435
|
}
|
|
11436
11436
|
);
|
|
@@ -11438,10 +11438,10 @@ function ConnectedReferralRewardSummary({
|
|
|
11438
11438
|
function ConnectedReferralRewardNote() {
|
|
11439
11439
|
const reward = useReferralReward();
|
|
11440
11440
|
if (!reward) return null;
|
|
11441
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
11441
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.ReferralRewardNote, { amountLabel: chunkCCSF7RI4_cjs.formatMoney(reward.amount, reward.currency) });
|
|
11442
11442
|
}
|
|
11443
11443
|
function createProjectErrorMessage(error, fallback = `Failed to create ${ui.entityNoun("PROJECT")}`) {
|
|
11444
|
-
const detail =
|
|
11444
|
+
const detail = chunkCCSF7RI4_cjs.apiErrorDetail(error);
|
|
11445
11445
|
if (typeof detail === "string" && detail) return detail;
|
|
11446
11446
|
const message = detail?.message;
|
|
11447
11447
|
return typeof message === "string" && message ? message : fallback;
|
|
@@ -11451,7 +11451,7 @@ function NewProjectFlow({ open, onOpenChange, defaultName }) {
|
|
|
11451
11451
|
const [plan, setPlan] = react$1.useState("pro");
|
|
11452
11452
|
const [isAnnual, setIsAnnual] = react$1.useState(false);
|
|
11453
11453
|
const [promoCode, setPromoCode] = react$1.useState("");
|
|
11454
|
-
const [addonBudget, setAddonBudget] = react$1.useState(String(
|
|
11454
|
+
const [addonBudget, setAddonBudget] = react$1.useState(String(chunkCCSF7RI4_cjs.DEFAULT_SPEND_CAP_PENCE / 100));
|
|
11455
11455
|
const [checkoutBudget, setCheckoutBudget] = react$1.useState(null);
|
|
11456
11456
|
const [aiBlocks, setAiBlocks] = react$1.useState(0);
|
|
11457
11457
|
const [storageBlocks, setStorageBlocks] = react$1.useState(0);
|
|
@@ -11465,7 +11465,7 @@ function NewProjectFlow({ open, onOpenChange, defaultName }) {
|
|
|
11465
11465
|
const [checkoutProjectName, setCheckoutProjectName] = react$1.useState("");
|
|
11466
11466
|
const [checkoutInterval, setCheckoutInterval] = react$1.useState("month");
|
|
11467
11467
|
const paymentCompletedRef = react$1.useRef(false);
|
|
11468
|
-
const { stripeEnabled } =
|
|
11468
|
+
const { stripeEnabled } = chunkCCSF7RI4_cjs.useBillingSupport();
|
|
11469
11469
|
const { data: products, isLoading: productsLoading } = react.useProducts({
|
|
11470
11470
|
enabled: stripeEnabled
|
|
11471
11471
|
});
|
|
@@ -11494,18 +11494,18 @@ function NewProjectFlow({ open, onOpenChange, defaultName }) {
|
|
|
11494
11494
|
setPlan("pro");
|
|
11495
11495
|
setPromoCode("");
|
|
11496
11496
|
setPostalCode("");
|
|
11497
|
-
setAddonBudget(String(
|
|
11497
|
+
setAddonBudget(String(chunkCCSF7RI4_cjs.DEFAULT_SPEND_CAP_PENCE / 100));
|
|
11498
11498
|
setAiBlocks(0);
|
|
11499
11499
|
setStorageBlocks(0);
|
|
11500
11500
|
setIsCreating(false);
|
|
11501
11501
|
}
|
|
11502
11502
|
onOpenChange(newOpen);
|
|
11503
11503
|
};
|
|
11504
|
-
const prices =
|
|
11504
|
+
const prices = chunkCCSF7RI4_cjs.findProPrices(products);
|
|
11505
11505
|
const intervalPrice = isAnnual ? prices.annual : prices.monthly;
|
|
11506
|
-
const selectedPrice =
|
|
11506
|
+
const selectedPrice = chunkCCSF7RI4_cjs.packPrice(intervalPrice);
|
|
11507
11507
|
const currency = intervalPrice?.currency ?? "gbp";
|
|
11508
|
-
const savingsPercent =
|
|
11508
|
+
const savingsPercent = chunkCCSF7RI4_cjs.calcSavingsPercent(prices.monthly, prices.annual);
|
|
11509
11509
|
const isPro = stripeEnabled && plan !== "free";
|
|
11510
11510
|
const quote = useCheckoutQuote({
|
|
11511
11511
|
interval: isAnnual ? "year" : "month",
|
|
@@ -11515,14 +11515,14 @@ function NewProjectFlow({ open, onOpenChange, defaultName }) {
|
|
|
11515
11515
|
storageBlocks,
|
|
11516
11516
|
enabled: open && isPro && !!selectedPrice
|
|
11517
11517
|
});
|
|
11518
|
-
const canSubmit = !!projectName.trim() && !isCreating && !createProject.isPending && (!isPro || !!selectedPrice &&
|
|
11518
|
+
const canSubmit = !!projectName.trim() && !isCreating && !createProject.isPending && (!isPro || !!selectedPrice && chunkCCSF7RI4_cjs.parseBudgetPounds(addonBudget) !== void 0 && quote.canContinue);
|
|
11519
11519
|
const handleCreateFree = () => {
|
|
11520
11520
|
setIsCreating(true);
|
|
11521
11521
|
createProject.mutate(
|
|
11522
11522
|
{
|
|
11523
11523
|
name: projectName.trim(),
|
|
11524
11524
|
plan: "free",
|
|
11525
|
-
daily_cap_per_user:
|
|
11525
|
+
daily_cap_per_user: chunkCCSF7RI4_cjs.SUGGESTED_DAILY_CAP_PER_USER
|
|
11526
11526
|
},
|
|
11527
11527
|
{
|
|
11528
11528
|
onSuccess: () => {
|
|
@@ -11539,14 +11539,14 @@ function NewProjectFlow({ open, onOpenChange, defaultName }) {
|
|
|
11539
11539
|
};
|
|
11540
11540
|
const handleSubscribe = () => {
|
|
11541
11541
|
const interval = isAnnual ? "year" : "month";
|
|
11542
|
-
const parsed =
|
|
11543
|
-
const budgetToSend = parsed == null || parsed ===
|
|
11542
|
+
const parsed = chunkCCSF7RI4_cjs.parseBudgetPounds(addonBudget);
|
|
11543
|
+
const budgetToSend = parsed == null || parsed === chunkCCSF7RI4_cjs.DEFAULT_SPEND_CAP_PENCE ? null : parsed;
|
|
11544
11544
|
setIsCreating(true);
|
|
11545
11545
|
createProject.mutate(
|
|
11546
11546
|
{
|
|
11547
11547
|
name: projectName.trim(),
|
|
11548
11548
|
plan: "pro",
|
|
11549
|
-
daily_cap_per_user:
|
|
11549
|
+
daily_cap_per_user: chunkCCSF7RI4_cjs.SUGGESTED_DAILY_CAP_PER_USER
|
|
11550
11550
|
},
|
|
11551
11551
|
{
|
|
11552
11552
|
onSuccess: (newProject) => {
|
|
@@ -11587,8 +11587,8 @@ function NewProjectFlow({ open, onOpenChange, defaultName }) {
|
|
|
11587
11587
|
description: stripeEnabled ? "Name it and pick a plan." : `${ui.getEntityLabel("PROJECT", "PLURAL")} group your ${ui.entityNoun("WORKSPACE", "PLURAL")}.`,
|
|
11588
11588
|
showDescription: true,
|
|
11589
11589
|
size: "xl",
|
|
11590
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
11591
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
11590
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(chunkJBL4PPEE_cjs.PlanStack, { gap: 5, children: [
|
|
11591
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkJBL4PPEE_cjs.PlanStack, { gap: 2, children: [
|
|
11592
11592
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { htmlFor: "new-project-name", children: "Name" }),
|
|
11593
11593
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
11594
11594
|
ui.Input,
|
|
@@ -11604,16 +11604,16 @@ function NewProjectFlow({ open, onOpenChange, defaultName }) {
|
|
|
11604
11604
|
}
|
|
11605
11605
|
)
|
|
11606
11606
|
] }),
|
|
11607
|
-
stripeEnabled && (productsLoading ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
11608
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
11607
|
+
stripeEnabled && (productsLoading ? /* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.PlanNotice, { children: "Loading plans\u2026" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
11608
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkJBL4PPEE_cjs.PlanPickerCard, { children: [
|
|
11609
11609
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
11610
|
-
|
|
11610
|
+
chunkJBL4PPEE_cjs.PlanPickerHeader,
|
|
11611
11611
|
{
|
|
11612
11612
|
title: "Plan",
|
|
11613
11613
|
info: /* @__PURE__ */ jsxRuntime.jsx(PlanInfoPopover2, {}),
|
|
11614
11614
|
infoPlacement: "toggle",
|
|
11615
11615
|
toggle: plan !== "free" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
11616
|
-
|
|
11616
|
+
chunkJBL4PPEE_cjs.PricingToggle,
|
|
11617
11617
|
{
|
|
11618
11618
|
isAnnual,
|
|
11619
11619
|
onToggle: () => setIsAnnual(!isAnnual),
|
|
@@ -11651,7 +11651,7 @@ function NewProjectFlow({ open, onOpenChange, defaultName }) {
|
|
|
11651
11651
|
currency
|
|
11652
11652
|
}
|
|
11653
11653
|
),
|
|
11654
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
11654
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.PromoCodeInput, { value: promoCode, onChange: setPromoCode }),
|
|
11655
11655
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
11656
11656
|
CheckoutCountrySelect,
|
|
11657
11657
|
{
|
|
@@ -11670,10 +11670,10 @@ function NewProjectFlow({ open, onOpenChange, defaultName }) {
|
|
|
11670
11670
|
onPostalCodeChange: setPostalCode
|
|
11671
11671
|
}
|
|
11672
11672
|
)
|
|
11673
|
-
] }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
11673
|
+
] }) : /* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.PlanNotice, { children: "Pro isn't available right now." }))
|
|
11674
11674
|
] })),
|
|
11675
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
11676
|
-
isSlow && /* @__PURE__ */ jsxRuntime.jsx(
|
|
11675
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.PlanActionButton, { onClick: submit, disabled: !canSubmit, children: isCreating ? "Creating\u2026" : isPro ? "Continue to payment" : `Create ${ui.entityNoun("PROJECT")}` }),
|
|
11676
|
+
isSlow && /* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.PlanNotice, { className: "text-xs", testId: "new-project-still-working", children: "Still working. We'll update here." })
|
|
11677
11677
|
] })
|
|
11678
11678
|
}
|
|
11679
11679
|
),
|
|
@@ -11703,7 +11703,7 @@ function ConnectedProjectEntity({
|
|
|
11703
11703
|
subscription = "none",
|
|
11704
11704
|
...props
|
|
11705
11705
|
}) {
|
|
11706
|
-
const { stripeEnabled } =
|
|
11706
|
+
const { stripeEnabled } = chunkCCSF7RI4_cjs.useBillingSupport();
|
|
11707
11707
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
11708
11708
|
ui.ProjectEntity,
|
|
11709
11709
|
{
|
|
@@ -11728,7 +11728,7 @@ function ConnectedProjectSelector({
|
|
|
11728
11728
|
readOnly,
|
|
11729
11729
|
className
|
|
11730
11730
|
}) {
|
|
11731
|
-
const { stripeEnabled } =
|
|
11731
|
+
const { stripeEnabled } = chunkCCSF7RI4_cjs.useBillingSupport();
|
|
11732
11732
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
11733
11733
|
chunkHYAYXLIZ_cjs.ProjectPicker,
|
|
11734
11734
|
{
|
|
@@ -12104,9 +12104,9 @@ function ConnectedMailboxSyncDialog({
|
|
|
12104
12104
|
showDescription: true,
|
|
12105
12105
|
className: "w-[92vw] sm:max-w-lg",
|
|
12106
12106
|
children: [
|
|
12107
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
12108
|
-
!lockedWorkspaceExtId && /* @__PURE__ */ jsxRuntime.jsx(
|
|
12109
|
-
|
|
12107
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkJBL4PPEE_cjs.SyncDialogBody, { children: [
|
|
12108
|
+
!lockedWorkspaceExtId && /* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.SyncField, { label: "Target workspace", htmlFor: "sync-workspace", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
12109
|
+
chunkJBL4PPEE_cjs.SyncSelect,
|
|
12110
12110
|
{
|
|
12111
12111
|
id: "sync-workspace",
|
|
12112
12112
|
value: workspaceExtId,
|
|
@@ -12115,9 +12115,9 @@ function ConnectedMailboxSyncDialog({
|
|
|
12115
12115
|
options: memberWorkspaces.map((w) => ({ value: w.external_id, label: w.name }))
|
|
12116
12116
|
}
|
|
12117
12117
|
) }),
|
|
12118
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
12118
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkJBL4PPEE_cjs.SyncField, { label: "Backfill window", htmlFor: "sync-backfill", children: [
|
|
12119
12119
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12120
|
-
|
|
12120
|
+
chunkJBL4PPEE_cjs.SyncSelect,
|
|
12121
12121
|
{
|
|
12122
12122
|
id: "sync-backfill",
|
|
12123
12123
|
value: backfill,
|
|
@@ -12137,17 +12137,17 @@ function ConnectedMailboxSyncDialog({
|
|
|
12137
12137
|
"aria-label": "Import emails since date"
|
|
12138
12138
|
}
|
|
12139
12139
|
),
|
|
12140
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12140
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.SyncSmallNote, { children: "Emails are always imported from this date onward \u2014 the start point never moves." })
|
|
12141
12141
|
] })
|
|
12142
12142
|
] }),
|
|
12143
12143
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12144
|
-
|
|
12144
|
+
chunkJBL4PPEE_cjs.SyncField,
|
|
12145
12145
|
{
|
|
12146
12146
|
label: `Folders to import${selectedFolders.length > 0 ? ` (${selectedFolders.length})` : ""}`,
|
|
12147
12147
|
hint: "Select at least one folder to import.",
|
|
12148
|
-
actions: folders.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
12148
|
+
actions: folders.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(chunkJBL4PPEE_cjs.SyncLinkRow, { children: [
|
|
12149
12149
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12150
|
-
|
|
12150
|
+
chunkJBL4PPEE_cjs.SyncLinkButton,
|
|
12151
12151
|
{
|
|
12152
12152
|
onClick: () => setExpandAllNonce((n) => n + 1),
|
|
12153
12153
|
testId: "mail-folders-expand-all",
|
|
@@ -12155,20 +12155,20 @@ function ConnectedMailboxSyncDialog({
|
|
|
12155
12155
|
}
|
|
12156
12156
|
),
|
|
12157
12157
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12158
|
-
|
|
12158
|
+
chunkJBL4PPEE_cjs.SyncLinkButton,
|
|
12159
12159
|
{
|
|
12160
12160
|
onClick: () => setCollapseAllNonce((n) => n + 1),
|
|
12161
12161
|
testId: "mail-folders-collapse-all",
|
|
12162
12162
|
children: "Collapse all"
|
|
12163
12163
|
}
|
|
12164
12164
|
),
|
|
12165
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12165
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.SyncLinkButton, { onClick: toggleAllFolders, children: allSelected ? "Clear all" : "Select all" })
|
|
12166
12166
|
] }),
|
|
12167
|
-
children: foldersLoading ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
12167
|
+
children: foldersLoading ? /* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.SyncLoading, { children: "Loading folders\u2026" }) : foldersError ? (
|
|
12168
12168
|
// A failed fetch is not an empty mailbox: it hides auth/scope errors (e.g. a Gmail
|
|
12169
12169
|
// account needing reconnect).
|
|
12170
12170
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12171
|
-
|
|
12171
|
+
chunkJBL4PPEE_cjs.SyncReconnectNotice,
|
|
12172
12172
|
{
|
|
12173
12173
|
message: `Couldn\u2019t load folders from ${catalog.display_name}. Reconnect the account and try again.`,
|
|
12174
12174
|
onReconnect: () => void reconnect(),
|
|
@@ -12176,7 +12176,7 @@ function ConnectedMailboxSyncDialog({
|
|
|
12176
12176
|
testId: "folders-reconnect"
|
|
12177
12177
|
}
|
|
12178
12178
|
)
|
|
12179
|
-
) : folders.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
12179
|
+
) : folders.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.SyncNote, { children: "No folders found." }) : /* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.SyncTreeFrame, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
12180
12180
|
chunkXDMIVPJP_cjs.MailFolderTree,
|
|
12181
12181
|
{
|
|
12182
12182
|
nodes: folderTree,
|
|
@@ -12188,9 +12188,9 @@ function ConnectedMailboxSyncDialog({
|
|
|
12188
12188
|
) })
|
|
12189
12189
|
}
|
|
12190
12190
|
),
|
|
12191
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
12191
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkJBL4PPEE_cjs.SyncOptions, { children: [
|
|
12192
12192
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12193
|
-
|
|
12193
|
+
chunkJBL4PPEE_cjs.SyncOptionToggle,
|
|
12194
12194
|
{
|
|
12195
12195
|
checked: skipDuplicates,
|
|
12196
12196
|
onCheckedChange: setSkipDuplicates,
|
|
@@ -12200,7 +12200,7 @@ function ConnectedMailboxSyncDialog({
|
|
|
12200
12200
|
}
|
|
12201
12201
|
),
|
|
12202
12202
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12203
|
-
|
|
12203
|
+
chunkJBL4PPEE_cjs.SyncOptionToggle,
|
|
12204
12204
|
{
|
|
12205
12205
|
checked: autoRename,
|
|
12206
12206
|
onCheckedChange: setAutoRename,
|
|
@@ -12210,7 +12210,7 @@ function ConnectedMailboxSyncDialog({
|
|
|
12210
12210
|
}
|
|
12211
12211
|
),
|
|
12212
12212
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12213
|
-
|
|
12213
|
+
chunkJBL4PPEE_cjs.SyncOptionToggle,
|
|
12214
12214
|
{
|
|
12215
12215
|
checked: shared,
|
|
12216
12216
|
onCheckedChange: setShared,
|
|
@@ -12220,7 +12220,7 @@ function ConnectedMailboxSyncDialog({
|
|
|
12220
12220
|
}
|
|
12221
12221
|
),
|
|
12222
12222
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12223
|
-
|
|
12223
|
+
chunkJBL4PPEE_cjs.SyncOptionToggle,
|
|
12224
12224
|
{
|
|
12225
12225
|
checked: autoSync,
|
|
12226
12226
|
onCheckedChange: setAutoSync,
|
|
@@ -12232,7 +12232,7 @@ function ConnectedMailboxSyncDialog({
|
|
|
12232
12232
|
] })
|
|
12233
12233
|
] }),
|
|
12234
12234
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12235
|
-
|
|
12235
|
+
chunkJBL4PPEE_cjs.SyncDialogFooter,
|
|
12236
12236
|
{
|
|
12237
12237
|
onCancel: () => onOpenChange(false),
|
|
12238
12238
|
onSave: handleEnableSubmit,
|
|
@@ -12294,7 +12294,7 @@ function DriveFolderNode({
|
|
|
12294
12294
|
const mightHaveChildren = docCount == null || docCount > 0;
|
|
12295
12295
|
const orderedChildren = [...children].sort((a, b) => a.name.localeCompare(b.name));
|
|
12296
12296
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
12297
|
-
|
|
12297
|
+
chunkJBL4PPEE_cjs.SyncFolderRow,
|
|
12298
12298
|
{
|
|
12299
12299
|
id: folder.id,
|
|
12300
12300
|
name: folder.name,
|
|
@@ -12308,7 +12308,7 @@ function DriveFolderNode({
|
|
|
12308
12308
|
onCheckedChange: () => onToggle(folder.id),
|
|
12309
12309
|
count: typeof docCount === "number" ? docCount : void 0,
|
|
12310
12310
|
isCountLoading: isSelectable && countLoading,
|
|
12311
|
-
children: isLoading ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
12311
|
+
children: isLoading ? /* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.SyncFolderStatus, { depth, kind: "loading" }) : orderedChildren.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.SyncFolderStatus, { depth, kind: "empty" }) : orderedChildren.map((child) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
12312
12312
|
DriveFolderNode,
|
|
12313
12313
|
{
|
|
12314
12314
|
vendorKey,
|
|
@@ -12454,9 +12454,9 @@ function ConnectedDriveSyncDialog({
|
|
|
12454
12454
|
showDescription: true,
|
|
12455
12455
|
className: "w-[92vw] sm:max-w-lg",
|
|
12456
12456
|
children: [
|
|
12457
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
12458
|
-
!lockedWorkspaceExtId && /* @__PURE__ */ jsxRuntime.jsx(
|
|
12459
|
-
|
|
12457
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkJBL4PPEE_cjs.SyncDialogBody, { children: [
|
|
12458
|
+
!lockedWorkspaceExtId && /* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.SyncField, { label: "Target workspace", htmlFor: "drive-sync-workspace", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
12459
|
+
chunkJBL4PPEE_cjs.SyncSelect,
|
|
12460
12460
|
{
|
|
12461
12461
|
id: "drive-sync-workspace",
|
|
12462
12462
|
value: workspaceExtId,
|
|
@@ -12466,13 +12466,13 @@ function ConnectedDriveSyncDialog({
|
|
|
12466
12466
|
}
|
|
12467
12467
|
) }),
|
|
12468
12468
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12469
|
-
|
|
12469
|
+
chunkJBL4PPEE_cjs.SyncField,
|
|
12470
12470
|
{
|
|
12471
12471
|
label: `Folders to import${selectedFolders.length > 0 ? ` (${selectedFolders.length})` : ""}`,
|
|
12472
12472
|
hint: "Select at least one folder. Importing a folder includes everything inside it.",
|
|
12473
|
-
actions: orderedFolders.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
12473
|
+
actions: orderedFolders.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(chunkJBL4PPEE_cjs.SyncLinkRow, { children: [
|
|
12474
12474
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12475
|
-
|
|
12475
|
+
chunkJBL4PPEE_cjs.SyncLinkButton,
|
|
12476
12476
|
{
|
|
12477
12477
|
onClick: () => setExpandAllNonce((n) => n + 1),
|
|
12478
12478
|
testId: "drive-folders-expand-all",
|
|
@@ -12480,7 +12480,7 @@ function ConnectedDriveSyncDialog({
|
|
|
12480
12480
|
}
|
|
12481
12481
|
),
|
|
12482
12482
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12483
|
-
|
|
12483
|
+
chunkJBL4PPEE_cjs.SyncLinkButton,
|
|
12484
12484
|
{
|
|
12485
12485
|
onClick: () => setCollapseAllNonce((n) => n + 1),
|
|
12486
12486
|
testId: "drive-folders-collapse-all",
|
|
@@ -12488,19 +12488,19 @@ function ConnectedDriveSyncDialog({
|
|
|
12488
12488
|
}
|
|
12489
12489
|
)
|
|
12490
12490
|
] }),
|
|
12491
|
-
children: foldersLoading ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
12492
|
-
|
|
12491
|
+
children: foldersLoading ? /* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.SyncLoading, { children: "Loading folders\u2026" }) : needsReconnect ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
12492
|
+
chunkJBL4PPEE_cjs.SyncReconnectNotice,
|
|
12493
12493
|
{
|
|
12494
12494
|
...reconnectButtonProps,
|
|
12495
12495
|
message: `Reconnect ${catalog.display_name} to enable ${productName} \u2014 your account needs to grant file access.`
|
|
12496
12496
|
}
|
|
12497
12497
|
) : foldersError ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
12498
|
-
|
|
12498
|
+
chunkJBL4PPEE_cjs.SyncReconnectNotice,
|
|
12499
12499
|
{
|
|
12500
12500
|
...reconnectButtonProps,
|
|
12501
12501
|
message: `Couldn\u2019t load folders from ${productName}. Reconnect the account and try again.`
|
|
12502
12502
|
}
|
|
12503
|
-
) : orderedFolders.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
12503
|
+
) : orderedFolders.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.SyncNote, { children: "No folders found." }) : /* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.SyncTreeFrame, { children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-0.5", "data-testid": "drive-folder-tree", children: orderedFolders.map((f) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
12504
12504
|
DriveFolderNode,
|
|
12505
12505
|
{
|
|
12506
12506
|
vendorKey: catalog.vendor_key,
|
|
@@ -12517,9 +12517,9 @@ function ConnectedDriveSyncDialog({
|
|
|
12517
12517
|
)) }) })
|
|
12518
12518
|
}
|
|
12519
12519
|
),
|
|
12520
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
12520
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkJBL4PPEE_cjs.SyncOptions, { children: [
|
|
12521
12521
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12522
|
-
|
|
12522
|
+
chunkJBL4PPEE_cjs.SyncOptionToggle,
|
|
12523
12523
|
{
|
|
12524
12524
|
checked: skipDuplicates,
|
|
12525
12525
|
onCheckedChange: setSkipDuplicates,
|
|
@@ -12528,7 +12528,7 @@ function ConnectedDriveSyncDialog({
|
|
|
12528
12528
|
}
|
|
12529
12529
|
),
|
|
12530
12530
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12531
|
-
|
|
12531
|
+
chunkJBL4PPEE_cjs.SyncOptionToggle,
|
|
12532
12532
|
{
|
|
12533
12533
|
checked: autoRename,
|
|
12534
12534
|
onCheckedChange: setAutoRename,
|
|
@@ -12537,7 +12537,7 @@ function ConnectedDriveSyncDialog({
|
|
|
12537
12537
|
}
|
|
12538
12538
|
),
|
|
12539
12539
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12540
|
-
|
|
12540
|
+
chunkJBL4PPEE_cjs.SyncOptionToggle,
|
|
12541
12541
|
{
|
|
12542
12542
|
checked: shared,
|
|
12543
12543
|
onCheckedChange: setShared,
|
|
@@ -12546,7 +12546,7 @@ function ConnectedDriveSyncDialog({
|
|
|
12546
12546
|
}
|
|
12547
12547
|
),
|
|
12548
12548
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12549
|
-
|
|
12549
|
+
chunkJBL4PPEE_cjs.SyncOptionToggle,
|
|
12550
12550
|
{
|
|
12551
12551
|
checked: autoSync,
|
|
12552
12552
|
onCheckedChange: setAutoSync,
|
|
@@ -12558,7 +12558,7 @@ function ConnectedDriveSyncDialog({
|
|
|
12558
12558
|
] })
|
|
12559
12559
|
] }),
|
|
12560
12560
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12561
|
-
|
|
12561
|
+
chunkJBL4PPEE_cjs.SyncDialogFooter,
|
|
12562
12562
|
{
|
|
12563
12563
|
onCancel: () => onOpenChange(false),
|
|
12564
12564
|
onSave: handleEnableSubmit,
|
|
@@ -12579,36 +12579,36 @@ function ConnectedSharePointAdminConsentPage({
|
|
|
12579
12579
|
const result = givenResult === void 0 ? queryResult : givenResult;
|
|
12580
12580
|
const { apiBaseUrl } = chunkT6GRWWRY_cjs.useBlocksEnvironment().runtimeConfig;
|
|
12581
12581
|
const consentUrl = `${apiBaseUrl}/v1/connectors/microsoft_sharepoint/admin-consent`;
|
|
12582
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
12582
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkHVOPUYAG_cjs.ConsentPage, { children: /* @__PURE__ */ jsxRuntime.jsxs(chunkHVOPUYAG_cjs.ConsentCard, { size: "md", children: [
|
|
12583
12583
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12584
|
-
|
|
12584
|
+
chunkHVOPUYAG_cjs.ConsentHeader,
|
|
12585
12585
|
{
|
|
12586
12586
|
icon: /* @__PURE__ */ jsxRuntime.jsx(chunkVGNCU5JJ_cjs.VendorLogo, { vendorKey: "microsoft_sharepoint", product: "sharepoint" }),
|
|
12587
12587
|
title: "Approve ARBI for SharePoint access",
|
|
12588
12588
|
children: "A member of your organization uses ARBI and wants to sync documents from SharePoint. Your Microsoft 365 organization requires an administrator to approve this once for the whole organization."
|
|
12589
12589
|
}
|
|
12590
12590
|
),
|
|
12591
|
-
result === "granted" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
12592
|
-
result === "declined" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
12593
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
12591
|
+
result === "granted" && /* @__PURE__ */ jsxRuntime.jsx(chunkHVOPUYAG_cjs.ConsentNotice, { tone: "success", title: "Access approved \u2014 you\u2019re all set.", className: "mt-4", children: "People in your organization can now connect SharePoint from their own ARBI account. Nothing is synced until each user connects and chooses what to import." }),
|
|
12592
|
+
result === "declined" && /* @__PURE__ */ jsxRuntime.jsx(chunkHVOPUYAG_cjs.ConsentNotice, { tone: "warning", title: "The approval didn\u2019t complete.", className: "mt-4", children: "The request was declined or canceled on the Microsoft screen. You can try again below \u2014 you must sign in with a Microsoft 365 administrator account of your organization." }),
|
|
12593
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkHVOPUYAG_cjs.ConsentSection, { title: "What you are approving", children: [
|
|
12594
12594
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12595
|
-
|
|
12595
|
+
chunkHVOPUYAG_cjs.ConsentBulletList,
|
|
12596
12596
|
{
|
|
12597
12597
|
items: [
|
|
12598
12598
|
/* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
12599
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12599
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkHVOPUYAG_cjs.ConsentStrong, { children: "Read SharePoint sites and files" }),
|
|
12600
12600
|
" \u2014 lets each user who connects their own account import documents from sites they already have access to. ARBI never gets more access than the user has."
|
|
12601
12601
|
] }),
|
|
12602
12602
|
/* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
12603
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12603
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkHVOPUYAG_cjs.ConsentStrong, { children: "Sign users in and keep access" }),
|
|
12604
12604
|
" \u2014 standard sign-in (openid, profile, email) and offline access so syncs keep working between sessions."
|
|
12605
12605
|
] })
|
|
12606
12606
|
]
|
|
12607
12607
|
}
|
|
12608
12608
|
),
|
|
12609
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12609
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkHVOPUYAG_cjs.ConsentText, { children: "Approving does not sync anything by itself and grants ARBI no standing access to your tenant. Each user still connects their own Microsoft account, and their tokens are end-to-end encrypted so ARBI\u2019s servers cannot read them at rest." }),
|
|
12610
12610
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Button, { asChild: true, className: "w-full pointer-coarse:h-11", children: /* @__PURE__ */ jsxRuntime.jsx("a", { href: consentUrl, children: "Review and approve in Microsoft" }) }),
|
|
12611
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12611
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkHVOPUYAG_cjs.ConsentText, { variant: "footnote", children: "You\u2019ll sign in at login.microsoftonline.com and see Microsoft\u2019s own summary of these permissions before anything is granted." })
|
|
12612
12612
|
] })
|
|
12613
12613
|
] }) });
|
|
12614
12614
|
}
|
|
@@ -12630,7 +12630,7 @@ function BillingProjectEntity({
|
|
|
12630
12630
|
subscription = "none",
|
|
12631
12631
|
...props
|
|
12632
12632
|
}) {
|
|
12633
|
-
const { stripeEnabled } =
|
|
12633
|
+
const { stripeEnabled } = chunkCCSF7RI4_cjs.useBillingSupport();
|
|
12634
12634
|
const isPaid2 = stripeEnabled && (subscription === "active" || subscription === "past_due" || subscription === "dev");
|
|
12635
12635
|
return /* @__PURE__ */ jsxRuntime.jsx(ui.ProjectEntity, { ...props, subscription, isPaid: isPaid2 });
|
|
12636
12636
|
}
|
|
@@ -12657,8 +12657,8 @@ function InvoicesModal({
|
|
|
12657
12657
|
key: inv.number ?? String(i),
|
|
12658
12658
|
date: formatInvoiceDate(inv.date),
|
|
12659
12659
|
kind: KIND_LABELS2[inv.kind],
|
|
12660
|
-
amount:
|
|
12661
|
-
amountNote: inv.amount_ex_vat != null && inv.amount_ex_vat !== inv.amount ? `${
|
|
12660
|
+
amount: chunkCCSF7RI4_cjs.formatMoney(inv.amount, inv.currency),
|
|
12661
|
+
amountNote: inv.amount_ex_vat != null && inv.amount_ex_vat !== inv.amount ? `${chunkCCSF7RI4_cjs.formatMoney(inv.amount_ex_vat, inv.currency)} ex VAT` : void 0,
|
|
12662
12662
|
status: inv.status,
|
|
12663
12663
|
isPaid: isPaid2,
|
|
12664
12664
|
href: inv.hosted_invoice_url ?? inv.url ?? inv.pdf_url ?? void 0,
|
|
@@ -12666,7 +12666,7 @@ function InvoicesModal({
|
|
|
12666
12666
|
};
|
|
12667
12667
|
});
|
|
12668
12668
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
12669
|
-
|
|
12669
|
+
chunkJBL4PPEE_cjs.InvoicesDialog,
|
|
12670
12670
|
{
|
|
12671
12671
|
open,
|
|
12672
12672
|
onOpenChange,
|
|
@@ -12680,7 +12680,7 @@ function SubscriptionPlans({ projectExtId, onDismiss }) {
|
|
|
12680
12680
|
const { data: products, isLoading, error } = react.useProducts();
|
|
12681
12681
|
const [isAnnual, setIsAnnual] = react$1.useState(false);
|
|
12682
12682
|
const [promoCode, setPromoCode] = react$1.useState("");
|
|
12683
|
-
const [addonBudget, setAddonBudget] = react$1.useState(String(
|
|
12683
|
+
const [addonBudget, setAddonBudget] = react$1.useState(String(chunkCCSF7RI4_cjs.DEFAULT_SPEND_CAP_PENCE / 100));
|
|
12684
12684
|
const [checkoutBudget, setCheckoutBudget] = react$1.useState(null);
|
|
12685
12685
|
const [aiBlocks, setAiBlocks] = react$1.useState(0);
|
|
12686
12686
|
const [storageBlocks, setStorageBlocks] = react$1.useState(0);
|
|
@@ -12698,31 +12698,31 @@ function SubscriptionPlans({ projectExtId, onDismiss }) {
|
|
|
12698
12698
|
storageBlocks,
|
|
12699
12699
|
enabled: !!products?.length
|
|
12700
12700
|
});
|
|
12701
|
-
if (isLoading) return /* @__PURE__ */ jsxRuntime.jsx(
|
|
12702
|
-
if (error) return /* @__PURE__ */ jsxRuntime.jsx(
|
|
12703
|
-
if (!products || products.length === 0) return /* @__PURE__ */ jsxRuntime.jsx(
|
|
12704
|
-
const prices =
|
|
12701
|
+
if (isLoading) return /* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.PlanNotice, { children: "Loading plans\u2026" });
|
|
12702
|
+
if (error) return /* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.PlanNotice, { tone: "error", children: "Plans didn't load. Try again." });
|
|
12703
|
+
if (!products || products.length === 0) return /* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.PlanNotice, { children: "No plans available." });
|
|
12704
|
+
const prices = chunkCCSF7RI4_cjs.findProPrices(products);
|
|
12705
12705
|
const intervalPrice = isAnnual ? prices.annual : prices.monthly;
|
|
12706
|
-
const selectedPrice =
|
|
12706
|
+
const selectedPrice = chunkCCSF7RI4_cjs.packPrice(intervalPrice);
|
|
12707
12707
|
if (!intervalPrice) return null;
|
|
12708
12708
|
const interval = isAnnual ? "year" : "month";
|
|
12709
|
-
const savingsPercent =
|
|
12709
|
+
const savingsPercent = chunkCCSF7RI4_cjs.calcSavingsPercent(prices.monthly, prices.annual);
|
|
12710
12710
|
const handleSubscribe = () => {
|
|
12711
12711
|
setCheckoutInterval(interval);
|
|
12712
|
-
const parsed =
|
|
12713
|
-
setCheckoutBudget(parsed == null || parsed ===
|
|
12712
|
+
const parsed = chunkCCSF7RI4_cjs.parseBudgetPounds(addonBudget);
|
|
12713
|
+
setCheckoutBudget(parsed == null || parsed === chunkCCSF7RI4_cjs.DEFAULT_SPEND_CAP_PENCE ? null : parsed);
|
|
12714
12714
|
setCheckoutQuote(quote.quote);
|
|
12715
12715
|
setIsCheckoutModalOpen(true);
|
|
12716
12716
|
};
|
|
12717
12717
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
12718
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
12718
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkJBL4PPEE_cjs.PlanStack, { children: [
|
|
12719
12719
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12720
|
-
|
|
12720
|
+
chunkJBL4PPEE_cjs.PlanPickerHeader,
|
|
12721
12721
|
{
|
|
12722
12722
|
title: "Plan",
|
|
12723
12723
|
info: /* @__PURE__ */ jsxRuntime.jsx(PlanInfoPopover2, {}),
|
|
12724
12724
|
toggle: /* @__PURE__ */ jsxRuntime.jsx(
|
|
12725
|
-
|
|
12725
|
+
chunkJBL4PPEE_cjs.PricingToggle,
|
|
12726
12726
|
{
|
|
12727
12727
|
isAnnual,
|
|
12728
12728
|
onToggle: () => setIsAnnual(!isAnnual),
|
|
@@ -12759,7 +12759,7 @@ function SubscriptionPlans({ projectExtId, onDismiss }) {
|
|
|
12759
12759
|
currency: intervalPrice.currency
|
|
12760
12760
|
}
|
|
12761
12761
|
),
|
|
12762
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12762
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.PromoCodeInput, { value: promoCode, onChange: setPromoCode }),
|
|
12763
12763
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12764
12764
|
CheckoutCountrySelect,
|
|
12765
12765
|
{
|
|
@@ -12771,9 +12771,9 @@ function SubscriptionPlans({ projectExtId, onDismiss }) {
|
|
|
12771
12771
|
}
|
|
12772
12772
|
),
|
|
12773
12773
|
/* @__PURE__ */ jsxRuntime.jsx(CheckoutTotal, { state: quote, postalCode, onPostalCodeChange: setPostalCode }),
|
|
12774
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
12774
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkJBL4PPEE_cjs.PlanActionRow, { children: [
|
|
12775
12775
|
onDismiss && /* @__PURE__ */ jsxRuntime.jsx(
|
|
12776
|
-
|
|
12776
|
+
chunkJBL4PPEE_cjs.PlanActionButton,
|
|
12777
12777
|
{
|
|
12778
12778
|
tone: "muted",
|
|
12779
12779
|
fill: true,
|
|
@@ -12784,11 +12784,11 @@ function SubscriptionPlans({ projectExtId, onDismiss }) {
|
|
|
12784
12784
|
}
|
|
12785
12785
|
),
|
|
12786
12786
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12787
|
-
|
|
12787
|
+
chunkJBL4PPEE_cjs.PlanActionButton,
|
|
12788
12788
|
{
|
|
12789
12789
|
fill: true,
|
|
12790
12790
|
onClick: handleSubscribe,
|
|
12791
|
-
disabled: !selectedPrice ||
|
|
12791
|
+
disabled: !selectedPrice || chunkCCSF7RI4_cjs.parseBudgetPounds(addonBudget) === void 0 || !quote.canContinue,
|
|
12792
12792
|
size: "sm",
|
|
12793
12793
|
"data-testid": "subscribe-button",
|
|
12794
12794
|
children: "Continue to payment"
|
|
@@ -12840,7 +12840,7 @@ var FALLBACK_MESSAGES = {
|
|
|
12840
12840
|
BILLING_ADDRESS_REQUIRED: "Add a billing address first."
|
|
12841
12841
|
};
|
|
12842
12842
|
function addonErrorMessage(error) {
|
|
12843
|
-
const detail =
|
|
12843
|
+
const detail = chunkCCSF7RI4_cjs.apiErrorDetail(error);
|
|
12844
12844
|
if (detail && typeof detail === "object") {
|
|
12845
12845
|
const { code, message } = detail;
|
|
12846
12846
|
if (message) return message;
|
|
@@ -12866,14 +12866,14 @@ function chargeRefusalMessage(error) {
|
|
|
12866
12866
|
return code ? REFUSALS[code] : null;
|
|
12867
12867
|
}
|
|
12868
12868
|
function addonErrorCode(error) {
|
|
12869
|
-
const detail =
|
|
12869
|
+
const detail = chunkCCSF7RI4_cjs.apiErrorDetail(error);
|
|
12870
12870
|
if (detail && typeof detail === "object") {
|
|
12871
12871
|
const code = detail.code;
|
|
12872
12872
|
if (code && code in FALLBACK_MESSAGES) return code;
|
|
12873
12873
|
}
|
|
12874
12874
|
return null;
|
|
12875
12875
|
}
|
|
12876
|
-
var addedMessage = (kind, blockAiGbp, blockStorageGb) => kind === "ai_usage" ? `${react.formatGbp(blockAiGbp ??
|
|
12876
|
+
var addedMessage = (kind, blockAiGbp, blockStorageGb) => kind === "ai_usage" ? `${react.formatGbp(blockAiGbp ?? chunkCCSF7RI4_cjs.ADDON_BLOCK_AI_GBP)} of AI usage added` : `${blockStorageGb ?? chunkCCSF7RI4_cjs.STORAGE_BLOCK_GB} GB added`;
|
|
12877
12877
|
function useAddonPurchase() {
|
|
12878
12878
|
const addBlock = react.useAddProjectAddonBlock();
|
|
12879
12879
|
const { mutate } = addBlock;
|
|
@@ -12925,7 +12925,7 @@ function PlanChangeLines({
|
|
|
12925
12925
|
isError,
|
|
12926
12926
|
className
|
|
12927
12927
|
}) {
|
|
12928
|
-
const lines = preview ?
|
|
12928
|
+
const lines = preview ? chunkCCSF7RI4_cjs.planPreviewLines(preview) : [{ id: "pay-today", text: isError ? chunkCCSF7RI4_cjs.PAY_TODAY_UNPRICED : "Checking price\u2026" }];
|
|
12929
12929
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className, "data-testid": "plan-change-lines", children: lines.map((line) => /* @__PURE__ */ jsxRuntime.jsx("p", { "data-testid": `plan-change-${line.id}`, children: line.text }, line.id)) });
|
|
12930
12930
|
}
|
|
12931
12931
|
var BANK_CONFIRM_PLAN_CHANGE = "Confirm with your bank. Nothing is charged until you do.";
|
|
@@ -12933,13 +12933,13 @@ function notifyPlanChange(data, fallback, planName2) {
|
|
|
12933
12933
|
const outcome = data?.plan_change;
|
|
12934
12934
|
switch (outcome?.result) {
|
|
12935
12935
|
case "upgraded": {
|
|
12936
|
-
const plan =
|
|
12937
|
-
const charged = outcome.charged_pence > 0 ? ` \xB7 ${
|
|
12936
|
+
const plan = chunkCCSF7RI4_cjs.planNameForPacks(data?.addons?.packs ?? data?.packs);
|
|
12937
|
+
const charged = outcome.charged_pence > 0 ? ` \xB7 ${chunkCCSF7RI4_cjs.formatMoney(outcome.charged_pence, "gbp")} charged` : "";
|
|
12938
12938
|
shell.notify.success(`Upgraded to ${plan}${charged}`);
|
|
12939
12939
|
break;
|
|
12940
12940
|
}
|
|
12941
12941
|
case "scheduled": {
|
|
12942
|
-
const when2 =
|
|
12942
|
+
const when2 = chunkCCSF7RI4_cjs.formatPeriodEnd(data?.addons?.period_end ?? data?.current_period_end);
|
|
12943
12943
|
shell.notify.success(when2 ? `Scheduled for ${when2}` : fallback);
|
|
12944
12944
|
break;
|
|
12945
12945
|
}
|
|
@@ -12972,23 +12972,23 @@ function ChangeProPlan({
|
|
|
12972
12972
|
const { data: products } = react.useProducts();
|
|
12973
12973
|
const changePlan = react.useChangeProjectPlan();
|
|
12974
12974
|
const cancel = react.useCancelProjectSubscription();
|
|
12975
|
-
const prices =
|
|
12975
|
+
const prices = chunkCCSF7RI4_cjs.findProPrices(products);
|
|
12976
12976
|
const addons = project.addons;
|
|
12977
12977
|
const isCanceling = project.cancel_at_period_end === true || project.subscription === "canceled";
|
|
12978
|
-
const currentPacks = Math.max(addons?.packs ?? project.packs ??
|
|
12979
|
-
const isLegacyMultiPack = currentPacks >
|
|
12978
|
+
const currentPacks = Math.max(addons?.packs ?? project.packs ?? chunkCCSF7RI4_cjs.PRO_PACKS, chunkCCSF7RI4_cjs.PRO_PACKS);
|
|
12979
|
+
const isLegacyMultiPack = currentPacks > chunkCCSF7RI4_cjs.PRO_PACKS;
|
|
12980
12980
|
const currentInterval = project.plan_interval === "year" ? "year" : "month";
|
|
12981
12981
|
const scheduledPacks = isCanceling ? 0 : addons?.packs_next ?? currentPacks;
|
|
12982
12982
|
const scheduledInterval = addons?.pending_interval ?? currentInterval;
|
|
12983
12983
|
const [targetPacks, setTargetPacks] = react$1.useState(scheduledPacks);
|
|
12984
12984
|
const [chosenInterval, setChosenInterval] = react$1.useState(scheduledInterval);
|
|
12985
|
-
const targetInterval = targetPacks >
|
|
12985
|
+
const targetInterval = targetPacks > chunkCCSF7RI4_cjs.PRO_PACKS ? currentInterval : chosenInterval;
|
|
12986
12986
|
const periodEnd = formatDate(addons?.period_end ?? project.current_period_end);
|
|
12987
12987
|
const when2 = periodEnd ?? "the end of the period";
|
|
12988
12988
|
const shortWhen = periodEnd ? periodEnd.replace(/ \d{4}$/, "") : "period end";
|
|
12989
12989
|
const isPending = changePlan.isPending || cancel.isPending;
|
|
12990
12990
|
const sameAsScheduled = targetPacks === scheduledPacks && (targetPacks === 0 || targetInterval === scheduledInterval);
|
|
12991
|
-
const packOptions = isLegacyMultiPack ? [currentPacks,
|
|
12991
|
+
const packOptions = isLegacyMultiPack ? [currentPacks, chunkCCSF7RI4_cjs.PRO_PACKS, 0] : [chunkCCSF7RI4_cjs.PRO_PACKS, 0];
|
|
12992
12992
|
const intervalPrice = targetInterval === "year" ? prices.annual : prices.monthly;
|
|
12993
12993
|
const currency = intervalPrice?.currency ?? project.currency ?? "gbp";
|
|
12994
12994
|
const preview = react.usePreviewProjectPlanChange(
|
|
@@ -12996,7 +12996,7 @@ function ChangeProPlan({
|
|
|
12996
12996
|
sameAsScheduled || targetPacks === 0 ? null : { packs: targetPacks, interval: targetInterval }
|
|
12997
12997
|
);
|
|
12998
12998
|
const noChange = sameAsScheduled || preview.data?.unchanged === true;
|
|
12999
|
-
const nameFor = (packs) => packs === currentPacks && packs > 0 ?
|
|
12999
|
+
const nameFor = (packs) => packs === currentPacks && packs > 0 ? chunkCCSF7RI4_cjs.proTierName(project) : chunkCCSF7RI4_cjs.planNameForPacks(packs);
|
|
13000
13000
|
const effects = [];
|
|
13001
13001
|
const target = nameFor(targetPacks);
|
|
13002
13002
|
if (targetPacks === 0) {
|
|
@@ -13006,7 +13006,7 @@ function ChangeProPlan({
|
|
|
13006
13006
|
if (targetPacks < currentPacks) {
|
|
13007
13007
|
effects.push(`Changes to one Pro licence on ${when2}. No refund.`);
|
|
13008
13008
|
} else if (!isCanceling && addons?.packs_next != null) {
|
|
13009
|
-
effects.push(`Cancels the change to ${
|
|
13009
|
+
effects.push(`Cancels the change to ${chunkCCSF7RI4_cjs.planNameForPacks(addons.packs_next)}.`);
|
|
13010
13010
|
}
|
|
13011
13011
|
if (targetInterval !== currentInterval) {
|
|
13012
13012
|
effects.push(`${targetInterval === "year" ? "Annual" : "Monthly"} billing from ${when2}.`);
|
|
@@ -13045,33 +13045,33 @@ function ChangeProPlan({
|
|
|
13045
13045
|
if (packs === 0) {
|
|
13046
13046
|
return {
|
|
13047
13047
|
total: "\xA30",
|
|
13048
|
-
summary: `${react.formatGbp(
|
|
13048
|
+
summary: `${react.formatGbp(chunkCCSF7RI4_cjs.FREE_AI_GBP)} of AI usage \xB7 ${chunkCCSF7RI4_cjs.FREE_STORAGE_MB} MB \xB7 just you`
|
|
13049
13049
|
};
|
|
13050
13050
|
}
|
|
13051
|
-
const allowance = `${react.formatGbp(
|
|
13052
|
-
const legacy = packs >
|
|
13053
|
-
const exVat = legacy ? project.amount_ex_vat :
|
|
13051
|
+
const allowance = `${react.formatGbp(chunkCCSF7RI4_cjs.PRO_AI_GBP * packs)} of AI usage \xB7 ${chunkCCSF7RI4_cjs.PRO_STORAGE_GB * packs} GB`;
|
|
13052
|
+
const legacy = packs > chunkCCSF7RI4_cjs.PRO_PACKS;
|
|
13053
|
+
const exVat = legacy ? project.amount_ex_vat : chunkCCSF7RI4_cjs.packPrice(intervalPrice)?.amount_ex_vat;
|
|
13054
13054
|
return {
|
|
13055
|
-
total: exVat != null ?
|
|
13055
|
+
total: exVat != null ? chunkCCSF7RI4_cjs.plusVat(exVat, currency) : void 0,
|
|
13056
13056
|
summary: allowance
|
|
13057
13057
|
};
|
|
13058
13058
|
};
|
|
13059
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
13059
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(chunkJBL4PPEE_cjs.PlanStack, { gap: 4, testId: "change-pro-plan", children: [
|
|
13060
13060
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center justify-between gap-2", children: [
|
|
13061
13061
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium text-foreground", children: "Billing" }),
|
|
13062
|
-
targetPacks >
|
|
13063
|
-
|
|
13062
|
+
targetPacks > chunkCCSF7RI4_cjs.PRO_PACKS ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-muted-foreground", "data-testid": "change-plan-interval-fixed", children: currentInterval === "year" ? "Annual" : "Monthly" }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
13063
|
+
chunkJBL4PPEE_cjs.PricingToggle,
|
|
13064
13064
|
{
|
|
13065
13065
|
isAnnual: targetInterval === "year",
|
|
13066
13066
|
onToggle: () => setChosenInterval(targetInterval === "year" ? "month" : "year"),
|
|
13067
|
-
savingsPercent:
|
|
13067
|
+
savingsPercent: chunkCCSF7RI4_cjs.calcSavingsPercent(prices.monthly, prices.annual)
|
|
13068
13068
|
}
|
|
13069
13069
|
)
|
|
13070
13070
|
] }),
|
|
13071
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
13071
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.PlanStack, { gap: 2, children: packOptions.map((packs) => {
|
|
13072
13072
|
const { total, summary } = optionFor(packs);
|
|
13073
13073
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
13074
|
-
|
|
13074
|
+
chunkJBL4PPEE_cjs.PlanTierOption,
|
|
13075
13075
|
{
|
|
13076
13076
|
onSelect: setTargetPacks,
|
|
13077
13077
|
option: {
|
|
@@ -13088,13 +13088,13 @@ function ChangeProPlan({
|
|
|
13088
13088
|
);
|
|
13089
13089
|
}) }),
|
|
13090
13090
|
isLegacyMultiPack && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-x-3 gap-y-1", children: [
|
|
13091
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
13092
|
-
|
|
13091
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkJBL4PPEE_cjs.PlanNotice, { className: "text-xs", testId: "change-plan-legacy-note", children: [
|
|
13092
|
+
chunkCCSF7RI4_cjs.proTierName(project),
|
|
13093
13093
|
" is no longer sold"
|
|
13094
13094
|
] }),
|
|
13095
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
13095
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkJBL4PPEE_cjs.MoreInfo, { title: "Legacy plan", testId: "change-plan-legacy-more-info", children: [
|
|
13096
13096
|
/* @__PURE__ */ jsxRuntime.jsxs("p", { children: [
|
|
13097
|
-
|
|
13097
|
+
chunkCCSF7RI4_cjs.proTierName(project),
|
|
13098
13098
|
" keeps renewing at its own price, with its allowance and add-ons, until you change it."
|
|
13099
13099
|
] }),
|
|
13100
13100
|
/* @__PURE__ */ jsxRuntime.jsxs("p", { children: [
|
|
@@ -13115,7 +13115,7 @@ function ChangeProPlan({
|
|
|
13115
13115
|
),
|
|
13116
13116
|
targetPacks > 0 && /* @__PURE__ */ jsxRuntime.jsx(ConnectedReferralRewardNote, {}),
|
|
13117
13117
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
13118
|
-
|
|
13118
|
+
chunkJBL4PPEE_cjs.PlanActionButton,
|
|
13119
13119
|
{
|
|
13120
13120
|
onClick: apply,
|
|
13121
13121
|
disabled: noChange || isPending,
|
|
@@ -13126,9 +13126,9 @@ function ChangeProPlan({
|
|
|
13126
13126
|
] });
|
|
13127
13127
|
}
|
|
13128
13128
|
function ChangePlanDialog({ project, open, onOpenChange }) {
|
|
13129
|
-
const isPro = !!project &&
|
|
13129
|
+
const isPro = !!project && chunkCCSF7RI4_cjs.isProProject(project);
|
|
13130
13130
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
13131
|
-
|
|
13131
|
+
chunkJBL4PPEE_cjs.PlanDialogFrame,
|
|
13132
13132
|
{
|
|
13133
13133
|
open,
|
|
13134
13134
|
onOpenChange,
|
|
@@ -13148,14 +13148,14 @@ function ChangePlanDialog({ project, open, onOpenChange }) {
|
|
|
13148
13148
|
}
|
|
13149
13149
|
function ProjectsTable() {
|
|
13150
13150
|
const { data: projects, isLoading } = react.useProjects();
|
|
13151
|
-
const currentUserExtId =
|
|
13151
|
+
const currentUserExtId = chunkCCSF7RI4_cjs.useSelfExtId();
|
|
13152
13152
|
const { openProject } = chunkT6GRWWRY_cjs.useBlocksEnvironment();
|
|
13153
13153
|
const updateProject = react.useUpdateProjectFields();
|
|
13154
13154
|
const [renameTarget, setRenameTarget] = react$1.useState(null);
|
|
13155
13155
|
const [renameValue, setRenameValue] = react$1.useState("");
|
|
13156
13156
|
const [invoicesTarget, setInvoicesTarget] = react$1.useState(null);
|
|
13157
13157
|
const [upgradeTarget, setUpgradeTarget] = react$1.useState(null);
|
|
13158
|
-
const { stripeEnabled } =
|
|
13158
|
+
const { stripeEnabled } = chunkCCSF7RI4_cjs.useBillingSupport();
|
|
13159
13159
|
const ownedProjects = react$1.useMemo(
|
|
13160
13160
|
() => (projects ?? []).filter((p) => p.created_by === currentUserExtId),
|
|
13161
13161
|
[projects, currentUserExtId]
|
|
@@ -13194,13 +13194,13 @@ function ProjectsTable() {
|
|
|
13194
13194
|
const hasPaid = p.subscription === "active" || p.subscription === "past_due";
|
|
13195
13195
|
const canUpgrade = stripeEnabled && !hasPaid && p.subscription !== "canceled" && p.subscription !== "dev";
|
|
13196
13196
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
13197
|
-
|
|
13197
|
+
chunkJBL4PPEE_cjs.ProjectRow,
|
|
13198
13198
|
{
|
|
13199
13199
|
testId: `project-row-${p.external_id}`,
|
|
13200
13200
|
onOpen: () => openProject(p.external_id),
|
|
13201
13201
|
identity: /* @__PURE__ */ jsxRuntime.jsx(BillingProjectEntity, { name: p.name, relation: "mine", subscription: p.subscription, size: "sm" }),
|
|
13202
|
-
summary: stripeEnabled ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex items-center whitespace-nowrap", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
13203
|
-
usage: p.quotas ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
13202
|
+
summary: stripeEnabled ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex items-center whitespace-nowrap", children: /* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.PlanBadge, { ...chunkCCSF7RI4_cjs.planBadgeView(p) }) }) : void 0,
|
|
13203
|
+
usage: p.quotas ? /* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.QuotaMeter, { items: chunkCCSF7RI4_cjs.getQuotaItems(p.quotas), size: "lg" }) : void 0,
|
|
13204
13204
|
actions: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
13205
13205
|
canUpgrade && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
13206
13206
|
ui.Button,
|
|
@@ -13234,9 +13234,9 @@ function ProjectsTable() {
|
|
|
13234
13234
|
);
|
|
13235
13235
|
};
|
|
13236
13236
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
13237
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
13237
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.ProjectList, { isLoading, isEmpty: ownedProjects.length === 0, isFilteredOut: false, children: ownedProjects.map(renderRow) }),
|
|
13238
13238
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
13239
|
-
|
|
13239
|
+
chunkJBL4PPEE_cjs.RenameDialog,
|
|
13240
13240
|
{
|
|
13241
13241
|
open: !!renameTarget,
|
|
13242
13242
|
onClose: () => setRenameTarget(null),
|
|
@@ -13267,7 +13267,7 @@ function ProjectsTable() {
|
|
|
13267
13267
|
}
|
|
13268
13268
|
function SharedProjects() {
|
|
13269
13269
|
const { data: projects } = react.useProjects();
|
|
13270
|
-
const currentUserExtId =
|
|
13270
|
+
const currentUserExtId = chunkCCSF7RI4_cjs.useSelfExtId();
|
|
13271
13271
|
const { data: usageToday } = react.useUserUsageToday();
|
|
13272
13272
|
const shared = react$1.useMemo(
|
|
13273
13273
|
() => (projects ?? []).filter((p) => p.created_by !== currentUserExtId),
|
|
@@ -13276,13 +13276,13 @@ function SharedProjects() {
|
|
|
13276
13276
|
if (shared.length === 0) return null;
|
|
13277
13277
|
const usedToday = usageToday?.used_gbp ?? 0;
|
|
13278
13278
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
13279
|
-
|
|
13279
|
+
chunkJBL4PPEE_cjs.SharedProjectsSection,
|
|
13280
13280
|
{
|
|
13281
13281
|
footnote: `Your daily AI usage allowance in ${ui.entityNoun("PROJECT", "PLURAL")} other people run \u2014 their plan and billing are theirs.`,
|
|
13282
13282
|
children: shared.map((p) => {
|
|
13283
13283
|
const cap = p.daily_cap_per_user;
|
|
13284
13284
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
13285
|
-
|
|
13285
|
+
chunkJBL4PPEE_cjs.SharedProjectRow,
|
|
13286
13286
|
{
|
|
13287
13287
|
testId: `shared-project-${p.external_id}`,
|
|
13288
13288
|
identity: /* @__PURE__ */ jsxRuntime.jsx(BillingProjectEntity, { name: p.name, relation: "other", size: "sm" }),
|
|
@@ -13328,7 +13328,7 @@ function DailyCapEditor({ project }) {
|
|
|
13328
13328
|
);
|
|
13329
13329
|
};
|
|
13330
13330
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
13331
|
-
|
|
13331
|
+
chunkJBL4PPEE_cjs.DailyCapField,
|
|
13332
13332
|
{
|
|
13333
13333
|
value,
|
|
13334
13334
|
onChange: setValue,
|
|
@@ -13341,11 +13341,11 @@ function DailyCapEditor({ project }) {
|
|
|
13341
13341
|
function SubscriptionStatus({ project }) {
|
|
13342
13342
|
const { quotas, cancel_at_period_end, subscription, current_period_end, addons } = project;
|
|
13343
13343
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
13344
|
-
|
|
13344
|
+
chunkJBL4PPEE_cjs.SubscriptionStatusView,
|
|
13345
13345
|
{
|
|
13346
|
-
resetDate:
|
|
13346
|
+
resetDate: chunkCCSF7RI4_cjs.formatResetDate(addons?.ai_usage_reset_at ?? current_period_end),
|
|
13347
13347
|
isCanceling: subscription === "canceled" || cancel_at_period_end === true,
|
|
13348
|
-
meters:
|
|
13348
|
+
meters: chunkCCSF7RI4_cjs.getQuotaItems(quotas).map((q) => ({
|
|
13349
13349
|
key: q.key,
|
|
13350
13350
|
icon: q.icon,
|
|
13351
13351
|
label: q.label,
|
|
@@ -13409,7 +13409,7 @@ function PendingChange({
|
|
|
13409
13409
|
}
|
|
13410
13410
|
);
|
|
13411
13411
|
}
|
|
13412
|
-
var titleFor = (kind, blockAiGbp, blockStorageGb) => kind === "ai_usage" ? `Add ${react.formatGbp(blockAiGbp ??
|
|
13412
|
+
var titleFor = (kind, blockAiGbp, blockStorageGb) => kind === "ai_usage" ? `Add ${react.formatGbp(blockAiGbp ?? chunkCCSF7RI4_cjs.ADDON_BLOCK_AI_GBP)} of AI usage` : `Add ${blockStorageGb ?? chunkCCSF7RI4_cjs.STORAGE_BLOCK_GB} GB storage`;
|
|
13413
13413
|
var blocksOf = (kind, project) => (kind === "ai_usage" ? project.addons?.ai_blocks : project.addons?.storage_blocks) ?? 0;
|
|
13414
13414
|
function Row({ label, children }) {
|
|
13415
13415
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-baseline justify-between gap-4", children: [
|
|
@@ -13430,11 +13430,11 @@ function AddAddonDialog({
|
|
|
13430
13430
|
const addons = project.addons;
|
|
13431
13431
|
if (!addons) return null;
|
|
13432
13432
|
const isAnnual = project.plan_interval === "year";
|
|
13433
|
-
const price =
|
|
13434
|
-
const nextCharge =
|
|
13435
|
-
const now = quote.data ?
|
|
13436
|
-
const renewal = quote.data ?
|
|
13437
|
-
const today = now ? { total:
|
|
13433
|
+
const price = chunkCCSF7RI4_cjs.addonCharge(kind, addons, isAnnual, addons.period_end ?? project.current_period_end);
|
|
13434
|
+
const nextCharge = chunkCCSF7RI4_cjs.formatPeriodEnd(addons.period_end ?? project.current_period_end);
|
|
13435
|
+
const now = quote.data ? chunkCCSF7RI4_cjs.quoteParts(quote.data.now) : null;
|
|
13436
|
+
const renewal = quote.data ? chunkCCSF7RI4_cjs.quoteParts(quote.data.renewal) : null;
|
|
13437
|
+
const today = now ? { total: chunkCCSF7RI4_cjs.money2(now.total), detail: chunkCCSF7RI4_cjs.taxDetail(now) } : { total: price.now, detail: `incl. VAT (${price.nowExVat} + ${price.nowVat} VAT)` };
|
|
13438
13438
|
const pricing = quote.isLoading;
|
|
13439
13439
|
const confirm = () => {
|
|
13440
13440
|
const before = blocksOf(kind, project);
|
|
@@ -13473,8 +13473,8 @@ function AddAddonDialog({
|
|
|
13473
13473
|
isAnnual ? "yearly" : "monthly",
|
|
13474
13474
|
" \xB7 no refund"
|
|
13475
13475
|
] }),
|
|
13476
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
13477
|
-
|
|
13476
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.MoreInfo, { title: "Adding a top-up", testId: "add-addon-more-info", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
13477
|
+
chunkJBL4PPEE_cjs.MoreInfoList,
|
|
13478
13478
|
{
|
|
13479
13479
|
items: [
|
|
13480
13480
|
{
|
|
@@ -13489,7 +13489,7 @@ function AddAddonDialog({
|
|
|
13489
13489
|
term: "Usage cap",
|
|
13490
13490
|
text: "Adding by hand is never blocked by the usage cap; the cap limits automatic top-ups only."
|
|
13491
13491
|
},
|
|
13492
|
-
...isAnnual && kind === "ai_usage" ? [{ term: "Annual", text: `${
|
|
13492
|
+
...isAnnual && kind === "ai_usage" ? [{ term: "Annual", text: `${chunkCCSF7RI4_cjs.ANNUAL_PREMIUM_AI_NOTE}.` }] : []
|
|
13493
13493
|
]
|
|
13494
13494
|
}
|
|
13495
13495
|
) })
|
|
@@ -13512,7 +13512,7 @@ function AddAddonDialog({
|
|
|
13512
13512
|
)
|
|
13513
13513
|
] }) }),
|
|
13514
13514
|
!pricing && /* @__PURE__ */ jsxRuntime.jsxs(Row, { label: "Next charge", children: [
|
|
13515
|
-
renewal ?
|
|
13515
|
+
renewal ? chunkCCSF7RI4_cjs.totalWithTaxWord(renewal) : price.then.replace(/\/(month|year)/, ""),
|
|
13516
13516
|
nextCharge ? ` on ${nextCharge}` : " at renewal"
|
|
13517
13517
|
] })
|
|
13518
13518
|
] }) }),
|
|
@@ -13543,11 +13543,11 @@ function ReduceAddonDialog({
|
|
|
13543
13543
|
const update = react.useUpdateProjectNextPeriodAddons();
|
|
13544
13544
|
const addons = project.addons;
|
|
13545
13545
|
if (!addons) return null;
|
|
13546
|
-
const { min, next } =
|
|
13546
|
+
const { min, next } = chunkCCSF7RI4_cjs.reduceBounds(kind, addons);
|
|
13547
13547
|
const keep2 = Math.max(min, next - 1);
|
|
13548
|
-
const size =
|
|
13549
|
-
const what =
|
|
13550
|
-
const from =
|
|
13548
|
+
const size = chunkCCSF7RI4_cjs.nextRemovedBlockSize(kind, addons);
|
|
13549
|
+
const what = chunkCCSF7RI4_cjs.stepLabel(kind, size);
|
|
13550
|
+
const from = chunkCCSF7RI4_cjs.formatPeriodEnd(addons.period_end ?? project.current_period_end) ?? "your next renewal";
|
|
13551
13551
|
const fromShort = from.replace(/ \d{4}$/, "");
|
|
13552
13552
|
const allowanceNext = kind === "ai_usage" ? addons.ai_allowance_next_gbp - size : addons.storage_allowance_next_gb - size;
|
|
13553
13553
|
const allowanceNow = kind === "ai_usage" ? addons.ai_allowance_gbp : addons.storage_allowance_gb;
|
|
@@ -13555,7 +13555,7 @@ function ReduceAddonDialog({
|
|
|
13555
13555
|
const save = () => update.mutate(
|
|
13556
13556
|
{
|
|
13557
13557
|
projectExtId: project.external_id,
|
|
13558
|
-
body:
|
|
13558
|
+
body: chunkCCSF7RI4_cjs.nextPeriodBody(kind, keep2)
|
|
13559
13559
|
},
|
|
13560
13560
|
{
|
|
13561
13561
|
onSuccess: () => {
|
|
@@ -13583,7 +13583,7 @@ function ReduceAddonDialog({
|
|
|
13583
13583
|
fromShort,
|
|
13584
13584
|
" \xB7 no refund"
|
|
13585
13585
|
] }),
|
|
13586
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
13586
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkJBL4PPEE_cjs.MoreInfo, { title: "Reducing a top-up", testId: "reduce-addon-more-info", children: [
|
|
13587
13587
|
/* @__PURE__ */ jsxRuntime.jsxs("p", { children: [
|
|
13588
13588
|
"The reduction applies from your next renewal (",
|
|
13589
13589
|
from,
|
|
@@ -13622,7 +13622,7 @@ function ReduceAddonDialog({
|
|
|
13622
13622
|
}
|
|
13623
13623
|
) });
|
|
13624
13624
|
}
|
|
13625
|
-
var gbp = (pence) =>
|
|
13625
|
+
var gbp = (pence) => chunkCCSF7RI4_cjs.formatMoney(pence, "gbp");
|
|
13626
13626
|
var gb2 = (n) => `${Math.round(n * 10) / 10} GB`;
|
|
13627
13627
|
var pct = (used, limit) => limit > 0 ? Math.min(100, used / limit * 100) : 0;
|
|
13628
13628
|
function formatShortDate(unix) {
|
|
@@ -13634,20 +13634,20 @@ function AutoTopupThreshold({
|
|
|
13634
13634
|
addons
|
|
13635
13635
|
}) {
|
|
13636
13636
|
const updateSettings = react.useUpdateProjectAddonSettings();
|
|
13637
|
-
const min = addons.min_auto_topup_threshold_gbp ||
|
|
13637
|
+
const min = addons.min_auto_topup_threshold_gbp || chunkCCSF7RI4_cjs.MIN_AUTO_TOPUP_THRESHOLD_GBP;
|
|
13638
13638
|
const saved = addons.auto_topup_threshold_gbp;
|
|
13639
13639
|
const [value, setValue] = react$1.useState(String(saved));
|
|
13640
13640
|
react$1.useEffect(() => setValue(String(saved)), [saved]);
|
|
13641
13641
|
const parsed = Number(value);
|
|
13642
13642
|
const valid = Number.isFinite(parsed) && parsed >= min;
|
|
13643
13643
|
const dirty = valid && parsed !== saved;
|
|
13644
|
-
const off =
|
|
13644
|
+
const off = chunkCCSF7RI4_cjs.isAddonBudgetZero(addons);
|
|
13645
13645
|
const save = () => {
|
|
13646
13646
|
if (!dirty) return;
|
|
13647
13647
|
updateSettings.mutate(
|
|
13648
13648
|
{
|
|
13649
13649
|
projectExtId: project.external_id,
|
|
13650
|
-
body:
|
|
13650
|
+
body: chunkCCSF7RI4_cjs.addonSettingsBody(addons, { auto_topup_threshold_gbp: parsed })
|
|
13651
13651
|
},
|
|
13652
13652
|
{
|
|
13653
13653
|
onSuccess: () => shell.notify.success(`Auto-add below ${react.formatGbp(parsed)} of AI usage left`),
|
|
@@ -13744,10 +13744,10 @@ function ResourceMeter({
|
|
|
13744
13744
|
const update = react.useUpdateProjectNextPeriodAddons();
|
|
13745
13745
|
const isAi = kind === "ai_usage";
|
|
13746
13746
|
const slug = isAi ? "ai-usage" : "storage";
|
|
13747
|
-
const periodEnd =
|
|
13747
|
+
const periodEnd = chunkCCSF7RI4_cjs.formatPeriodEnd(addons.period_end ?? project.current_period_end);
|
|
13748
13748
|
const from = periodEnd ?? "your next renewal";
|
|
13749
13749
|
const fromShort = formatShortDate(addons.period_end ?? project.current_period_end) ?? "renewal";
|
|
13750
|
-
const { min, current, next } =
|
|
13750
|
+
const { min, current, next } = chunkCCSF7RI4_cjs.reduceBounds(kind, addons);
|
|
13751
13751
|
const fmt = (n) => isAi ? react.formatGbp(n) : gb2(n);
|
|
13752
13752
|
const used = isAi ? addons.ai_used_gbp : addons.storage_used_gb;
|
|
13753
13753
|
const allowance = isAi ? addons.ai_allowance_gbp : addons.storage_allowance_gb;
|
|
@@ -13755,15 +13755,15 @@ function ResourceMeter({
|
|
|
13755
13755
|
const plan = isAi ? addons.plan_ai_gbp : addons.plan_storage_gb;
|
|
13756
13756
|
const topUps = Math.max(0, allowance - plan);
|
|
13757
13757
|
const blocks = isAi ? addons.ai_blocks : addons.storage_blocks;
|
|
13758
|
-
const hasLegacy =
|
|
13759
|
-
const room =
|
|
13760
|
-
const capZero =
|
|
13761
|
-
const resets = isAi ? formatShortDate(
|
|
13762
|
-
const removeSize =
|
|
13758
|
+
const hasLegacy = chunkCCSF7RI4_cjs.splitBlocks(kind, blocks, addons).legacy > 0;
|
|
13759
|
+
const room = chunkCCSF7RI4_cjs.autoRoom(kind, addons);
|
|
13760
|
+
const capZero = chunkCCSF7RI4_cjs.isAddonBudgetZero(addons);
|
|
13761
|
+
const resets = isAi ? formatShortDate(chunkCCSF7RI4_cjs.aiUsageResetTimestamp(project)) : null;
|
|
13762
|
+
const removeSize = chunkCCSF7RI4_cjs.nextRemovedBlockSize(kind, addons);
|
|
13763
13763
|
const undo = () => update.mutate(
|
|
13764
13764
|
{
|
|
13765
13765
|
projectExtId: project.external_id,
|
|
13766
|
-
body:
|
|
13766
|
+
body: chunkCCSF7RI4_cjs.nextPeriodBody(kind, current)
|
|
13767
13767
|
},
|
|
13768
13768
|
{
|
|
13769
13769
|
onSuccess: () => shell.notify.success("Kept"),
|
|
@@ -13780,7 +13780,7 @@ function ResourceMeter({
|
|
|
13780
13780
|
allowance: { used, plan, topUps, autoRoom: capZero ? 0 : room },
|
|
13781
13781
|
legend: {
|
|
13782
13782
|
plan: `Plan ${fmt(plan)}`,
|
|
13783
|
-
topUps: topUps > 0 ? `Top-ups ${fmt(topUps)}${hasLegacy ? ` (${
|
|
13783
|
+
topUps: topUps > 0 ? `Top-ups ${fmt(topUps)}${hasLegacy ? ` (${chunkCCSF7RI4_cjs.blocksLabel(kind, blocks, addons)})` : ""}` : void 0,
|
|
13784
13784
|
autoRoom: room != null && room > 0 && !capZero ? `Automatic up to ${fmt(room)}` : void 0
|
|
13785
13785
|
},
|
|
13786
13786
|
testId: `usage-meter-${slug}`,
|
|
@@ -13809,9 +13809,9 @@ function ResourceMeter({
|
|
|
13809
13809
|
{
|
|
13810
13810
|
icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Plus, { className: "size-3.5" }),
|
|
13811
13811
|
label: isAi ? react.formatGbp(addons.block_ai_gbp) : `${addons.block_storage_gb} GB`,
|
|
13812
|
-
caption:
|
|
13812
|
+
caption: chunkCCSF7RI4_cjs.addStepCaption(kind, addons),
|
|
13813
13813
|
onClick: onAdd,
|
|
13814
|
-
ariaLabel: `Add ${
|
|
13814
|
+
ariaLabel: `Add ${chunkCCSF7RI4_cjs.stepLabel(kind, isAi ? addons.block_ai_gbp : addons.block_storage_gb)}`,
|
|
13815
13815
|
testId: isAi ? "add-ai-block-button" : "add-storage-block-button"
|
|
13816
13816
|
}
|
|
13817
13817
|
),
|
|
@@ -13822,7 +13822,7 @@ function ResourceMeter({
|
|
|
13822
13822
|
label: isAi ? react.formatGbp(removeSize) : `${removeSize} GB`,
|
|
13823
13823
|
caption: `from ${fromShort}`,
|
|
13824
13824
|
onClick: onReduce,
|
|
13825
|
-
ariaLabel: `Remove ${
|
|
13825
|
+
ariaLabel: `Remove ${chunkCCSF7RI4_cjs.stepLabel(kind, removeSize)} from ${from}`,
|
|
13826
13826
|
testId: `reduce-${slug}-button`
|
|
13827
13827
|
}
|
|
13828
13828
|
)
|
|
@@ -13861,10 +13861,10 @@ function UsageCapEditor({ project, addons }) {
|
|
|
13861
13861
|
updateSettings.mutate(
|
|
13862
13862
|
{
|
|
13863
13863
|
projectExtId: project.external_id,
|
|
13864
|
-
body:
|
|
13864
|
+
body: chunkCCSF7RI4_cjs.addonSettingsBody(addons, { spend_cap_pence: nextCap })
|
|
13865
13865
|
},
|
|
13866
13866
|
{
|
|
13867
|
-
onSuccess: () => shell.notify.success(
|
|
13867
|
+
onSuccess: () => shell.notify.success(chunkCCSF7RI4_cjs.budgetSavedMessage(nextCap)),
|
|
13868
13868
|
onError: (error) => shell.notify.error(addonErrorMessage(error))
|
|
13869
13869
|
}
|
|
13870
13870
|
);
|
|
@@ -13875,14 +13875,14 @@ function UsageCapEditor({ project, addons }) {
|
|
|
13875
13875
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
13876
13876
|
chunkQZTNTP75_cjs.UsageMeter,
|
|
13877
13877
|
{
|
|
13878
|
-
label:
|
|
13878
|
+
label: chunkCCSF7RI4_cjs.USAGE_CAP_LABEL,
|
|
13879
13879
|
hint: spendResets && savedCap !== 0 ? `resets ${spendResets}` : void 0,
|
|
13880
13880
|
value: readout,
|
|
13881
13881
|
pct: savedCap != null && savedCap > 0 ? pct(spent, savedCap) : 0,
|
|
13882
13882
|
testId: "addon-spend"
|
|
13883
13883
|
}
|
|
13884
13884
|
),
|
|
13885
|
-
addons.cap_reached && savedCap != null && savedCap > 0 && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", "data-testid": "addon-cap-reached", children:
|
|
13885
|
+
addons.cap_reached && savedCap != null && savedCap > 0 && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", "data-testid": "addon-cap-reached", children: chunkCCSF7RI4_cjs.CAP_REACHED_MESSAGE }),
|
|
13886
13886
|
addons.manual_spent_pence > 0 && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-xs text-muted-foreground", "data-testid": "addon-manual-spend", children: [
|
|
13887
13887
|
"Added by hand this month: ",
|
|
13888
13888
|
gbp(addons.manual_spent_pence),
|
|
@@ -13903,7 +13903,7 @@ function UsageCapEditor({ project, addons }) {
|
|
|
13903
13903
|
step: 25,
|
|
13904
13904
|
className: "h-9 w-28",
|
|
13905
13905
|
value: noCap ? "" : value,
|
|
13906
|
-
placeholder: noCap ? "No limit" : String(
|
|
13906
|
+
placeholder: noCap ? "No limit" : String(chunkCCSF7RI4_cjs.DEFAULT_SPEND_CAP_PENCE / 100),
|
|
13907
13907
|
disabled: noCap,
|
|
13908
13908
|
onChange: (e) => setValue(e.target.value),
|
|
13909
13909
|
onKeyDown: (e) => e.key === "Enter" && save(),
|
|
@@ -13929,7 +13929,7 @@ function UsageCapEditor({ project, addons }) {
|
|
|
13929
13929
|
checked: noCap,
|
|
13930
13930
|
onCheckedChange: (checked) => {
|
|
13931
13931
|
setNoCap(checked);
|
|
13932
|
-
if (!checked && value === "") setValue(String(
|
|
13932
|
+
if (!checked && value === "") setValue(String(chunkCCSF7RI4_cjs.DEFAULT_SPEND_CAP_PENCE / 100));
|
|
13933
13933
|
},
|
|
13934
13934
|
"data-testid": "no-cap-switch"
|
|
13935
13935
|
}
|
|
@@ -13942,8 +13942,8 @@ function UsageCapEditor({ project, addons }) {
|
|
|
13942
13942
|
function UsageInfo({ addons, isAnnual }) {
|
|
13943
13943
|
const period = isAnnual ? "year" : "month";
|
|
13944
13944
|
const legacy = (addons.legacy_ai_blocks ?? 0) > 0 || (addons.legacy_storage_blocks ?? 0) > 0;
|
|
13945
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
13946
|
-
|
|
13945
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.MoreInfo, { title: "Usage and top-ups", testId: "usage-more-info", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
13946
|
+
chunkJBL4PPEE_cjs.MoreInfoList,
|
|
13947
13947
|
{
|
|
13948
13948
|
items: [
|
|
13949
13949
|
{
|
|
@@ -13958,7 +13958,7 @@ function UsageInfo({ addons, isAnnual }) {
|
|
|
13958
13958
|
term: "Automatic top-ups",
|
|
13959
13959
|
text: "One step is added when AI usage drops below your auto top-up level, or when an upload needs more storage."
|
|
13960
13960
|
},
|
|
13961
|
-
{ term: "Usage cap", text:
|
|
13961
|
+
{ term: "Usage cap", text: chunkCCSF7RI4_cjs.USAGE_CAP_HELP },
|
|
13962
13962
|
{
|
|
13963
13963
|
term: "Reducing",
|
|
13964
13964
|
text: "\u2212 removes one step from your next renewal. You keep this period's allowance. No refunds."
|
|
@@ -13969,7 +13969,7 @@ function UsageInfo({ addons, isAnnual }) {
|
|
|
13969
13969
|
text: "Top-ups bought on an earlier price keep their size and price until removed; they are removed last."
|
|
13970
13970
|
}
|
|
13971
13971
|
] : [],
|
|
13972
|
-
...isAnnual ? [{ term: "Annual", text: `${
|
|
13972
|
+
...isAnnual ? [{ term: "Annual", text: `${chunkCCSF7RI4_cjs.ANNUAL_PREMIUM_AI_NOTE}.` }] : [],
|
|
13973
13973
|
{
|
|
13974
13974
|
term: "Prices",
|
|
13975
13975
|
text: "Shown ex VAT. The confirm step shows the total with VAT before you pay."
|
|
@@ -14061,7 +14061,7 @@ function formatShortDate2(unix) {
|
|
|
14061
14061
|
if (!unix) return null;
|
|
14062
14062
|
return new Date(unix * 1e3).toLocaleDateString("en-GB", { day: "numeric", month: "short" });
|
|
14063
14063
|
}
|
|
14064
|
-
var gbp2 = (pence) =>
|
|
14064
|
+
var gbp2 = (pence) => chunkCCSF7RI4_cjs.formatMoney(pence, "gbp");
|
|
14065
14065
|
var gbNum = (n) => `${Math.round(n * 10) / 10}`;
|
|
14066
14066
|
var pct2 = (used, limit) => limit > 0 ? Math.min(100, used / limit * 100) : 0;
|
|
14067
14067
|
function Meter({
|
|
@@ -14079,15 +14079,15 @@ function Meter({
|
|
|
14079
14079
|
] });
|
|
14080
14080
|
}
|
|
14081
14081
|
function usePlanPrice(project) {
|
|
14082
|
-
const { data: products } = react.useProducts({ enabled:
|
|
14083
|
-
if (!
|
|
14082
|
+
const { data: products } = react.useProducts({ enabled: chunkCCSF7RI4_cjs.isProProject(project) });
|
|
14083
|
+
if (!chunkCCSF7RI4_cjs.isProProject(project)) return null;
|
|
14084
14084
|
const isAnnual = project.plan_interval === "year";
|
|
14085
14085
|
if (project.amount != null) {
|
|
14086
14086
|
return { incl: project.amount, ex: project.amount_ex_vat ?? null, isAnnual };
|
|
14087
14087
|
}
|
|
14088
|
-
if ((project.packs ??
|
|
14089
|
-
const prices =
|
|
14090
|
-
const pp =
|
|
14088
|
+
if ((project.packs ?? chunkCCSF7RI4_cjs.PRO_PACKS) > chunkCCSF7RI4_cjs.PRO_PACKS) return null;
|
|
14089
|
+
const prices = chunkCCSF7RI4_cjs.findProPrices(products);
|
|
14090
|
+
const pp = chunkCCSF7RI4_cjs.packPrice(isAnnual ? prices.annual : prices.monthly);
|
|
14091
14091
|
return pp ? { incl: pp.amount, ex: pp.amount_ex_vat, isAnnual } : null;
|
|
14092
14092
|
}
|
|
14093
14093
|
function paidLine(payment, addons) {
|
|
@@ -14100,11 +14100,11 @@ function ProjectPlanCard({
|
|
|
14100
14100
|
onChangePlan
|
|
14101
14101
|
}) {
|
|
14102
14102
|
const { quotas, addons } = project;
|
|
14103
|
-
const isPro =
|
|
14103
|
+
const isPro = chunkCCSF7RI4_cjs.isProProject(project);
|
|
14104
14104
|
const used = quotas?.ai_usage?.used ?? 0;
|
|
14105
14105
|
const limit = quotas?.ai_usage?.limit ?? 0;
|
|
14106
|
-
const resetDate = formatShortDate2(
|
|
14107
|
-
const periodEnd =
|
|
14106
|
+
const resetDate = formatShortDate2(chunkCCSF7RI4_cjs.aiUsageResetTimestamp(project));
|
|
14107
|
+
const periodEnd = chunkCCSF7RI4_cjs.formatPeriodEnd(addons?.period_end ?? project.current_period_end);
|
|
14108
14108
|
const when2 = periodEnd ?? "the end of the period";
|
|
14109
14109
|
const storageUsed = quotas?.storage_gb?.used ?? 0;
|
|
14110
14110
|
const storageLimit = quotas?.storage_gb?.limit ?? 0;
|
|
@@ -14120,7 +14120,7 @@ function ProjectPlanCard({
|
|
|
14120
14120
|
project.external_id,
|
|
14121
14121
|
hasScheduledChange && addons ? { packs: packsNext ?? addons.packs, interval: pending ?? currentInterval } : null
|
|
14122
14122
|
).data;
|
|
14123
|
-
const tier = isPro ?
|
|
14123
|
+
const tier = isPro ? chunkCCSF7RI4_cjs.proTierName(project) : project.subscription === "dev" ? "Dev" : "Free";
|
|
14124
14124
|
const pendingPayment = addons?.payment?.status === "pending" ? addons.payment : null;
|
|
14125
14125
|
const confirmUrl = pendingPayment?.confirm_url ?? addons?.confirm_url;
|
|
14126
14126
|
const paidPayment = addons?.payment?.status === "paid" ? addons.payment : null;
|
|
@@ -14154,7 +14154,7 @@ function ProjectPlanCard({
|
|
|
14154
14154
|
isPro && " ",
|
|
14155
14155
|
isPro && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1 text-sm font-normal text-muted-foreground", children: currentInterval === "year" ? "Annual" : "Monthly" })
|
|
14156
14156
|
] }),
|
|
14157
|
-
isPro && periodEnd && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm text-muted-foreground", "data-testid": "project-plan-renews", children: isCanceling ? `Ends ${periodEnd}` : hasScheduledChange && nextBill ? `Next bill ${
|
|
14157
|
+
isPro && periodEnd && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm text-muted-foreground", "data-testid": "project-plan-renews", children: isCanceling ? `Ends ${periodEnd}` : hasScheduledChange && nextBill ? `Next bill ${chunkCCSF7RI4_cjs.totalWithTaxWord({
|
|
14158
14158
|
subtotal: nextBill.next_renewal_ex_vat_pence,
|
|
14159
14159
|
tax: nextBill.next_renewal_tax_pence,
|
|
14160
14160
|
total: nextBill.next_renewal_pence,
|
|
@@ -14163,7 +14163,7 @@ function ProjectPlanCard({
|
|
|
14163
14163
|
] }),
|
|
14164
14164
|
price && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ml-auto text-right", "data-testid": "project-plan-price", children: [
|
|
14165
14165
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-lg font-semibold tabular-nums text-foreground", children: [
|
|
14166
|
-
price.ex != null ?
|
|
14166
|
+
price.ex != null ? chunkCCSF7RI4_cjs.plusVat(price.ex) : gbp2(price.incl),
|
|
14167
14167
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-normal text-muted-foreground", children: price.isAnnual ? "/year" : "/month" })
|
|
14168
14168
|
] }),
|
|
14169
14169
|
price.ex != null && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-xs text-muted-foreground", children: [
|
|
@@ -14201,7 +14201,7 @@ function ProjectPlanCard({
|
|
|
14201
14201
|
undoTestId: "undo-plan-change-button",
|
|
14202
14202
|
children: [
|
|
14203
14203
|
"Changes to ",
|
|
14204
|
-
|
|
14204
|
+
chunkCCSF7RI4_cjs.planNameForPacks(packsNext),
|
|
14205
14205
|
" on ",
|
|
14206
14206
|
when2,
|
|
14207
14207
|
"."
|
|
@@ -14246,8 +14246,8 @@ function ProjectPlanCard({
|
|
|
14246
14246
|
}
|
|
14247
14247
|
)
|
|
14248
14248
|
] }),
|
|
14249
|
-
addons?.billing_error && /* @__PURE__ */ jsxRuntime.jsx(
|
|
14250
|
-
confirmUrl ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
14249
|
+
addons?.billing_error && /* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.PlanNotice, { tone: "error", testId: "plan-billing-error", children: addons.billing_error }),
|
|
14250
|
+
confirmUrl ? /* @__PURE__ */ jsxRuntime.jsxs(chunkJBL4PPEE_cjs.PlanNotice, { testId: "plan-payment-state", children: [
|
|
14251
14251
|
"Waiting for your bank",
|
|
14252
14252
|
pendingPayment?.amount_pence ? ` \xB7 ${gbp2(pendingPayment.amount_pence)}` : "",
|
|
14253
14253
|
" \xB7",
|
|
@@ -14265,7 +14265,7 @@ function ProjectPlanCard({
|
|
|
14265
14265
|
]
|
|
14266
14266
|
}
|
|
14267
14267
|
)
|
|
14268
|
-
] }) : paidPayment && addons && /* @__PURE__ */ jsxRuntime.jsx(
|
|
14268
|
+
] }) : paidPayment && addons && /* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.PlanNotice, { testId: "plan-payment-state", children: paidLine(paidPayment, addons) }),
|
|
14269
14269
|
isPro && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
14270
14270
|
"button",
|
|
14271
14271
|
{
|
|
@@ -14292,7 +14292,7 @@ function ProjectBilling({
|
|
|
14292
14292
|
const { addons } = project;
|
|
14293
14293
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", "data-testid": "project-billing", children: [
|
|
14294
14294
|
/* @__PURE__ */ jsxRuntime.jsx(ProjectPlanCard, { project, onChangePlan }),
|
|
14295
|
-
addons &&
|
|
14295
|
+
addons && chunkCCSF7RI4_cjs.isProProject(project) && /* @__PURE__ */ jsxRuntime.jsx(ProjectUsageCard, { project, addons })
|
|
14296
14296
|
] });
|
|
14297
14297
|
}
|
|
14298
14298
|
var BREAKDOWN_LABELS = {
|
|
@@ -14423,13 +14423,13 @@ function ProjectUsageContent({
|
|
|
14423
14423
|
};
|
|
14424
14424
|
const quotaPct = effectiveUsage && aiUsageLimit ? Math.round(effectiveUsage.total_spend / aiUsageLimit * 100) : 0;
|
|
14425
14425
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
14426
|
-
|
|
14426
|
+
chunkJBL4PPEE_cjs.UsagePanel,
|
|
14427
14427
|
{
|
|
14428
14428
|
state,
|
|
14429
14429
|
dateRange,
|
|
14430
14430
|
emptyMessage: `No usage ${period === "current" ? "yet this month" : "last month"}.`,
|
|
14431
14431
|
period: /* @__PURE__ */ jsxRuntime.jsx(
|
|
14432
|
-
|
|
14432
|
+
chunkJBL4PPEE_cjs.UsageToggle,
|
|
14433
14433
|
{
|
|
14434
14434
|
ariaLabel: "Period",
|
|
14435
14435
|
value: period,
|
|
@@ -14442,7 +14442,7 @@ function ProjectUsageContent({
|
|
|
14442
14442
|
),
|
|
14443
14443
|
actions: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
14444
14444
|
effectiveUsage?.invoice_pdf && /* @__PURE__ */ jsxRuntime.jsx(
|
|
14445
|
-
|
|
14445
|
+
chunkJBL4PPEE_cjs.UsageActionButton,
|
|
14446
14446
|
{
|
|
14447
14447
|
label: "Download Stripe invoice PDF",
|
|
14448
14448
|
icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Download, { className: "size-3.5" }),
|
|
@@ -14450,7 +14450,7 @@ function ProjectUsageContent({
|
|
|
14450
14450
|
}
|
|
14451
14451
|
),
|
|
14452
14452
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14453
|
-
|
|
14453
|
+
chunkJBL4PPEE_cjs.UsageActionButton,
|
|
14454
14454
|
{
|
|
14455
14455
|
label: "Print usage summary",
|
|
14456
14456
|
icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Printer, { className: "size-3.5" }),
|
|
@@ -14460,7 +14460,7 @@ function ProjectUsageContent({
|
|
|
14460
14460
|
] }),
|
|
14461
14461
|
children: effectiveUsage && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
14462
14462
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14463
|
-
|
|
14463
|
+
chunkJBL4PPEE_cjs.UsageSummary,
|
|
14464
14464
|
{
|
|
14465
14465
|
stats: [
|
|
14466
14466
|
{
|
|
@@ -14468,7 +14468,7 @@ function ProjectUsageContent({
|
|
|
14468
14468
|
value: /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: react.formatGbp(effectiveUsage.total_spend) }),
|
|
14469
14469
|
label: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
14470
14470
|
"AI usage",
|
|
14471
|
-
quotaPct > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
14471
|
+
quotaPct > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(chunkJBL4PPEE_cjs.UsageQuotaHint, { children: [
|
|
14472
14472
|
"(",
|
|
14473
14473
|
quotaPct,
|
|
14474
14474
|
"% of quota)"
|
|
@@ -14489,7 +14489,7 @@ function ProjectUsageContent({
|
|
|
14489
14489
|
}
|
|
14490
14490
|
),
|
|
14491
14491
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14492
|
-
|
|
14492
|
+
chunkJBL4PPEE_cjs.UsageToggle,
|
|
14493
14493
|
{
|
|
14494
14494
|
ariaLabel: "Breakdown by",
|
|
14495
14495
|
size: "fill",
|
|
@@ -14502,12 +14502,12 @@ function ProjectUsageContent({
|
|
|
14502
14502
|
}
|
|
14503
14503
|
),
|
|
14504
14504
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14505
|
-
|
|
14505
|
+
chunkJBL4PPEE_cjs.UsageSection,
|
|
14506
14506
|
{
|
|
14507
|
-
footer: /* @__PURE__ */ jsxRuntime.jsx(
|
|
14507
|
+
footer: /* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.UsageLegend, { series }),
|
|
14508
14508
|
title: `Daily AI usage${breakdown === "model" ? ` by ${BREAKDOWN_LABELS[breakdown]}` : ""}`,
|
|
14509
14509
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
14510
|
-
|
|
14510
|
+
chunkJBL4PPEE_cjs.UsageLineChart,
|
|
14511
14511
|
{
|
|
14512
14512
|
dates,
|
|
14513
14513
|
series,
|
|
@@ -14518,12 +14518,12 @@ function ProjectUsageContent({
|
|
|
14518
14518
|
}
|
|
14519
14519
|
),
|
|
14520
14520
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14521
|
-
|
|
14521
|
+
chunkJBL4PPEE_cjs.UsageSection,
|
|
14522
14522
|
{
|
|
14523
14523
|
title: "Breakdown",
|
|
14524
14524
|
gap: "md",
|
|
14525
14525
|
action: /* @__PURE__ */ jsxRuntime.jsx(
|
|
14526
|
-
|
|
14526
|
+
chunkJBL4PPEE_cjs.UsageToggle,
|
|
14527
14527
|
{
|
|
14528
14528
|
ariaLabel: "Breakdown metric",
|
|
14529
14529
|
value: metric,
|
|
@@ -14535,7 +14535,7 @@ function ProjectUsageContent({
|
|
|
14535
14535
|
}
|
|
14536
14536
|
),
|
|
14537
14537
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
14538
|
-
|
|
14538
|
+
chunkJBL4PPEE_cjs.UsageProportionBar,
|
|
14539
14539
|
{
|
|
14540
14540
|
metric,
|
|
14541
14541
|
items: breakdownItems.map((item) => ({
|
|
@@ -14553,13 +14553,13 @@ function ProjectUsageContent({
|
|
|
14553
14553
|
);
|
|
14554
14554
|
}
|
|
14555
14555
|
function ProjectDetail({ projectExtId, storage }) {
|
|
14556
|
-
const { stripeEnabled } =
|
|
14556
|
+
const { stripeEnabled } = chunkCCSF7RI4_cjs.useBillingSupport();
|
|
14557
14557
|
const [planOpen, setPlanOpen] = react$1.useState(false);
|
|
14558
14558
|
const [renameOpen, setRenameOpen] = react$1.useState(false);
|
|
14559
14559
|
const [renameValue, setRenameValue] = react$1.useState("");
|
|
14560
14560
|
const updateProject = react.useUpdateProjectFields();
|
|
14561
14561
|
const { data: projects, isLoading } = react.useProjects();
|
|
14562
|
-
const currentUserExtId =
|
|
14562
|
+
const currentUserExtId = chunkCCSF7RI4_cjs.useSelfExtId();
|
|
14563
14563
|
const project = projects?.find((p) => p.external_id === projectExtId);
|
|
14564
14564
|
const handleSaveRename = react$1.useCallback(() => {
|
|
14565
14565
|
const trimmed = renameValue.trim();
|
|
@@ -14597,7 +14597,7 @@ function ProjectDetail({ projectExtId, storage }) {
|
|
|
14597
14597
|
}
|
|
14598
14598
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-6 space-y-6 max-w-4xl", "data-testid": `project-detail-${project.external_id}`, children: [
|
|
14599
14599
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14600
|
-
|
|
14600
|
+
chunkJBL4PPEE_cjs.ProjectDetailHeader,
|
|
14601
14601
|
{
|
|
14602
14602
|
icon: /* @__PURE__ */ jsxRuntime.jsx(ui.EntityIcon, { entityType: "PROJECT" }),
|
|
14603
14603
|
name: project.name,
|
|
@@ -14605,11 +14605,11 @@ function ProjectDetail({ projectExtId, storage }) {
|
|
|
14605
14605
|
setRenameValue(project.name);
|
|
14606
14606
|
setRenameOpen(true);
|
|
14607
14607
|
},
|
|
14608
|
-
badge: stripeEnabled ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
14608
|
+
badge: stripeEnabled ? /* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.PlanBadge, { ...chunkCCSF7RI4_cjs.planBadgeView(project), size: "md" }) : void 0
|
|
14609
14609
|
}
|
|
14610
14610
|
),
|
|
14611
14611
|
hasBilling && /* @__PURE__ */ jsxRuntime.jsx(ProjectBilling, { project, onChangePlan: () => setPlanOpen(true) }),
|
|
14612
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
14612
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkJBL4PPEE_cjs.ProjectDetailSection, { title: hasBilling ? "Collaborator limits" : "Plan limits", children: [
|
|
14613
14613
|
!hasBilling && /* @__PURE__ */ jsxRuntime.jsx(SubscriptionStatus, { project }),
|
|
14614
14614
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
14615
14615
|
"div",
|
|
@@ -14625,7 +14625,7 @@ function ProjectDetail({ projectExtId, storage }) {
|
|
|
14625
14625
|
}
|
|
14626
14626
|
)
|
|
14627
14627
|
] }),
|
|
14628
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14628
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.ProjectDetailSection, { title: "Usage", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
14629
14629
|
ProjectUsageContent,
|
|
14630
14630
|
{
|
|
14631
14631
|
projectExtId: project.external_id,
|
|
@@ -14635,7 +14635,7 @@ function ProjectDetail({ projectExtId, storage }) {
|
|
|
14635
14635
|
) }),
|
|
14636
14636
|
storage,
|
|
14637
14637
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14638
|
-
|
|
14638
|
+
chunkJBL4PPEE_cjs.RenameDialog,
|
|
14639
14639
|
{
|
|
14640
14640
|
open: renameOpen,
|
|
14641
14641
|
onClose: () => setRenameOpen(false),
|
|
@@ -14652,7 +14652,7 @@ function ProjectDetail({ projectExtId, storage }) {
|
|
|
14652
14652
|
function useAutoRefreshPendingProjects() {
|
|
14653
14653
|
const { data: projects } = react.useProjects();
|
|
14654
14654
|
const refreshProject = react.useRefreshProject();
|
|
14655
|
-
const currentUserExtId =
|
|
14655
|
+
const currentUserExtId = chunkCCSF7RI4_cjs.useSelfExtId();
|
|
14656
14656
|
const refreshedRef = react$1.useRef(/* @__PURE__ */ new Set());
|
|
14657
14657
|
react$1.useEffect(() => {
|
|
14658
14658
|
if (!projects || !currentUserExtId) return;
|
|
@@ -14683,7 +14683,7 @@ function ConnectedQuotaDialog({ info, onClose: close }) {
|
|
|
14683
14683
|
if (quotaProjectId) void refetchProjects();
|
|
14684
14684
|
}, [quotaProjectId, refetchProjects]);
|
|
14685
14685
|
const project = info?.projectExtId ? projects?.find((p) => p.external_id === info.projectExtId) : void 0;
|
|
14686
|
-
const addons = project &&
|
|
14686
|
+
const addons = project && chunkCCSF7RI4_cjs.isProProject(project) ? project.addons : null;
|
|
14687
14687
|
const handleUpgrade = () => {
|
|
14688
14688
|
if (info?.projectExtId) {
|
|
14689
14689
|
requestProjectBillingFocus({ projectExtId: info.projectExtId, openUpgrade: true });
|
|
@@ -14719,8 +14719,8 @@ function ConnectedQuotaDialog({ info, onClose: close }) {
|
|
|
14719
14719
|
/* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, {})
|
|
14720
14720
|
);
|
|
14721
14721
|
} else if (addons) {
|
|
14722
|
-
const price = `${
|
|
14723
|
-
const capZero =
|
|
14722
|
+
const price = `${chunkCCSF7RI4_cjs.formatMoney(addons.ai_block_price_ex_vat_pence, "gbp")} + VAT`;
|
|
14723
|
+
const capZero = chunkCCSF7RI4_cjs.isAddonBudgetZero(addons);
|
|
14724
14724
|
const addAiUsage = /* @__PURE__ */ jsxRuntime.jsxs(ui.Button, { onClick: handleAddAiUsage, "data-testid": "quota-add-ai-usage-button", children: [
|
|
14725
14725
|
"Add ",
|
|
14726
14726
|
react.formatGbp(addons.block_ai_gbp),
|
|
@@ -14728,7 +14728,7 @@ function ConnectedQuotaDialog({ info, onClose: close }) {
|
|
|
14728
14728
|
price
|
|
14729
14729
|
] });
|
|
14730
14730
|
if (capZero || addons.cap_reached) {
|
|
14731
|
-
message = capZero ?
|
|
14731
|
+
message = capZero ? chunkCCSF7RI4_cjs.ZERO_BUDGET_MESSAGE : chunkCCSF7RI4_cjs.CAP_REACHED_MESSAGE;
|
|
14732
14732
|
actions = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
14733
14733
|
addAiUsage,
|
|
14734
14734
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Button, { variant: "outline", onClick: handleRaiseCap, "data-testid": "quota-raise-cap-button", children: capZero ? "Set cap" : "Raise cap" })
|
|
@@ -14741,7 +14741,7 @@ function ConnectedQuotaDialog({ info, onClose: close }) {
|
|
|
14741
14741
|
const addAiUsageProject = addAiUsageFor ? projects?.find((p) => p.external_id === addAiUsageFor) : void 0;
|
|
14742
14742
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
14743
14743
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14744
|
-
|
|
14744
|
+
chunkJBL4PPEE_cjs.QuotaExceededDialogView,
|
|
14745
14745
|
{
|
|
14746
14746
|
open,
|
|
14747
14747
|
onClose: close,
|
|
@@ -14838,7 +14838,7 @@ function ConnectedWelcomeDialog({
|
|
|
14838
14838
|
}) {
|
|
14839
14839
|
const currentUser = react.useArbiSession().user;
|
|
14840
14840
|
const { data: projects } = react.useProjects();
|
|
14841
|
-
const balance =
|
|
14841
|
+
const balance = chunkCCSF7RI4_cjs.useRewardBalance();
|
|
14842
14842
|
const [showPlans, setShowPlans] = react$1.useState(false);
|
|
14843
14843
|
const [showInvite, setShowInvite] = react$1.useState(false);
|
|
14844
14844
|
const [selectedProjectId, setSelectedProjectId] = react$1.useState(null);
|
|
@@ -14859,21 +14859,21 @@ function ConnectedWelcomeDialog({
|
|
|
14859
14859
|
return /* @__PURE__ */ jsxRuntime.jsx(ChangePlanDialog, { project: selectedProject, open, onOpenChange: handleOpenChange });
|
|
14860
14860
|
}
|
|
14861
14861
|
if (showInvite) {
|
|
14862
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
14862
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.InviteContactsDialog, { open, onClose: () => handleOpenChange(false), children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
14863
14863
|
ConnectedAddContacts,
|
|
14864
14864
|
{
|
|
14865
14865
|
onClose: () => handleOpenChange(false),
|
|
14866
|
-
rewardAmount:
|
|
14866
|
+
rewardAmount: chunkCCSF7RI4_cjs.formatMoney(REFERRAL_OFFER.amount, REFERRAL_OFFER.currency)
|
|
14867
14867
|
}
|
|
14868
14868
|
) });
|
|
14869
14869
|
}
|
|
14870
14870
|
const firstName = currentUser?.given_name;
|
|
14871
14871
|
const hasBalance = balance !== null;
|
|
14872
|
-
const quotaItems =
|
|
14873
|
-
const resetTs =
|
|
14874
|
-
const aiUsageHint = resetTs ? `resets ${
|
|
14872
|
+
const quotaItems = chunkCCSF7RI4_cjs.getQuotaItems(selectedProject.quotas);
|
|
14873
|
+
const resetTs = chunkCCSF7RI4_cjs.aiUsageResetTimestamp(selectedProject);
|
|
14874
|
+
const aiUsageHint = resetTs ? `resets ${chunkCCSF7RI4_cjs.formatResetDate(resetTs)}` : void 0;
|
|
14875
14875
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
14876
|
-
|
|
14876
|
+
chunkJBL4PPEE_cjs.WelcomeDialog,
|
|
14877
14877
|
{
|
|
14878
14878
|
open,
|
|
14879
14879
|
onClose: () => handleOpenChange(false),
|
|
@@ -14888,7 +14888,7 @@ function ConnectedWelcomeDialog({
|
|
|
14888
14888
|
onChange: setSelectedProjectId
|
|
14889
14889
|
}
|
|
14890
14890
|
),
|
|
14891
|
-
planBadge: /* @__PURE__ */ jsxRuntime.jsx(
|
|
14891
|
+
planBadge: /* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.PlanBadge, { ...chunkCCSF7RI4_cjs.planBadgeView(selectedProject), size: "md" }),
|
|
14892
14892
|
quotas: quotaItems.map((q) => ({
|
|
14893
14893
|
key: q.key,
|
|
14894
14894
|
icon: q.icon,
|
|
@@ -14898,9 +14898,9 @@ function ConnectedWelcomeDialog({
|
|
|
14898
14898
|
hint: q.key === "ai-usage" ? aiUsageHint : void 0
|
|
14899
14899
|
})),
|
|
14900
14900
|
onSeePlans: () => setShowPlans(true),
|
|
14901
|
-
referralOfferLabel: `${
|
|
14901
|
+
referralOfferLabel: `${chunkCCSF7RI4_cjs.formatMoney(REFERRAL_OFFER.amount, REFERRAL_OFFER.currency)} off your plan`,
|
|
14902
14902
|
onInvite: () => setShowInvite(true),
|
|
14903
|
-
rewardBalanceLabel: hasBalance ?
|
|
14903
|
+
rewardBalanceLabel: hasBalance ? chunkCCSF7RI4_cjs.formatMoney(balance.amount, balance.currency) : void 0
|
|
14904
14904
|
}
|
|
14905
14905
|
);
|
|
14906
14906
|
}
|
|
@@ -14937,7 +14937,7 @@ function WorkspaceCardsView({
|
|
|
14937
14937
|
createDisabledReason,
|
|
14938
14938
|
workspaceState
|
|
14939
14939
|
}) {
|
|
14940
|
-
const { stripeEnabled } =
|
|
14940
|
+
const { stripeEnabled } = chunkCCSF7RI4_cjs.useBillingSupport();
|
|
14941
14941
|
const { hrefFor } = chunkT6GRWWRY_cjs.useBlocksEnvironment();
|
|
14942
14942
|
const workspaceLabel = ui.getEntityLabel("WORKSPACE");
|
|
14943
14943
|
const projectLabel = ui.getEntityLabel("PROJECT").toLowerCase();
|
|
@@ -14957,7 +14957,7 @@ function WorkspaceCardsView({
|
|
|
14957
14957
|
}
|
|
14958
14958
|
return /* @__PURE__ */ jsxRuntime.jsx(chunk2GSZG6KA_cjs.WorkspaceList, { testId: "workspace-cards-list", children: groups.map((group) => {
|
|
14959
14959
|
const project = projects.find((p) => p.external_id === group.projectExtId);
|
|
14960
|
-
const { breakdown, readout } =
|
|
14960
|
+
const { breakdown, readout } = chunkCCSF7RI4_cjs.projectGroupBilling(project, {
|
|
14961
14961
|
isOwned: group.isOwned,
|
|
14962
14962
|
stripeEnabled
|
|
14963
14963
|
});
|
|
@@ -15120,7 +15120,7 @@ function useConnectedWorkspaceList({
|
|
|
15120
15120
|
[selfId, pinned]
|
|
15121
15121
|
);
|
|
15122
15122
|
const filtered = react$1.useMemo(
|
|
15123
|
-
() =>
|
|
15123
|
+
() => chunkJBL4PPEE_cjs.applyTriStateFilters(workspaces, filterMap, attributesOf),
|
|
15124
15124
|
[workspaces, filterMap, attributesOf]
|
|
15125
15125
|
);
|
|
15126
15126
|
const groups = react$1.useMemo(
|
|
@@ -15186,7 +15186,7 @@ function useConnectedWorkspaceList({
|
|
|
15186
15186
|
};
|
|
15187
15187
|
}
|
|
15188
15188
|
var WorkspaceTableView = react$1.lazy(
|
|
15189
|
-
() => import('../WorkspaceTableView-
|
|
15189
|
+
() => import('../WorkspaceTableView-DHMCJRC6.cjs').then((m) => ({ default: m.WorkspaceTableView }))
|
|
15190
15190
|
);
|
|
15191
15191
|
var WORKSPACES_TAB_ID = "workspaces";
|
|
15192
15192
|
var defaultRenderMember2 = (user, size) => {
|
|
@@ -15239,7 +15239,7 @@ function ConnectedWorkspaceList({
|
|
|
15239
15239
|
else void openWorkspace(workspace.external_id, { name: workspace.name });
|
|
15240
15240
|
};
|
|
15241
15241
|
const createDisabledReason = list.canCreateProjects === false ? react.PROJECT_CREATION_DENIED_REASON : void 0;
|
|
15242
|
-
if (list.isLoading) return /* @__PURE__ */ jsxRuntime.jsx(
|
|
15242
|
+
if (list.isLoading) return /* @__PURE__ */ jsxRuntime.jsx(chunk4RJPTXUQ_cjs.LoadingIndicator, { message: "Loading workspaces..." });
|
|
15243
15243
|
if (list.error) {
|
|
15244
15244
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
15245
15245
|
chunkOM5IVNEW_cjs.HomeLoadError,
|
|
@@ -15264,7 +15264,7 @@ function ConnectedWorkspaceList({
|
|
|
15264
15264
|
] });
|
|
15265
15265
|
return /* @__PURE__ */ jsxRuntime.jsxs(chunkOM5IVNEW_cjs.HomeFrame, { children: [
|
|
15266
15266
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
15267
|
-
|
|
15267
|
+
chunkWVEFRQSW_cjs.TabHeader,
|
|
15268
15268
|
{
|
|
15269
15269
|
testId: "home-header",
|
|
15270
15270
|
tabs: [
|
|
@@ -15312,7 +15312,7 @@ function ConnectedWorkspaceList({
|
|
|
15312
15312
|
workspaceState
|
|
15313
15313
|
}
|
|
15314
15314
|
) })
|
|
15315
|
-
) : /* @__PURE__ */ jsxRuntime.jsx(react$1.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(
|
|
15315
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(react$1.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(chunk4RJPTXUQ_cjs.LoadingIndicator, { message: "Loading grid..." }), children: /* @__PURE__ */ jsxRuntime.jsx(chunkOM5IVNEW_cjs.HomeCenteredColumn, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
15316
15316
|
WorkspaceTableView,
|
|
15317
15317
|
{
|
|
15318
15318
|
list,
|
|
@@ -15385,7 +15385,7 @@ function ProjectsListPage({
|
|
|
15385
15385
|
};
|
|
15386
15386
|
const { openProject } = chunkT6GRWWRY_cjs.useBlocksEnvironment();
|
|
15387
15387
|
const [search, setSearch] = react$1.useState("");
|
|
15388
|
-
const { projects, isLoading } =
|
|
15388
|
+
const { projects, isLoading } = chunkX3JJTHQ4_cjs.useProjectSummaries();
|
|
15389
15389
|
const rows = react$1.useMemo(() => {
|
|
15390
15390
|
const q = search.trim().toLowerCase();
|
|
15391
15391
|
if (!q) return projects;
|
|
@@ -15456,7 +15456,7 @@ function ProjectsListPage({
|
|
|
15456
15456
|
}
|
|
15457
15457
|
),
|
|
15458
15458
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
15459
|
-
|
|
15459
|
+
chunk4RJPTXUQ_cjs.Toolbar,
|
|
15460
15460
|
{
|
|
15461
15461
|
search,
|
|
15462
15462
|
onSearch: setSearch,
|
|
@@ -15518,7 +15518,7 @@ function ProjectsPanel({
|
|
|
15518
15518
|
const { data: projects } = react.useProjects();
|
|
15519
15519
|
const canCreateProjects = react.useCanCreateProjects();
|
|
15520
15520
|
const { userId } = chunkKGAYUFXD_cjs.useConnectedWorkspace();
|
|
15521
|
-
const { stripeEnabled } =
|
|
15521
|
+
const { stripeEnabled } = chunkCCSF7RI4_cjs.useBillingSupport();
|
|
15522
15522
|
const billingPortal = useOpenBillingPortal();
|
|
15523
15523
|
const [newProjectOpen, setNewProjectOpen] = react$1.useState(false);
|
|
15524
15524
|
useAutoRefreshPendingProjects();
|
|
@@ -15545,15 +15545,15 @@ function ProjectsPanel({
|
|
|
15545
15545
|
[ownedCount, tabs, projects]
|
|
15546
15546
|
);
|
|
15547
15547
|
const paidProject = projects?.find(isPaid);
|
|
15548
|
-
const panel = /* @__PURE__ */ jsxRuntime.jsxs(
|
|
15549
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
15550
|
-
|
|
15548
|
+
const panel = /* @__PURE__ */ jsxRuntime.jsxs(chunkJBL4PPEE_cjs.PanelFrame, { className, testId: "projects-panel", children: [
|
|
15549
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.DraggableHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
15550
|
+
chunkWVEFRQSW_cjs.TabHeader,
|
|
15551
15551
|
{
|
|
15552
15552
|
tabs: headerTabs,
|
|
15553
15553
|
activeTabId: activeProjectId ?? PROJECTS_BASE_TAB_ID,
|
|
15554
15554
|
onTabChange: (id) => tabs.onSelect(id === PROJECTS_BASE_TAB_ID ? null : id),
|
|
15555
15555
|
afterTabs: (isCompact) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
15556
|
-
|
|
15556
|
+
chunkJBL4PPEE_cjs.PanelAddButton,
|
|
15557
15557
|
{
|
|
15558
15558
|
label: `New ${ui.entityNoun("PROJECT")}`,
|
|
15559
15559
|
onClick: () => setNewProjectOpen(true),
|
|
@@ -15568,15 +15568,15 @@ function ProjectsPanel({
|
|
|
15568
15568
|
compactBreakpoint: 360
|
|
15569
15569
|
}
|
|
15570
15570
|
) }),
|
|
15571
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
15571
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.PanelFrameBody, { children: activeProjectId ? /* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.PanelScroll, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
15572
15572
|
ProjectDetail,
|
|
15573
15573
|
{
|
|
15574
15574
|
projectExtId: activeProjectId,
|
|
15575
15575
|
storage: projectStorage?.(activeProjectId)
|
|
15576
15576
|
}
|
|
15577
|
-
) }) : /* @__PURE__ */ jsxRuntime.jsxs(
|
|
15577
|
+
) }) : /* @__PURE__ */ jsxRuntime.jsxs(chunkJBL4PPEE_cjs.PanelScroll, { variant: "padded", children: [
|
|
15578
15578
|
/* @__PURE__ */ jsxRuntime.jsx(ProjectsTable, {}),
|
|
15579
|
-
stripeEnabled && paidProject && /* @__PURE__ */ jsxRuntime.jsx(
|
|
15579
|
+
stripeEnabled && paidProject && /* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.PanelActionsRow, { children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
15580
15580
|
ui.Button,
|
|
15581
15581
|
{
|
|
15582
15582
|
onClick: () => billingPortal.open(paidProject.external_id),
|
|
@@ -15644,7 +15644,7 @@ function ProjectDetailsForm({
|
|
|
15644
15644
|
const labels = { ...DEFAULT_PROJECT_DETAILS_LABELS, ...given };
|
|
15645
15645
|
const { notify: notify16 } = chunkT6GRWWRY_cjs.useBlocksEnvironment();
|
|
15646
15646
|
const update = react.useUpdateProjectFields();
|
|
15647
|
-
const workspace =
|
|
15647
|
+
const workspace = chunkX3JJTHQ4_cjs.primaryProjectWorkspace(project);
|
|
15648
15648
|
const { data: members = [] } = react.useWorkspaceUsers(workspace?.id);
|
|
15649
15649
|
const people = members.filter((m) => !m.user.external_id.startsWith("agt-"));
|
|
15650
15650
|
const currency = project.budget?.currency ?? "GBP";
|
|
@@ -15769,7 +15769,7 @@ var COMPACT_BELOW = 132;
|
|
|
15769
15769
|
var NO_DOCUMENTS = [];
|
|
15770
15770
|
function useFilesWorkspace() {
|
|
15771
15771
|
const { workspaceId, userId, live } = chunkKGAYUFXD_cjs.useConnectedWorkspace();
|
|
15772
|
-
const { members, role } =
|
|
15772
|
+
const { members, role } = chunkUDMII47W_cjs.useConnectedWorkspaceRole();
|
|
15773
15773
|
const { data: workspaces } = react.useWorkspaces({ enabled: live });
|
|
15774
15774
|
const workspaceName = workspaces?.find((w) => w.external_id === workspaceId)?.name;
|
|
15775
15775
|
return {
|
|
@@ -16529,7 +16529,7 @@ function ProjectChronology({
|
|
|
16529
16529
|
})),
|
|
16530
16530
|
[facts]
|
|
16531
16531
|
);
|
|
16532
|
-
return /* @__PURE__ */ jsxRuntime.jsx(ui.Card, { className: "h-[min(70dvh,640px)] overflow-hidden", "data-testid": testId, children: isLoading ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "p-4 text-sm text-muted-foreground", children: loading }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
16532
|
+
return /* @__PURE__ */ jsxRuntime.jsx(ui.Card, { className: "h-[min(70dvh,640px)] overflow-hidden", "data-testid": testId, children: isLoading ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "p-4 text-sm text-muted-foreground", children: loading }) : /* @__PURE__ */ jsxRuntime.jsx(chunkF73EZQT4_cjs.FactsGanttPane, { items, testId: `${testId}-gantt`, labels: { ganttEmpty: empty } }) });
|
|
16533
16533
|
}
|
|
16534
16534
|
function ProjectThreads({
|
|
16535
16535
|
projectId,
|
|
@@ -16703,11 +16703,11 @@ function ConnectedProjectPage({
|
|
|
16703
16703
|
figures: { ...DEFAULT_PROJECT_PAGE_LABELS.figures, ...given?.figures },
|
|
16704
16704
|
threads: { ...DEFAULT_PROJECT_PAGE_LABELS.threads, ...given?.threads }
|
|
16705
16705
|
};
|
|
16706
|
-
const { project, usage, isLoading } =
|
|
16706
|
+
const { project, usage, isLoading } = chunkX3JJTHQ4_cjs.useProjectSummary(projectId);
|
|
16707
16707
|
const { workspaceId } = chunkKGAYUFXD_cjs.useConnectedWorkspace();
|
|
16708
16708
|
const { notify: notify16 } = chunkT6GRWWRY_cjs.useBlocksEnvironment();
|
|
16709
|
-
const selectWorkspace =
|
|
16710
|
-
const workspace = project ?
|
|
16709
|
+
const selectWorkspace = chunkLBKTTQUR_cjs.useSelectWorkspace();
|
|
16710
|
+
const workspace = project ? chunkX3JJTHQ4_cjs.primaryProjectWorkspace(project) : void 0;
|
|
16711
16711
|
const open = !!workspace && workspace.id === workspaceId;
|
|
16712
16712
|
react$1.useEffect(() => {
|
|
16713
16713
|
if (!workspace || workspace.id === workspaceId) return;
|
|
@@ -17602,7 +17602,7 @@ function recentConversations(conversations) {
|
|
|
17602
17602
|
return [...conversations].sort((a, b) => time(b.updated_at) - time(a.updated_at)).slice(0, RECENT_ROWS).map((c) => ({
|
|
17603
17603
|
id: c.external_id,
|
|
17604
17604
|
title: c.title?.trim() || "Untitled thread",
|
|
17605
|
-
subtitle: c.status ? [
|
|
17605
|
+
subtitle: c.status ? [chunkHVOPUYAG_cjs.STATUS_LABELS[chunkHVOPUYAG_cjs.asTaskStatus(c.status)], c.due_at ? `due ${shortDate(c.due_at)}` : null].filter(Boolean).join(" \xB7 ") : `${c.message_count} ${c.message_count === 1 ? "message" : "messages"}`,
|
|
17606
17606
|
time: timeAndDate(c.updated_at)
|
|
17607
17607
|
}));
|
|
17608
17608
|
}
|
|
@@ -18097,7 +18097,7 @@ function ConnectedSearchPage({
|
|
|
18097
18097
|
);
|
|
18098
18098
|
const hasResults = searched && results.length > 0;
|
|
18099
18099
|
return /* @__PURE__ */ jsxRuntime.jsxs(chunkGOWXP5KT_cjs.SearchPageFrame, { isEmbedded: embedded, children: [
|
|
18100
|
-
!embedded && /* @__PURE__ */ jsxRuntime.jsx(chunkGOWXP5KT_cjs.SearchPageHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
18100
|
+
!embedded && /* @__PURE__ */ jsxRuntime.jsx(chunkGOWXP5KT_cjs.SearchPageHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkWVEFRQSW_cjs.TabHeader, { tabs, activeTabId: "search", onTabChange: () => {
|
|
18101
18101
|
}, variant: "underline" }) }),
|
|
18102
18102
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
18103
18103
|
chunkGOWXP5KT_cjs.ApplyLabelDialog,
|
|
@@ -19563,7 +19563,7 @@ function ConnectedMailbox({
|
|
|
19563
19563
|
return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "flex h-full min-h-0 flex-col bg-background", "aria-label": "Mail", children: [
|
|
19564
19564
|
/* @__PURE__ */ jsxRuntime.jsxs("header", { className: "sticky top-0 z-10 bg-background", children: [
|
|
19565
19565
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
19566
|
-
|
|
19566
|
+
chunkWVEFRQSW_cjs.TabHeader,
|
|
19567
19567
|
{
|
|
19568
19568
|
testId: "mail-tab-header",
|
|
19569
19569
|
tabs: [
|
|
@@ -21360,7 +21360,7 @@ function EventEditorDialog({
|
|
|
21360
21360
|
const { notify: notify16, runtimeConfig } = chunkT6GRWWRY_cjs.useBlocksEnvironment();
|
|
21361
21361
|
const attachmentDocuments = documents.map((document2) => ({
|
|
21362
21362
|
doc_id: document2.external_id,
|
|
21363
|
-
title:
|
|
21363
|
+
title: chunkUDMII47W_cjs.toWorkflowFieldDocument(document2).title,
|
|
21364
21364
|
url: chunk725OETK3_cjs.buildDeepLinkUrl(
|
|
21365
21365
|
{ workspaceId: workspaceId ?? void 0, documentId: document2.external_id },
|
|
21366
21366
|
runtimeConfig.deploymentDomain
|
|
@@ -25739,7 +25739,7 @@ function useDocumentFilters({
|
|
|
25739
25739
|
[documentFilters]
|
|
25740
25740
|
);
|
|
25741
25741
|
const baseFilteredDocuments = react$1.useMemo(
|
|
25742
|
-
() =>
|
|
25742
|
+
() => chunkJBL4PPEE_cjs.applyInvertedIndexFilter(documents, documentFilters, invertedIndex, getDocId),
|
|
25743
25743
|
[documents, documentFilters, invertedIndex]
|
|
25744
25744
|
);
|
|
25745
25745
|
const filteredDocuments = react$1.useMemo(() => {
|
|
@@ -26324,7 +26324,7 @@ function useBatchCompleteToasts() {
|
|
|
26324
26324
|
}
|
|
26325
26325
|
}, AI_FIELDS_NOTICE_WINDOW_MS);
|
|
26326
26326
|
} else if (message.batch_type === "entity_extract") {
|
|
26327
|
-
say(`${
|
|
26327
|
+
say(`${chunk4RJPTXUQ_cjs.entitiesPhrase()} extracted from ${chunk4RJPTXUQ_cjs.documentCount(docIds.length)}`, "success", {
|
|
26328
26328
|
...openTags && { action: { label: "View", onClick: openTags } }
|
|
26329
26329
|
});
|
|
26330
26330
|
} else if (message.batch_type === "upload") {
|
|
@@ -26987,7 +26987,7 @@ function ConnectedFieldsManager({
|
|
|
26987
26987
|
]
|
|
26988
26988
|
];
|
|
26989
26989
|
const tabHeader = /* @__PURE__ */ jsxRuntime.jsx(
|
|
26990
|
-
|
|
26990
|
+
chunkWVEFRQSW_cjs.TabHeader,
|
|
26991
26991
|
{
|
|
26992
26992
|
tabs,
|
|
26993
26993
|
activeTabId: activeKind,
|
|
@@ -27027,7 +27027,7 @@ function ConnectedFieldsManager({
|
|
|
27027
27027
|
) });
|
|
27028
27028
|
}
|
|
27029
27029
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col h-full", children: [
|
|
27030
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
27030
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkJBL4PPEE_cjs.DraggableHeader, { children: [
|
|
27031
27031
|
/* @__PURE__ */ jsxRuntime.jsx(chunkVGNCU5JJ_cjs.FieldsManagerTitle, { title, className: "px-4 pt-3.5 pb-2" }),
|
|
27032
27032
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-3", children: tabHeader })
|
|
27033
27033
|
] }),
|
|
@@ -27817,15 +27817,15 @@ var TABLET_TABLE_BELOW = 860;
|
|
|
27817
27817
|
var TABLET_VIEWPORT_BELOW = 1100;
|
|
27818
27818
|
var NO_CONVERSATION_DOCUMENTS = [];
|
|
27819
27819
|
var DocumentReviewCard = react$1.lazy(
|
|
27820
|
-
() => import('../DocumentReviewCard-
|
|
27820
|
+
() => import('../DocumentReviewCard-VFNMJSK7.cjs').then((module) => ({ default: module.DocumentReviewCard }))
|
|
27821
27821
|
);
|
|
27822
27822
|
var ConnectedDocumentViewer = react$1.lazy(
|
|
27823
|
-
() => import('../ConnectedDocumentViewer-
|
|
27823
|
+
() => import('../ConnectedDocumentViewer-FGQ27H4B.cjs').then((module) => ({
|
|
27824
27824
|
default: module.ConnectedDocumentViewer
|
|
27825
27825
|
}))
|
|
27826
27826
|
);
|
|
27827
27827
|
function defaultReviewCard(props) {
|
|
27828
|
-
return /* @__PURE__ */ jsxRuntime.jsx(react$1.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(
|
|
27828
|
+
return /* @__PURE__ */ jsxRuntime.jsx(react$1.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(chunk4RJPTXUQ_cjs.LoadingIndicator, { message: "Loading document viewer..." }), children: /* @__PURE__ */ jsxRuntime.jsx(DocumentReviewCard, { ...props }, `navigator-${props.currentDocument.external_id}`) });
|
|
27829
27829
|
}
|
|
27830
27830
|
function ConnectedFilesPage({
|
|
27831
27831
|
isModal = false,
|
|
@@ -27871,7 +27871,7 @@ function ConnectedFilesPage({
|
|
|
27871
27871
|
const deleteDocuments = react.useDeleteDocuments();
|
|
27872
27872
|
const isDocumentsPending = isLoading && documents.length === 0;
|
|
27873
27873
|
const { workspaceId, userId, live } = chunkKGAYUFXD_cjs.useConnectedWorkspace();
|
|
27874
|
-
const { role, members } =
|
|
27874
|
+
const { role, members } = chunkUDMII47W_cjs.useConnectedWorkspaceRole();
|
|
27875
27875
|
const { data: workspaces } = react.useWorkspaces({ enabled: live });
|
|
27876
27876
|
const workspaceName = workspaces?.find((w) => w.external_id === workspaceId)?.name;
|
|
27877
27877
|
const isMember = role != null;
|
|
@@ -28305,7 +28305,7 @@ function ConnectedFilesPage({
|
|
|
28305
28305
|
),
|
|
28306
28306
|
/* @__PURE__ */ jsxRuntime.jsxs(chunkVGNCU5JJ_cjs.FilesPageHeader, { children: [
|
|
28307
28307
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
28308
|
-
|
|
28308
|
+
chunkWVEFRQSW_cjs.TabHeader,
|
|
28309
28309
|
{
|
|
28310
28310
|
testId: "documents-tab-header",
|
|
28311
28311
|
tabs: [
|
|
@@ -28361,7 +28361,7 @@ function ConnectedFilesPage({
|
|
|
28361
28361
|
viewMode === "grid" ? (
|
|
28362
28362
|
// ‹ n / N › over the table's displayed rows; a step opens the document.
|
|
28363
28363
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
28364
|
-
|
|
28364
|
+
chunk4RJPTXUQ_cjs.GridRowNavigator,
|
|
28365
28365
|
{
|
|
28366
28366
|
gridApi,
|
|
28367
28367
|
selectedId: viewingDocumentId ?? selectedDocumentIds[0] ?? null,
|
|
@@ -29505,7 +29505,7 @@ function ProcessingSection({
|
|
|
29505
29505
|
onDelete
|
|
29506
29506
|
}) {
|
|
29507
29507
|
return /* @__PURE__ */ jsxRuntime.jsx(chunkVGNCU5JJ_cjs.TaskSection, { title, count: count2, status, tooltip: SECTION_TOOLTIPS[status], children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
29508
|
-
|
|
29508
|
+
chunkHVOPUYAG_cjs.UploadTaskList,
|
|
29509
29509
|
{
|
|
29510
29510
|
tasks,
|
|
29511
29511
|
title: "",
|
|
@@ -31145,7 +31145,7 @@ function ConnectedRecipientSelector({
|
|
|
31145
31145
|
setSelectorOpen(false);
|
|
31146
31146
|
setSearchValue("");
|
|
31147
31147
|
};
|
|
31148
|
-
const identity = (user) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
31148
|
+
const identity = (user) => /* @__PURE__ */ jsxRuntime.jsx(chunk3X37I6QE_cjs.ConnectedUserEntity, { user, size: "xs", variant: "pill", showPresence: true, interactive: false });
|
|
31149
31149
|
const selected = selectedRecipients.flatMap((id) => {
|
|
31150
31150
|
const user = getUserById(id);
|
|
31151
31151
|
if (!user) return [];
|
|
@@ -31389,7 +31389,7 @@ function renderMessengerUser(user, variant) {
|
|
|
31389
31389
|
switch (variant) {
|
|
31390
31390
|
case "avatar":
|
|
31391
31391
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
31392
|
-
|
|
31392
|
+
chunk3X37I6QE_cjs.ConnectedUserEntity,
|
|
31393
31393
|
{
|
|
31394
31394
|
user,
|
|
31395
31395
|
size: "lg",
|
|
@@ -31400,7 +31400,7 @@ function renderMessengerUser(user, variant) {
|
|
|
31400
31400
|
);
|
|
31401
31401
|
case "small-avatar":
|
|
31402
31402
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
31403
|
-
|
|
31403
|
+
chunk3X37I6QE_cjs.ConnectedUserEntity,
|
|
31404
31404
|
{
|
|
31405
31405
|
user,
|
|
31406
31406
|
size: "sm",
|
|
@@ -31410,13 +31410,13 @@ function renderMessengerUser(user, variant) {
|
|
|
31410
31410
|
}
|
|
31411
31411
|
);
|
|
31412
31412
|
case "author":
|
|
31413
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
31413
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunk3X37I6QE_cjs.ConnectedUserEntity, { user, size: "sm", variant: "pill" });
|
|
31414
31414
|
case "member":
|
|
31415
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
31415
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunk3X37I6QE_cjs.ConnectedUserEntity, { user, size: "sm", variant: "pill", interactive: false });
|
|
31416
31416
|
}
|
|
31417
31417
|
}
|
|
31418
31418
|
var renderMessageBody = (text2, context) => /* @__PURE__ */ jsxRuntime.jsx(ConnectedChatMessageBody, { text: text2, workspaceId: context.workspaceId });
|
|
31419
|
-
var ThreadHistory = (props) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
31419
|
+
var ThreadHistory = (props) => /* @__PURE__ */ jsxRuntime.jsx(chunk33PWCTND_cjs.ConnectedCallChatHistory, { ...props });
|
|
31420
31420
|
function ConnectedPeerActions({ peer, addPeople }) {
|
|
31421
31421
|
const [accessOpen, setAccessOpen] = react$1.useState(false);
|
|
31422
31422
|
const [grantOpen, setGrantOpen] = react$1.useState(false);
|
|
@@ -31430,8 +31430,8 @@ function ConnectedPeerActions({ peer, addPeople }) {
|
|
|
31430
31430
|
)
|
|
31431
31431
|
];
|
|
31432
31432
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
31433
|
-
!ui.isAgent(peer) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
31434
|
-
!ui.isAgent(peer) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
31433
|
+
!ui.isAgent(peer) && /* @__PURE__ */ jsxRuntime.jsx(chunk33PWCTND_cjs.DmCallButton, { peer }),
|
|
31434
|
+
!ui.isAgent(peer) && /* @__PURE__ */ jsxRuntime.jsx(chunk33PWCTND_cjs.ScheduleCallButton, { peer }),
|
|
31435
31435
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
31436
31436
|
ConnectedContactMenu,
|
|
31437
31437
|
{
|
|
@@ -31456,14 +31456,14 @@ function ConnectedPeerActions({ peer, addPeople }) {
|
|
|
31456
31456
|
}
|
|
31457
31457
|
var fullDirectActions = (peer, { addPeople }) => /* @__PURE__ */ jsxRuntime.jsx(ConnectedPeerActions, { peer, addPeople });
|
|
31458
31458
|
var fullGroupActions = (chat, title) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
31459
|
-
|
|
31459
|
+
chunk33PWCTND_cjs.GroupCallButton,
|
|
31460
31460
|
{
|
|
31461
31461
|
chatExtId: chat.external_id,
|
|
31462
31462
|
title,
|
|
31463
31463
|
members: chat.members.map((m) => m.user)
|
|
31464
31464
|
}
|
|
31465
31465
|
);
|
|
31466
|
-
var fullListActions = /* @__PURE__ */ jsxRuntime.jsx(
|
|
31466
|
+
var fullListActions = /* @__PURE__ */ jsxRuntime.jsx(chunk33PWCTND_cjs.NewCallChip, {});
|
|
31467
31467
|
function fullMessengerHost(arbi, presence) {
|
|
31468
31468
|
return {
|
|
31469
31469
|
renderUser: renderMessengerUser,
|
|
@@ -31779,7 +31779,7 @@ function MessengerView({
|
|
|
31779
31779
|
}
|
|
31780
31780
|
);
|
|
31781
31781
|
if (!activeId && layout === "panel") {
|
|
31782
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
31782
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(chunkJBL4PPEE_cjs.PanelFrame, { testId: "dm-messenger", children: [
|
|
31783
31783
|
list,
|
|
31784
31784
|
peoplePicker
|
|
31785
31785
|
] });
|
|
@@ -31789,7 +31789,7 @@ function MessengerView({
|
|
|
31789
31789
|
const presence = activePeer ? host.presenceOf?.(activePeer.external_id) : void 0;
|
|
31790
31790
|
const threadName = active?.title ?? (activePeer ? react.userDisplayName(activePeer) : null);
|
|
31791
31791
|
const thread = activeId ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
31792
|
-
|
|
31792
|
+
chunkJBL4PPEE_cjs.PanelFrame,
|
|
31793
31793
|
{
|
|
31794
31794
|
testId: isSplit ? "dm-messenger-thread" : "dm-messenger",
|
|
31795
31795
|
className: isSplit ? "min-w-0 flex-1 bg-card" : void 0,
|
|
@@ -31856,7 +31856,7 @@ function MessengerView({
|
|
|
31856
31856
|
groupChat.external_id
|
|
31857
31857
|
) : null,
|
|
31858
31858
|
peoplePicker,
|
|
31859
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
31859
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.PanelFrameBody, { className: "flex flex-col overflow-visible", children: active ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
31860
31860
|
ConnectedChatThread,
|
|
31861
31861
|
{
|
|
31862
31862
|
chat: active.chat,
|
|
@@ -32251,7 +32251,7 @@ function ConnectedConfigForm({ availableModels, ...rest }) {
|
|
|
32251
32251
|
({ value, onChange }) => /* @__PURE__ */ jsxRuntime.jsx(ConnectedModelSelector, { value, onValueChange: onChange, className: "w-full" }),
|
|
32252
32252
|
[]
|
|
32253
32253
|
);
|
|
32254
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
32254
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkHVOPUYAG_cjs.ConfigForm, { ...rest, renderModelSelect: hasModels ? renderModelSelect : void 0 });
|
|
32255
32255
|
}
|
|
32256
32256
|
function ConnectedAgentConfigForm({ agentExtId, agentName, onSaved }) {
|
|
32257
32257
|
const { notify: notify16 } = chunkT6GRWWRY_cjs.useBlocksEnvironment();
|
|
@@ -32368,7 +32368,7 @@ function ConnectedAuthorizeAgent({ onClose, editAgent }) {
|
|
|
32368
32368
|
}, [name, selectedWorkspaces, role, createAgent, addWorkspaceUsers, arbi, notify16]);
|
|
32369
32369
|
if (editAgent) {
|
|
32370
32370
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
32371
|
-
|
|
32371
|
+
chunkHVOPUYAG_cjs.AgentEditView,
|
|
32372
32372
|
{
|
|
32373
32373
|
agentName: editAgent.name,
|
|
32374
32374
|
config: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -32384,7 +32384,7 @@ function ConnectedAuthorizeAgent({ onClose, editAgent }) {
|
|
|
32384
32384
|
}
|
|
32385
32385
|
if (view === "main") {
|
|
32386
32386
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
32387
|
-
|
|
32387
|
+
chunkHVOPUYAG_cjs.AgentMainView,
|
|
32388
32388
|
{
|
|
32389
32389
|
onConnectExternal: () => setView("connect"),
|
|
32390
32390
|
config: mainAgent ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -32400,11 +32400,11 @@ function ConnectedAuthorizeAgent({ onClose, editAgent }) {
|
|
|
32400
32400
|
}
|
|
32401
32401
|
if (result) {
|
|
32402
32402
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
32403
|
-
|
|
32403
|
+
chunkHVOPUYAG_cjs.AgentCreatedView,
|
|
32404
32404
|
{
|
|
32405
32405
|
email: result.email,
|
|
32406
32406
|
signingKey: result.signingKey,
|
|
32407
|
-
instructions: /* @__PURE__ */ jsxRuntime.jsx(
|
|
32407
|
+
instructions: /* @__PURE__ */ jsxRuntime.jsx(chunkHVOPUYAG_cjs.AgentConnectInstructions, { email: result.email, signingKey: result.signingKey }),
|
|
32408
32408
|
config: /* @__PURE__ */ jsxRuntime.jsx(ConnectedAgentConfigForm, { agentExtId: result.extId, agentName: result.name }),
|
|
32409
32409
|
isConfigOpen: configOpen,
|
|
32410
32410
|
onToggleConfig: () => setConfigOpen((v) => !v),
|
|
@@ -32413,7 +32413,7 @@ function ConnectedAuthorizeAgent({ onClose, editAgent }) {
|
|
|
32413
32413
|
);
|
|
32414
32414
|
}
|
|
32415
32415
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
32416
|
-
|
|
32416
|
+
chunkHVOPUYAG_cjs.AgentCreateView,
|
|
32417
32417
|
{
|
|
32418
32418
|
name,
|
|
32419
32419
|
onNameChange: setName,
|
|
@@ -32469,7 +32469,7 @@ function DeveloperFooter({
|
|
|
32469
32469
|
}, [configVersions, configToLoad, parentMessage?.config_ext_id]);
|
|
32470
32470
|
const hasLoadedConfig = !!loadedConfigId && loadedConfigId !== "default";
|
|
32471
32471
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
32472
|
-
|
|
32472
|
+
chunkJBL4PPEE_cjs.ConfigSwitcherBar,
|
|
32473
32473
|
{
|
|
32474
32474
|
options: options2,
|
|
32475
32475
|
value: loadedConfigId || "default",
|
|
@@ -32738,9 +32738,9 @@ function ConnectedDeveloperConfig({ modeSwitcher } = {}) {
|
|
|
32738
32738
|
handleDeleteConfig,
|
|
32739
32739
|
handleLoadConfig
|
|
32740
32740
|
} = useDeveloperConfig();
|
|
32741
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
32742
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
32743
|
-
|
|
32741
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(chunkJBL4PPEE_cjs.PanelFrame, { testId: "developer-config", children: [
|
|
32742
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.DraggableHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
32743
|
+
chunkWVEFRQSW_cjs.TabHeader,
|
|
32744
32744
|
{
|
|
32745
32745
|
tabs: [{ id: "config", label: "Developer Config", icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Code2, { className: "size-4" }) }],
|
|
32746
32746
|
activeTabId: "config",
|
|
@@ -32749,7 +32749,7 @@ function ConnectedDeveloperConfig({ modeSwitcher } = {}) {
|
|
|
32749
32749
|
rightContent: modeSwitcher
|
|
32750
32750
|
}
|
|
32751
32751
|
) }),
|
|
32752
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
32752
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.PanelFrameBody, { className: "overflow-auto p-4", children: configSchema ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
32753
32753
|
ConnectedConfigForm,
|
|
32754
32754
|
{
|
|
32755
32755
|
schema: configSchema,
|
|
@@ -32757,7 +32757,7 @@ function ConnectedDeveloperConfig({ modeSwitcher } = {}) {
|
|
|
32757
32757
|
onChange: handleConfigChange,
|
|
32758
32758
|
availableModels: availableModels?.models
|
|
32759
32759
|
}
|
|
32760
|
-
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
32760
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(chunkJBL4PPEE_cjs.PanelNote, { children: "Loading configuration schema..." }) }),
|
|
32761
32761
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
32762
32762
|
DeveloperFooter,
|
|
32763
32763
|
{
|
|
@@ -33230,7 +33230,7 @@ function ConnectedAccountCluster({
|
|
|
33230
33230
|
}
|
|
33231
33231
|
);
|
|
33232
33232
|
}
|
|
33233
|
-
var gbp3 = (pence) =>
|
|
33233
|
+
var gbp3 = (pence) => chunkCCSF7RI4_cjs.formatMoney(pence, "gbp");
|
|
33234
33234
|
function addonArrivalMessage(addons, added) {
|
|
33235
33235
|
const parts = [];
|
|
33236
33236
|
if (added.ai > 0) parts.push(`${react.formatGbp(added.ai * addons.block_ai_gbp)} of AI usage`);
|
|
@@ -33577,7 +33577,7 @@ function ConnectedAppRuntime({
|
|
|
33577
33577
|
prefetch
|
|
33578
33578
|
}) {
|
|
33579
33579
|
const on = (effect) => effects[effect] !== false;
|
|
33580
|
-
const { stripeEnabled } =
|
|
33580
|
+
const { stripeEnabled } = chunkCCSF7RI4_cjs.useBillingSupport();
|
|
33581
33581
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
33582
33582
|
on("firstLoginRouting") && /* @__PURE__ */ jsxRuntime.jsx(FirstLoginRouting, { onResolve: onFirstLogin }),
|
|
33583
33583
|
on("releaseStaleModals") && /* @__PURE__ */ jsxRuntime.jsx(ReleaseStaleModals, {}),
|
|
@@ -34172,14 +34172,14 @@ var referencesOf = (inputs) => {
|
|
|
34172
34172
|
return value?.documents ?? [];
|
|
34173
34173
|
};
|
|
34174
34174
|
var PROMPT_BINDINGS = {
|
|
34175
|
-
[
|
|
34175
|
+
[chunkHVOPUYAG_cjs.GENERATE_IMAGE_ID]: {
|
|
34176
34176
|
attachScope: false,
|
|
34177
34177
|
tools: (inputs) => {
|
|
34178
34178
|
const aspectRatio = typeof inputs.aspect_ratio === "string" ? inputs.aspect_ratio : "";
|
|
34179
34179
|
return {
|
|
34180
34180
|
retrieval_chunk: browser.buildRetrievalChunkTool([]),
|
|
34181
34181
|
retrieval_full_context: browser.buildRetrievalFullContextTool(referencesOf(inputs)),
|
|
34182
|
-
...aspectRatio && aspectRatio !==
|
|
34182
|
+
...aspectRatio && aspectRatio !== chunkHVOPUYAG_cjs.IMAGE_ASPECT_AUTO ? {
|
|
34183
34183
|
image_generation: {
|
|
34184
34184
|
name: "image_generation",
|
|
34185
34185
|
description: "image generation",
|
|
@@ -34200,19 +34200,19 @@ var text = (inputs, name) => {
|
|
|
34200
34200
|
function useLaunchWorkflow({ landing: surfaceLanding } = {}) {
|
|
34201
34201
|
const { data: documents = [] } = react.useDocuments();
|
|
34202
34202
|
const { data: workspaceTags = [] } = react.useTags();
|
|
34203
|
-
const tags = react$1.useMemo(() =>
|
|
34203
|
+
const tags = react$1.useMemo(() => chunkY6ZNWC7E_cjs.documentScopeLabels(workspaceTags), [workspaceTags]);
|
|
34204
34204
|
const createTag = react.useCreateTag();
|
|
34205
34205
|
const updateTag = react.useUpdateTag();
|
|
34206
34206
|
const generate = react.useGenerateDocTags();
|
|
34207
|
-
const { create: createTask } =
|
|
34207
|
+
const { create: createTask } = chunkX3JJTHQ4_cjs.useWorkflowTasks();
|
|
34208
34208
|
const applyModel = react.useApplyChatModel();
|
|
34209
34209
|
const session = react.useArbiSessionStore();
|
|
34210
34210
|
const { notify: notify16, openFiles, openNewConversation } = chunkT6GRWWRY_cjs.useBlocksEnvironment();
|
|
34211
34211
|
const annotate = react$1.useCallback(
|
|
34212
34212
|
async ({ inputs, scope }) => {
|
|
34213
34213
|
const description = text(inputs, "description");
|
|
34214
|
-
const name = text(inputs, "name") ||
|
|
34215
|
-
const matching =
|
|
34214
|
+
const name = text(inputs, "name") || chunkHVOPUYAG_cjs.deriveAnnotationName(description);
|
|
34215
|
+
const matching = chunkY6ZNWC7E_cjs.matchWorkflowScope(documents, scope);
|
|
34216
34216
|
if (!name || !description || matching.length === 0) return;
|
|
34217
34217
|
try {
|
|
34218
34218
|
const existing = tags.find((t) => t.name.toLowerCase() === name.toLowerCase());
|
|
@@ -34255,9 +34255,9 @@ function useLaunchWorkflow({ landing: surfaceLanding } = {}) {
|
|
|
34255
34255
|
async (launch) => {
|
|
34256
34256
|
const { workflow, inputs, scope, agentId } = launch;
|
|
34257
34257
|
if (workflow.run.kind === "operation") {
|
|
34258
|
-
if (workflow.id ===
|
|
34258
|
+
if (workflow.id === chunkHVOPUYAG_cjs.ANNOTATE_ID) {
|
|
34259
34259
|
await annotate(launch);
|
|
34260
|
-
|
|
34260
|
+
chunkHVOPUYAG_cjs.recordWorkflowUse(workflow.id);
|
|
34261
34261
|
return;
|
|
34262
34262
|
}
|
|
34263
34263
|
throw new Error(`No host handler for workflow "${workflow.id}"`);
|
|
@@ -34267,7 +34267,7 @@ function useLaunchWorkflow({ landing: surfaceLanding } = {}) {
|
|
|
34267
34267
|
);
|
|
34268
34268
|
const prompt = chunk555BS22J_cjs.composeWorkflowPrompt(workflow, inputs, { documentTitles });
|
|
34269
34269
|
if (!prompt) return;
|
|
34270
|
-
|
|
34270
|
+
chunkHVOPUYAG_cjs.recordWorkflowUse(workflow.id);
|
|
34271
34271
|
if (agentId) {
|
|
34272
34272
|
try {
|
|
34273
34273
|
const created = await createTask({
|
|
@@ -34312,7 +34312,7 @@ function useLaunchWorkflow({ landing: surfaceLanding } = {}) {
|
|
|
34312
34312
|
const binding = PROMPT_BINDINGS[workflow.id];
|
|
34313
34313
|
if (!inPlace) openNewConversation();
|
|
34314
34314
|
if (binding?.attachScope !== false && !chunk555BS22J_cjs.isEmptyWorkflowScope(scope)) {
|
|
34315
|
-
const ids =
|
|
34315
|
+
const ids = chunkY6ZNWC7E_cjs.matchWorkflowScope(documents, scope).map((d) => d.external_id);
|
|
34316
34316
|
if (ids.length > 0) {
|
|
34317
34317
|
session.setConversationDocuments(
|
|
34318
34318
|
inPlace ? session.getState().conversationId ?? "new" : "new",
|
|
@@ -34347,30 +34347,30 @@ function ConnectedWorkflowStart({
|
|
|
34347
34347
|
const onLaunch = useLaunchWorkflow({ landing });
|
|
34348
34348
|
const { openUpload } = chunkT6GRWWRY_cjs.useBlocksEnvironment();
|
|
34349
34349
|
const { data: workspaceTags = [] } = react.useTags();
|
|
34350
|
-
const tags = react$1.useMemo(() =>
|
|
34350
|
+
const tags = react$1.useMemo(() => chunkY6ZNWC7E_cjs.documentScopeLabels(workspaceTags), [workspaceTags]);
|
|
34351
34351
|
const fieldPlaceholder = react$1.useCallback(
|
|
34352
34352
|
(field, inputs, workflow) => {
|
|
34353
|
-
if (workflow.id !==
|
|
34354
|
-
const derived =
|
|
34353
|
+
if (workflow.id !== chunkHVOPUYAG_cjs.ANNOTATE_ID || field.name !== "name") return void 0;
|
|
34354
|
+
const derived = chunkHVOPUYAG_cjs.deriveAnnotationName(String(inputs.description ?? ""));
|
|
34355
34355
|
return derived ? `Otherwise \u201C${derived}\u201D` : "Taken from the description";
|
|
34356
34356
|
},
|
|
34357
34357
|
[]
|
|
34358
34358
|
);
|
|
34359
34359
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
34360
|
-
|
|
34360
|
+
chunkUDMII47W_cjs.ConnectedWorkflowLauncher,
|
|
34361
34361
|
{
|
|
34362
34362
|
...rest,
|
|
34363
34363
|
workflows,
|
|
34364
34364
|
onLaunch,
|
|
34365
|
-
renderIcon:
|
|
34365
|
+
renderIcon: chunkHVOPUYAG_cjs.renderWorkflowIcon,
|
|
34366
34366
|
onAddFiles: openUpload,
|
|
34367
34367
|
agentLabels: AGENT_LABELS,
|
|
34368
34368
|
addFilesAction,
|
|
34369
34369
|
fieldPlaceholder,
|
|
34370
|
-
submitLabel: ({ workflow, matchedCount }) => workflow.id ===
|
|
34370
|
+
submitLabel: ({ workflow, matchedCount }) => workflow.id === chunkHVOPUYAG_cjs.ANNOTATE_ID && matchedCount !== null ? `Annotate ${matchedCount} document${matchedCount !== 1 ? "s" : ""}` : void 0,
|
|
34371
34371
|
renderNotice: ({ workflow, inputs }) => {
|
|
34372
|
-
if (workflow.id !==
|
|
34373
|
-
const name = String(inputs.name ?? "").trim() ||
|
|
34372
|
+
if (workflow.id !== chunkHVOPUYAG_cjs.ANNOTATE_ID) return null;
|
|
34373
|
+
const name = String(inputs.name ?? "").trim() || chunkHVOPUYAG_cjs.deriveAnnotationName(String(inputs.description ?? ""));
|
|
34374
34374
|
const existing = name ? tags.find((t) => t.name.toLowerCase() === name.toLowerCase()) : void 0;
|
|
34375
34375
|
if (!existing) return null;
|
|
34376
34376
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -34407,9 +34407,9 @@ function resolveLaunchInputs(workflow, request) {
|
|
|
34407
34407
|
return { ...fromContext, ...fromScope, ...request.inputs };
|
|
34408
34408
|
}
|
|
34409
34409
|
function useWorkflowLaunch() {
|
|
34410
|
-
const { skills } =
|
|
34410
|
+
const { skills } = chunkX3JJTHQ4_cjs.useWorkflowDefinitions();
|
|
34411
34411
|
const launch = react$1.useCallback(
|
|
34412
|
-
(workflowId, options2 = {}) =>
|
|
34412
|
+
(workflowId, options2 = {}) => chunkHVOPUYAG_cjs.openWorkflowLaunch({ workflowId, ...options2 }),
|
|
34413
34413
|
[]
|
|
34414
34414
|
);
|
|
34415
34415
|
const itemsFor = react$1.useCallback(
|
|
@@ -34438,9 +34438,9 @@ function useWorkflowLaunch() {
|
|
|
34438
34438
|
return { launch, itemsFor, scopeItemsFor };
|
|
34439
34439
|
}
|
|
34440
34440
|
function Inner() {
|
|
34441
|
-
const request =
|
|
34442
|
-
const close =
|
|
34443
|
-
const { skills } =
|
|
34441
|
+
const request = chunkHVOPUYAG_cjs.useWorkflowLaunchRequest();
|
|
34442
|
+
const close = chunkHVOPUYAG_cjs.closeWorkflowLaunch;
|
|
34443
|
+
const { skills } = chunkX3JJTHQ4_cjs.useWorkflowDefinitions();
|
|
34444
34444
|
const run = useLaunchWorkflow({ landing: request?.landing });
|
|
34445
34445
|
const workflow = skills.find((w) => w.id === request?.workflowId);
|
|
34446
34446
|
const inputs = react$1.useMemo(
|
|
@@ -34477,7 +34477,7 @@ function Inner() {
|
|
|
34477
34477
|
);
|
|
34478
34478
|
}
|
|
34479
34479
|
function WorkflowLaunchHost() {
|
|
34480
|
-
return
|
|
34480
|
+
return chunkHVOPUYAG_cjs.useWorkflowLaunchRequest() ? /* @__PURE__ */ jsxRuntime.jsx(Inner, {}) : null;
|
|
34481
34481
|
}
|
|
34482
34482
|
function isNeedsConfirmationDetail(detail) {
|
|
34483
34483
|
return typeof detail === "object" && detail !== null && detail.needs_confirmation === "resource_private";
|
|
@@ -34854,7 +34854,7 @@ function WorkflowRunStatusCell({ conversation }) {
|
|
|
34854
34854
|
return person ? ui.getUserDisplayName(person) : void 0;
|
|
34855
34855
|
};
|
|
34856
34856
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
34857
|
-
|
|
34857
|
+
chunkHVOPUYAG_cjs.WorkflowRunStatus,
|
|
34858
34858
|
{
|
|
34859
34859
|
steps,
|
|
34860
34860
|
states,
|
|
@@ -34888,7 +34888,7 @@ function ConversationStatusCell({ conversation }) {
|
|
|
34888
34888
|
if (conversation.plan?.steps?.length && !isLiveGenerating)
|
|
34889
34889
|
return /* @__PURE__ */ jsxRuntime.jsx(WorkflowRunStatusCell, { conversation });
|
|
34890
34890
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
34891
|
-
|
|
34891
|
+
chunkHVOPUYAG_cjs.ThreadStatusLine,
|
|
34892
34892
|
{
|
|
34893
34893
|
state: threadStateOf(conversation, isLiveGenerating),
|
|
34894
34894
|
className: "h-full",
|
|
@@ -35096,7 +35096,7 @@ function ConnectedThreadTabs({
|
|
|
35096
35096
|
generatingConversations
|
|
35097
35097
|
]);
|
|
35098
35098
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
35099
|
-
|
|
35099
|
+
chunkWVEFRQSW_cjs.TabHeader,
|
|
35100
35100
|
{
|
|
35101
35101
|
testId,
|
|
35102
35102
|
tabs,
|
|
@@ -35375,7 +35375,7 @@ function ConnectedTaskStartDialog({
|
|
|
35375
35375
|
};
|
|
35376
35376
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
35377
35377
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
35378
|
-
|
|
35378
|
+
chunkHVOPUYAG_cjs.TaskStartDialog,
|
|
35379
35379
|
{
|
|
35380
35380
|
open: open && !later,
|
|
35381
35381
|
onOpenChange: (next) => {
|
|
@@ -35400,14 +35400,14 @@ function ConnectedTaskStartDialog({
|
|
|
35400
35400
|
}
|
|
35401
35401
|
),
|
|
35402
35402
|
later && /* @__PURE__ */ jsxRuntime.jsx(
|
|
35403
|
-
|
|
35403
|
+
chunkX3JJTHQ4_cjs.ConnectedTaskComposer,
|
|
35404
35404
|
{
|
|
35405
35405
|
open: true,
|
|
35406
35406
|
onOpenChange: (next) => !next && setLater(null),
|
|
35407
35407
|
kind: "workflow",
|
|
35408
35408
|
startLater: true,
|
|
35409
35409
|
initialPrompt: later.prompt,
|
|
35410
|
-
initialWorkflowId: later.todo ?
|
|
35410
|
+
initialWorkflowId: later.todo ? chunkHVOPUYAG_cjs.REMIND_TASK_ID : void 0,
|
|
35411
35411
|
initialShared: later.shared,
|
|
35412
35412
|
launchWorkflow: later.workflow
|
|
35413
35413
|
}
|
|
@@ -35421,7 +35421,7 @@ function ConnectedThreadLauncher({ autoFocus }) {
|
|
|
35421
35421
|
const [later, setLater] = react$1.useState(null);
|
|
35422
35422
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
35423
35423
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
35424
|
-
|
|
35424
|
+
chunkHVOPUYAG_cjs.ThreadLauncher,
|
|
35425
35425
|
{
|
|
35426
35426
|
workflows: task.workflows,
|
|
35427
35427
|
people: task.people,
|
|
@@ -35451,14 +35451,14 @@ function ConnectedThreadLauncher({ autoFocus }) {
|
|
|
35451
35451
|
}
|
|
35452
35452
|
),
|
|
35453
35453
|
later && /* @__PURE__ */ jsxRuntime.jsx(
|
|
35454
|
-
|
|
35454
|
+
chunkX3JJTHQ4_cjs.ConnectedTaskComposer,
|
|
35455
35455
|
{
|
|
35456
35456
|
open: true,
|
|
35457
35457
|
onOpenChange: (next) => !next && setLater(null),
|
|
35458
35458
|
kind: "workflow",
|
|
35459
35459
|
startLater: true,
|
|
35460
35460
|
initialPrompt: later.prompt,
|
|
35461
|
-
initialWorkflowId: later.todo ?
|
|
35461
|
+
initialWorkflowId: later.todo ? chunkHVOPUYAG_cjs.REMIND_TASK_ID : void 0,
|
|
35462
35462
|
initialShared: later.shared,
|
|
35463
35463
|
launchWorkflow: later.workflow
|
|
35464
35464
|
}
|
|
@@ -35487,13 +35487,13 @@ function ConnectedNewThreadDialog({
|
|
|
35487
35487
|
});
|
|
35488
35488
|
const parentOptions = react$1.useMemo(() => {
|
|
35489
35489
|
const leaf = { external_id: "__new__" };
|
|
35490
|
-
return
|
|
35490
|
+
return chunkHVOPUYAG_cjs.moveTargets([...tasks, leaf], leaf).map((t) => ({
|
|
35491
35491
|
id: t.external_id,
|
|
35492
35492
|
name: t.title?.trim() || "Untitled task"
|
|
35493
35493
|
}));
|
|
35494
35494
|
}, [tasks]);
|
|
35495
35495
|
const submit = async (values) => {
|
|
35496
|
-
const request =
|
|
35496
|
+
const request = chunkHVOPUYAG_cjs.newThreadToRequest(values);
|
|
35497
35497
|
try {
|
|
35498
35498
|
if (!workspaceId) throw new Error("Open a workspace to add a task.");
|
|
35499
35499
|
if (!request.startAssistant && request.todo) {
|
|
@@ -35534,7 +35534,7 @@ function ConnectedNewThreadDialog({
|
|
|
35534
35534
|
}
|
|
35535
35535
|
};
|
|
35536
35536
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
35537
|
-
|
|
35537
|
+
chunkHVOPUYAG_cjs.NewThreadDialog,
|
|
35538
35538
|
{
|
|
35539
35539
|
open,
|
|
35540
35540
|
onOpenChange,
|
|
@@ -35550,7 +35550,7 @@ function ConnectedNewThreadDialog({
|
|
|
35550
35550
|
var START_VISIBLE = 8;
|
|
35551
35551
|
var START_SEARCH_ABOVE = 8;
|
|
35552
35552
|
function ConnectedConversationStart() {
|
|
35553
|
-
const { start } =
|
|
35553
|
+
const { start } = chunkX3JJTHQ4_cjs.useWorkflowDefinitions();
|
|
35554
35554
|
const { openSkillsBrowser } = chunkT6GRWWRY_cjs.useBlocksEnvironment();
|
|
35555
35555
|
const [query, setQuery] = react$1.useState("");
|
|
35556
35556
|
const q = query.trim().toLowerCase();
|
|
@@ -35565,7 +35565,7 @@ function ConnectedConversationStart() {
|
|
|
35565
35565
|
const browse = openSkillsBrowser ? [
|
|
35566
35566
|
{
|
|
35567
35567
|
id: "browse-all",
|
|
35568
|
-
iconNode:
|
|
35568
|
+
iconNode: chunkHVOPUYAG_cjs.renderWorkflowIcon("library"),
|
|
35569
35569
|
title: "Browse all",
|
|
35570
35570
|
description: "See every skill, make a copy, add your own",
|
|
35571
35571
|
onSelect: () => openSkillsBrowser(),
|
|
@@ -35609,7 +35609,7 @@ function parseTypedSkill(draft) {
|
|
|
35609
35609
|
return m ? { slug: m[1].toLowerCase(), text: (m[2] ?? "").trim() } : null;
|
|
35610
35610
|
}
|
|
35611
35611
|
function useSlashSkillWorkflows({ landing }) {
|
|
35612
|
-
const { skills, skillsEnabled } =
|
|
35612
|
+
const { skills, skillsEnabled } = chunkX3JJTHQ4_cjs.useWorkflowDefinitions();
|
|
35613
35613
|
const { commands } = react.useBuiltinCommands();
|
|
35614
35614
|
const [active, setActive] = react$1.useState(null);
|
|
35615
35615
|
const open = (workflow, text2) => {
|
|
@@ -35715,7 +35715,7 @@ function AgentBarShell({
|
|
|
35715
35715
|
}, [isStepsExpanded, steps]);
|
|
35716
35716
|
const visibleStepCount = react$1.useMemo(() => browser.topLevelAgentSteps(steps ?? []).length, [steps]);
|
|
35717
35717
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
35718
|
-
|
|
35718
|
+
chunkHVOPUYAG_cjs.AgentBar,
|
|
35719
35719
|
{
|
|
35720
35720
|
className,
|
|
35721
35721
|
testId,
|
|
@@ -35727,7 +35727,7 @@ function AgentBarShell({
|
|
|
35727
35727
|
drawerRef: scrollRef,
|
|
35728
35728
|
onDrawerScroll: handleDrawerScroll,
|
|
35729
35729
|
drawer: /* @__PURE__ */ jsxRuntime.jsx(
|
|
35730
|
-
|
|
35730
|
+
chunk3X37I6QE_cjs.AgentSteps,
|
|
35731
35731
|
{
|
|
35732
35732
|
steps: stepList,
|
|
35733
35733
|
isStreaming,
|
|
@@ -35779,7 +35779,7 @@ function AgentControlBar({
|
|
|
35779
35779
|
const waitingOnChildren = runningLanes.length > 0 && ["sub_agent", "spawn_subagent", "deep_research", "run_skill"].includes(currentTool ?? "");
|
|
35780
35780
|
const waitingLabel = runningLanes.length === 1 ? `Waiting on ${runningLanes[0].job}` : `Waiting on ${runningLanes.length} sub-agents`;
|
|
35781
35781
|
const liveTimerNode = liveTimer && /* @__PURE__ */ jsxRuntime.jsx(
|
|
35782
|
-
|
|
35782
|
+
chunk3X37I6QE_cjs.MessageLiveSeconds,
|
|
35783
35783
|
{
|
|
35784
35784
|
...liveTimer,
|
|
35785
35785
|
offsetSeconds: currentStep?.t ?? 0,
|
|
@@ -35788,7 +35788,7 @@ function AgentControlBar({
|
|
|
35788
35788
|
}
|
|
35789
35789
|
);
|
|
35790
35790
|
const status = /* @__PURE__ */ jsxRuntime.jsx(
|
|
35791
|
-
|
|
35791
|
+
chunkHVOPUYAG_cjs.AgentBarStatus,
|
|
35792
35792
|
{
|
|
35793
35793
|
state: showState ? controlState : void 0,
|
|
35794
35794
|
stateLabel: STATE_LABEL[controlState],
|
|
@@ -35830,7 +35830,7 @@ function AgentControlBar({
|
|
|
35830
35830
|
];
|
|
35831
35831
|
const controls = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
35832
35832
|
onStop && /* @__PURE__ */ jsxRuntime.jsx(
|
|
35833
|
-
|
|
35833
|
+
chunkHVOPUYAG_cjs.AgentBarIconButton,
|
|
35834
35834
|
{
|
|
35835
35835
|
onClick: onStop,
|
|
35836
35836
|
title: "Stop",
|
|
@@ -35839,22 +35839,22 @@ function AgentControlBar({
|
|
|
35839
35839
|
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Square, { className: "h-3 w-3", fill: "currentColor" })
|
|
35840
35840
|
}
|
|
35841
35841
|
),
|
|
35842
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
35842
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkHVOPUYAG_cjs.AgentBarMenu, { items: menuItems })
|
|
35843
35843
|
] });
|
|
35844
35844
|
const displayedQueuedMessages = (transientQueuedMessages ?? []).filter(
|
|
35845
35845
|
(message) => !message.serverId || !queuedMessages.some((queued) => queued.external_id === message.serverId)
|
|
35846
35846
|
);
|
|
35847
35847
|
const queuedNotes = displayedQueuedMessages.filter((message) => message.content);
|
|
35848
|
-
const below = probeAnswer || queuedNotes.length > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
35848
|
+
const below = probeAnswer || queuedNotes.length > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(chunkHVOPUYAG_cjs.AgentBarNotes, { children: [
|
|
35849
35849
|
queuedNotes.map((message, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
35850
|
-
|
|
35850
|
+
chunkHVOPUYAG_cjs.AgentBarQueuedNote,
|
|
35851
35851
|
{
|
|
35852
35852
|
text: message.content ?? "",
|
|
35853
35853
|
isAcknowledged: message.acknowledged
|
|
35854
35854
|
},
|
|
35855
35855
|
index
|
|
35856
35856
|
)),
|
|
35857
|
-
probeAnswer && /* @__PURE__ */ jsxRuntime.jsx(
|
|
35857
|
+
probeAnswer && /* @__PURE__ */ jsxRuntime.jsx(chunkHVOPUYAG_cjs.AgentBarProbeAnswer, { answer: probeAnswer.answer })
|
|
35858
35858
|
] }) : null;
|
|
35859
35859
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
35860
35860
|
AgentBarShell,
|
|
@@ -36059,8 +36059,8 @@ function ConnectedThreadsPage({
|
|
|
36059
36059
|
const tasks = useStableRecencyOrder(listed);
|
|
36060
36060
|
const updateConversation = react.useUpdateConversation();
|
|
36061
36061
|
const deleteConversation = react.useDeleteConversation();
|
|
36062
|
-
const people =
|
|
36063
|
-
const renderPerson =
|
|
36062
|
+
const people = chunkX3JJTHQ4_cjs.useTaskPeople();
|
|
36063
|
+
const renderPerson = chunkX3JJTHQ4_cjs.useRenderTaskPerson();
|
|
36064
36064
|
const canEditShared = react.useCanEditShared();
|
|
36065
36065
|
const isWorkspaceOwner = react.useIsWorkspaceOwner();
|
|
36066
36066
|
const { data: agents = [] } = react.useAgents();
|
|
@@ -36298,7 +36298,7 @@ function ConnectedThreadsPage({
|
|
|
36298
36298
|
"data-testid": mode === "tasks" ? "tasks-page" : "threads-page",
|
|
36299
36299
|
children: [
|
|
36300
36300
|
/* @__PURE__ */ jsxRuntime.jsx("main", { className: "flex min-h-0 flex-1 flex-col bg-background", children: mode === "threads" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
36301
|
-
|
|
36301
|
+
chunkHVOPUYAG_cjs.ConversationListView,
|
|
36302
36302
|
{
|
|
36303
36303
|
showHeader,
|
|
36304
36304
|
conversations: tasks,
|
|
@@ -36318,7 +36318,7 @@ function ConnectedThreadsPage({
|
|
|
36318
36318
|
renderLabels: threadLabels.renderLabels,
|
|
36319
36319
|
labelText: threadLabels.labelText,
|
|
36320
36320
|
renderBy: (row2) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
36321
|
-
|
|
36321
|
+
chunkHVOPUYAG_cjs.ConversationTurnSpeaker,
|
|
36322
36322
|
{
|
|
36323
36323
|
variant: "icon",
|
|
36324
36324
|
role: row2.last_message_role,
|
|
@@ -36340,7 +36340,7 @@ function ConnectedThreadsPage({
|
|
|
36340
36340
|
footer: /* @__PURE__ */ jsxRuntime.jsx(ConnectedThreadLauncher, { autoFocus: focusLauncher })
|
|
36341
36341
|
}
|
|
36342
36342
|
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
36343
|
-
|
|
36343
|
+
chunkHVOPUYAG_cjs.TaskInbox,
|
|
36344
36344
|
{
|
|
36345
36345
|
tasks,
|
|
36346
36346
|
isLoading,
|
|
@@ -36384,7 +36384,7 @@ function ConnectedThreadsPage({
|
|
|
36384
36384
|
initialParentId: parentForNew
|
|
36385
36385
|
}
|
|
36386
36386
|
),
|
|
36387
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
36387
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkX3JJTHQ4_cjs.ConnectedTaskComposer, { open: editorOpen, onOpenChange: setEditorOpen, task: editing }),
|
|
36388
36388
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
36389
36389
|
ConnectedExportDialog,
|
|
36390
36390
|
{
|
|
@@ -36396,7 +36396,7 @@ function ConnectedThreadsPage({
|
|
|
36396
36396
|
}
|
|
36397
36397
|
),
|
|
36398
36398
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
36399
|
-
|
|
36399
|
+
chunkJBL4PPEE_cjs.RenameDialog,
|
|
36400
36400
|
{
|
|
36401
36401
|
open: !!renaming,
|
|
36402
36402
|
onClose: () => {
|
|
@@ -36620,7 +36620,7 @@ function ConnectedConversationPage({
|
|
|
36620
36620
|
}
|
|
36621
36621
|
);
|
|
36622
36622
|
const { data: workspaceTags = [] } = react.useTags();
|
|
36623
|
-
const historyCount =
|
|
36623
|
+
const historyCount = chunkHVOPUYAG_cjs.filterConversationRows(
|
|
36624
36624
|
conversations,
|
|
36625
36625
|
threadFilter,
|
|
36626
36626
|
(row2) => workspaceTags.filter((tag) => row2.label_ext_ids?.includes(tag.external_id)).map((tag) => tag.name).join(" "),
|
|
@@ -36653,7 +36653,7 @@ function ConnectedConversationPage({
|
|
|
36653
36653
|
}
|
|
36654
36654
|
}
|
|
36655
36655
|
),
|
|
36656
|
-
isInChat && /* @__PURE__ */ jsxRuntime.jsx(
|
|
36656
|
+
isInChat && /* @__PURE__ */ jsxRuntime.jsx(chunk33PWCTND_cjs.ConnectedConversationCallActions, {}),
|
|
36657
36657
|
isInChat && /* @__PURE__ */ jsxRuntime.jsx(
|
|
36658
36658
|
chunkTVHTXO6V_cjs.NewChatButton,
|
|
36659
36659
|
{
|
|
@@ -36670,7 +36670,7 @@ function ConnectedConversationPage({
|
|
|
36670
36670
|
] })
|
|
36671
36671
|
}
|
|
36672
36672
|
),
|
|
36673
|
-
isInChat && /* @__PURE__ */ jsxRuntime.jsx(
|
|
36673
|
+
isInChat && /* @__PURE__ */ jsxRuntime.jsx(chunkX3JJTHQ4_cjs.ConnectedThreadTaskBar, { conversationId: currentConversationId })
|
|
36674
36674
|
] }),
|
|
36675
36675
|
isInChat && /* @__PURE__ */ jsxRuntime.jsx(
|
|
36676
36676
|
ConversationThread2,
|
|
@@ -37391,7 +37391,7 @@ function ConversationThread({
|
|
|
37391
37391
|
const isGuest = react.useWorkspaceRole() === "guest";
|
|
37392
37392
|
const meetingReadOnly = isGuest && !!currentTask?.meeting_call_ext_id;
|
|
37393
37393
|
const meetingCallExtId = currentTask?.meeting_call_ext_id ?? null;
|
|
37394
|
-
const threadMessages =
|
|
37394
|
+
const threadMessages = chunk33PWCTND_cjs.useMeetingThreadMessages(meetingCallExtId, messageHistory);
|
|
37395
37395
|
const [firstTurnPrompt, setFirstTurnPrompt] = react$1.useState(null);
|
|
37396
37396
|
const currentUserExtId = react.useArbiSession().user?.external_id ?? "";
|
|
37397
37397
|
const pendingFirstTurn = react$1.useMemo(
|
|
@@ -37439,7 +37439,7 @@ function ConversationThread({
|
|
|
37439
37439
|
return shownThreadMessages.slice(0, editIndex);
|
|
37440
37440
|
}, [shownThreadMessages, editingMessageId]);
|
|
37441
37441
|
const transcriptRunInfo = react$1.useMemo(
|
|
37442
|
-
() =>
|
|
37442
|
+
() => chunkRGPKW6KQ_cjs.threadTranscriptRuns(meetingCallExtId ? visibleMessages : []),
|
|
37443
37443
|
[meetingCallExtId, visibleMessages]
|
|
37444
37444
|
);
|
|
37445
37445
|
const threadLines = react$1.useMemo(
|
|
@@ -37454,7 +37454,7 @@ function ConversationThread({
|
|
|
37454
37454
|
}),
|
|
37455
37455
|
[threadMessages]
|
|
37456
37456
|
);
|
|
37457
|
-
const provisionalSpeakers =
|
|
37457
|
+
const provisionalSpeakers = chunk33PWCTND_cjs.useProvisionalSpeakers(meetingCallExtId, threadLines);
|
|
37458
37458
|
const showProvisional = !!meetingCallExtId && meetingView !== "chat";
|
|
37459
37459
|
const latestContextUsage = react$1.useMemo(() => {
|
|
37460
37460
|
const messages = messageHistory;
|
|
@@ -37544,7 +37544,7 @@ function ConversationThread({
|
|
|
37544
37544
|
}, [isGenerating]);
|
|
37545
37545
|
const slashWorkflows = useSlashSkillWorkflows({ landing: "current-chat" });
|
|
37546
37546
|
const composerSkills = react$1.useMemo(
|
|
37547
|
-
() => ({ builtin:
|
|
37547
|
+
() => ({ builtin: chunkHVOPUYAG_cjs.BUILTIN_SKILLS, openFor: slashWorkflows.openFor }),
|
|
37548
37548
|
[slashWorkflows.openFor]
|
|
37549
37549
|
);
|
|
37550
37550
|
const browseSkills = react$1.useMemo(
|
|
@@ -37593,7 +37593,7 @@ function ConversationThread({
|
|
|
37593
37593
|
useStartRequestedDraft();
|
|
37594
37594
|
const orphanedMessage = react.getOrphanedLastMessage(messageHistory, isGenerating, assistantMode);
|
|
37595
37595
|
return /* @__PURE__ */ jsxRuntime.jsxs(chunkTVHTXO6V_cjs.ConversationBody, { children: [
|
|
37596
|
-
/* @__PURE__ */ jsxRuntime.jsx(chunkTVHTXO6V_cjs.ConversationMain, { "data-testid": `conversation-${currentConversationId}`, children: threadsLoading ? /* @__PURE__ */ jsxRuntime.jsx(chunkTVHTXO6V_cjs.ConversationLoading, {}) : messageHistory.length > 0 || isBranching ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
37596
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkTVHTXO6V_cjs.ConversationMain, { "data-testid": `conversation-${currentConversationId}`, children: threadsLoading ? /* @__PURE__ */ jsxRuntime.jsx(chunkTVHTXO6V_cjs.ConversationLoading, {}) : messageHistory.length > 0 || isBranching ? /* @__PURE__ */ jsxRuntime.jsx(chunk3X37I6QE_cjs.AskAgainContext.Provider, { value: handleAskAgain, children: /* @__PURE__ */ jsxRuntime.jsxs(chunkRGPKW6KQ_cjs.TranscriptRunsContext.Provider, { value: transcriptRunInfo, children: [
|
|
37597
37597
|
meetingCallExtId && transcriptLineCount > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex justify-center py-2", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
37598
37598
|
chunk3UGJCSTO_cjs.ConversationFilter,
|
|
37599
37599
|
{
|
|
@@ -37611,15 +37611,15 @@ function ConversationThread({
|
|
|
37611
37611
|
]
|
|
37612
37612
|
}
|
|
37613
37613
|
) }),
|
|
37614
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
37615
|
-
showProvisional && /* @__PURE__ */ jsxRuntime.jsx(
|
|
37614
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk3X37I6QE_cjs.ConnectedMessageArea, { ref: containerRef, messages: visibleMessages }),
|
|
37615
|
+
showProvisional && /* @__PURE__ */ jsxRuntime.jsx(chunk33PWCTND_cjs.ProvisionalSpeakers, { ids: provisionalSpeakers })
|
|
37616
37616
|
] }) }) : meetingCallExtId ? (
|
|
37617
37617
|
// A meeting thread with nothing yet: call-aware, not the upload prompt.
|
|
37618
37618
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
37619
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
37620
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
37619
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk33PWCTND_cjs.CallConversationEmpty, { callExtId: meetingCallExtId }),
|
|
37620
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk33PWCTND_cjs.ProvisionalSpeakers, { ids: provisionalSpeakers })
|
|
37621
37621
|
] })
|
|
37622
|
-
) : currentTask && currentTask.status != null ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
37622
|
+
) : currentTask && currentTask.status != null ? /* @__PURE__ */ jsxRuntime.jsx(chunkHVOPUYAG_cjs.TaskEmptyState, { task: currentTask }) : pendingFirstTurn && isGenerating ? /* @__PURE__ */ jsxRuntime.jsx(chunk3X37I6QE_cjs.ConnectedMessageArea, { ref: containerRef, messages: pendingFirstTurn }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
37623
37623
|
ConnectedConversationEmpty,
|
|
37624
37624
|
{
|
|
37625
37625
|
hasDocuments: allWorkspaceDocuments.length > 0,
|
|
@@ -37690,7 +37690,7 @@ function ConversationThread({
|
|
|
37690
37690
|
children: react.READ_ONLY_MEETING_TEXT
|
|
37691
37691
|
}
|
|
37692
37692
|
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
37693
|
-
|
|
37693
|
+
chunk3X37I6QE_cjs.ConversationComposer,
|
|
37694
37694
|
{
|
|
37695
37695
|
handleSendMessage: handleUserSend,
|
|
37696
37696
|
placeholder: pendingAnswer ? "Type your answer to ARBI \u2014 or pick an option above" : void 0,
|
|
@@ -37826,8 +37826,8 @@ function ConnectedForgotPassword({
|
|
|
37826
37826
|
initialIsKeyEncrypted = false
|
|
37827
37827
|
}) {
|
|
37828
37828
|
const arbi = react.useArbi();
|
|
37829
|
-
const sso =
|
|
37830
|
-
const { onRecovered: onSiteRecovered } =
|
|
37829
|
+
const sso = chunk3X37I6QE_cjs.useSsoSignIn();
|
|
37830
|
+
const { onRecovered: onSiteRecovered } = chunk3X37I6QE_cjs.useAuthPages();
|
|
37831
37831
|
const [showSsoPrompt, setShowSsoPrompt] = react$1.useState(false);
|
|
37832
37832
|
const [email, setEmail] = react$1.useState(initialEmail ?? "");
|
|
37833
37833
|
const [recoveryKey, setRecoveryKey] = react$1.useState(initialRecoveryKey ?? null);
|
|
@@ -37963,9 +37963,9 @@ function ConnectedForgotPassword({
|
|
|
37963
37963
|
);
|
|
37964
37964
|
}
|
|
37965
37965
|
function useSsoVerificationRedirect() {
|
|
37966
|
-
const sso =
|
|
37966
|
+
const sso = chunk3X37I6QE_cjs.useSsoSignIn();
|
|
37967
37967
|
const { notify: notify16 } = chunkT6GRWWRY_cjs.useBlocksEnvironment();
|
|
37968
|
-
const { onVerificationFailed } =
|
|
37968
|
+
const { onVerificationFailed } = chunk3X37I6QE_cjs.useAuthPages();
|
|
37969
37969
|
react$1.useEffect(() => {
|
|
37970
37970
|
const urlParams = new URLSearchParams(window.location.search);
|
|
37971
37971
|
const success = urlParams.get("success") || null;
|
|
@@ -38002,18 +38002,18 @@ function ConnectedLoginPage({
|
|
|
38002
38002
|
layout = "page",
|
|
38003
38003
|
...compact
|
|
38004
38004
|
} = {}) {
|
|
38005
|
-
return layout === "compact" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
38005
|
+
return layout === "compact" ? /* @__PURE__ */ jsxRuntime.jsx(chunk3X37I6QE_cjs.CompactLogin, { ...compact }) : /* @__PURE__ */ jsxRuntime.jsx(LoginPage, {});
|
|
38006
38006
|
}
|
|
38007
38007
|
function LoginPage() {
|
|
38008
|
-
const sso =
|
|
38009
|
-
const auth =
|
|
38008
|
+
const sso = chunk3X37I6QE_cjs.useSsoSignIn();
|
|
38009
|
+
const auth = chunk3X37I6QE_cjs.useAuthPages();
|
|
38010
38010
|
const { notify: notify16 } = chunkT6GRWWRY_cjs.useBlocksEnvironment();
|
|
38011
38011
|
const isSsoOnly = !!auth.ssoOnly;
|
|
38012
38012
|
const allowRegistration = auth.allowRegistration ?? true;
|
|
38013
38013
|
const isOnline = documentTools.useIsOnline();
|
|
38014
38014
|
const passwordRules = auth.passwordRules;
|
|
38015
38015
|
useSsoVerificationRedirect();
|
|
38016
|
-
const formState =
|
|
38016
|
+
const formState = chunk3X37I6QE_cjs.useLoginForm();
|
|
38017
38017
|
const deploymentDomain = react.useArbi().getDeploymentDomain();
|
|
38018
38018
|
const {
|
|
38019
38019
|
email,
|
|
@@ -38050,11 +38050,11 @@ function LoginPage() {
|
|
|
38050
38050
|
handleLocalLogin,
|
|
38051
38051
|
handleRegister,
|
|
38052
38052
|
handleRequestVerificationCode
|
|
38053
|
-
} =
|
|
38053
|
+
} = chunk3X37I6QE_cjs.useLoginActions({
|
|
38054
38054
|
formState,
|
|
38055
38055
|
formActions: formState
|
|
38056
38056
|
});
|
|
38057
|
-
const { isDisabled: isRegisterSubmitDisabled } =
|
|
38057
|
+
const { isDisabled: isRegisterSubmitDisabled } = chunk3X37I6QE_cjs.useRegisterSubmitState(
|
|
38058
38058
|
isRegistering,
|
|
38059
38059
|
isAuthenticating,
|
|
38060
38060
|
password,
|
|
@@ -38598,7 +38598,7 @@ function SsoResendVerificationButton({
|
|
|
38598
38598
|
onClick: async () => handleResendEmailVerification(),
|
|
38599
38599
|
disabled: loading || disabled,
|
|
38600
38600
|
"aria-label": "Resend verification email",
|
|
38601
|
-
children: loading ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
38601
|
+
children: loading ? /* @__PURE__ */ jsxRuntime.jsx(chunk4RJPTXUQ_cjs.LoadingIndicator, {}) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
38602
38602
|
"Didn't get a verification email? ",
|
|
38603
38603
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-semibold", children: "Resend" })
|
|
38604
38604
|
] })
|
|
@@ -38609,16 +38609,16 @@ function SsoResendVerificationButton({
|
|
|
38609
38609
|
}
|
|
38610
38610
|
var NO_RECOVERY_KEY_WARNING2 = "Without your password or a recovery key, we cannot recover your account or data.";
|
|
38611
38611
|
function ConnectedSsoCallback() {
|
|
38612
|
-
const sso =
|
|
38612
|
+
const sso = chunk3X37I6QE_cjs.useSsoSignIn();
|
|
38613
38613
|
const { isAuthenticated: isAuthenticated2, isLoading, user } = sso;
|
|
38614
|
-
const auth =
|
|
38614
|
+
const auth = chunk3X37I6QE_cjs.useAuthPages();
|
|
38615
38615
|
const { notify: notify16, navigate } = chunkT6GRWWRY_cjs.useBlocksEnvironment();
|
|
38616
38616
|
const passwordRules = auth.passwordRules;
|
|
38617
38617
|
const isProcessing = react$1.useRef(false);
|
|
38618
38618
|
const hasCheckedStatus = react$1.useRef(false);
|
|
38619
38619
|
const [accessToken, setAccessToken] = react$1.useState(null);
|
|
38620
38620
|
const [ssoStatus, setSsoStatus] = react$1.useState(null);
|
|
38621
|
-
const ssoName = react$1.useMemo(() =>
|
|
38621
|
+
const ssoName = react$1.useMemo(() => chunk3X37I6QE_cjs.resolveSsoName(user ?? {}, ssoStatus ?? {}), [user, ssoStatus]);
|
|
38622
38622
|
const [password, setPassword] = react$1.useState("");
|
|
38623
38623
|
const [confirmPassword, setConfirmPassword] = react$1.useState("");
|
|
38624
38624
|
const [error, setError] = react$1.useState(null);
|
|
@@ -38796,7 +38796,7 @@ function ConnectedSsoCallback() {
|
|
|
38796
38796
|
setIsCheckingStatus(true);
|
|
38797
38797
|
try {
|
|
38798
38798
|
console.info("[SSO] Checking user status...");
|
|
38799
|
-
const response = await
|
|
38799
|
+
const response = await chunk3X37I6QE_cjs.ssoAccountStatus(arbi, accessToken, user);
|
|
38800
38800
|
console.info("[SSO] User status:", response.status);
|
|
38801
38801
|
setSsoStatus(response);
|
|
38802
38802
|
} catch (error2) {
|
|
@@ -38840,7 +38840,7 @@ function ConnectedSsoCallback() {
|
|
|
38840
38840
|
setIsSubmitting(true);
|
|
38841
38841
|
setError(null);
|
|
38842
38842
|
try {
|
|
38843
|
-
const { login, registered, linked } = await
|
|
38843
|
+
const { login, registered, linked } = await chunk3X37I6QE_cjs.completeSsoSignIn(arbi, {
|
|
38844
38844
|
token: accessToken,
|
|
38845
38845
|
user,
|
|
38846
38846
|
status: ssoStatus,
|
|
@@ -39292,7 +39292,7 @@ function ConnectedRecoveryKeyDialog({
|
|
|
39292
39292
|
const arbi = react.useArbi();
|
|
39293
39293
|
const { user, isSso: isSsoMode } = react.useArbiSession();
|
|
39294
39294
|
const userEmail = user?.email;
|
|
39295
|
-
const sso =
|
|
39295
|
+
const sso = chunk3X37I6QE_cjs.useSsoSignIn();
|
|
39296
39296
|
const handleVerify = async () => {
|
|
39297
39297
|
setError(null);
|
|
39298
39298
|
if (!password) {
|
|
@@ -39492,27 +39492,27 @@ function ConnectedOAuthConsentPage({
|
|
|
39492
39492
|
oauthErrorRedirect(params.redirectUri, params.state, "access_denied");
|
|
39493
39493
|
}
|
|
39494
39494
|
if (error && !params) {
|
|
39495
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
39495
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkHVOPUYAG_cjs.ConsentPage, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkHVOPUYAG_cjs.ConsentMessage, { tone: "error", title: "Invalid Request", children: error }) });
|
|
39496
39496
|
}
|
|
39497
39497
|
if (!params) {
|
|
39498
39498
|
return null;
|
|
39499
39499
|
}
|
|
39500
39500
|
if (clientInfo?.isLocalAgentFlow) {
|
|
39501
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
39501
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkHVOPUYAG_cjs.ConsentPage, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkHVOPUYAG_cjs.ConsentMessage, { tone: "warning", title: "Close this tab", children: "This tab opened alongside the correct authorization page. Please close this tab and complete the connection in the other tab that opened at the same time." }) });
|
|
39502
39502
|
}
|
|
39503
39503
|
if (!isAuthenticated2) {
|
|
39504
39504
|
return null;
|
|
39505
39505
|
}
|
|
39506
39506
|
if (callbackUrl) {
|
|
39507
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
39508
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
39507
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkHVOPUYAG_cjs.ConsentPage, { children: /* @__PURE__ */ jsxRuntime.jsxs(chunkHVOPUYAG_cjs.ConsentCard, { size: "md", children: [
|
|
39508
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkHVOPUYAG_cjs.ConsentHeader, { icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ClipboardList, {}), title: "Almost there", children: [
|
|
39509
39509
|
"A new tab has opened to complete the connection. If it succeeded, you can close this page. If you see a connection error there, paste the URL below into Claude Cowork \u2014",
|
|
39510
39510
|
" ",
|
|
39511
39511
|
copied ? "it's already copied to your clipboard." : "copy it first."
|
|
39512
39512
|
] }),
|
|
39513
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
39514
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
39515
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
39513
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkHVOPUYAG_cjs.ConsentSection, { title: "Callback URL", children: [
|
|
39514
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkHVOPUYAG_cjs.CopyableUrl, { url: callbackUrl, copied, onCopy: handleCopy }),
|
|
39515
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkHVOPUYAG_cjs.ConsentText, { variant: "hint", children: [
|
|
39516
39516
|
"In Claude Code, paste the URL at the prompt that says",
|
|
39517
39517
|
" ",
|
|
39518
39518
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-mono text-foreground", children: '"paste the full redirect URL here"' }),
|
|
@@ -39521,17 +39521,17 @@ function ConnectedOAuthConsentPage({
|
|
|
39521
39521
|
] })
|
|
39522
39522
|
] }) });
|
|
39523
39523
|
}
|
|
39524
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
39525
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
39526
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
39524
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkHVOPUYAG_cjs.ConsentPage, { children: /* @__PURE__ */ jsxRuntime.jsxs(chunkHVOPUYAG_cjs.ConsentCard, { children: [
|
|
39525
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkHVOPUYAG_cjs.ConsentHeader, { icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Link2, {}), title: `Connect to ${appName}`, children: [
|
|
39526
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkHVOPUYAG_cjs.ConsentStrong, { children: clientInfo?.name ?? params.clientId }),
|
|
39527
39527
|
" is requesting access to your ",
|
|
39528
39528
|
appName,
|
|
39529
39529
|
" workspace."
|
|
39530
39530
|
] }),
|
|
39531
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
39532
|
-
error && /* @__PURE__ */ jsxRuntime.jsx(
|
|
39533
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
39534
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
39531
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkHVOPUYAG_cjs.ConsentSection, { title: "This will allow", children: /* @__PURE__ */ jsxRuntime.jsx(chunkHVOPUYAG_cjs.ConsentPermissionList, { items: permissions }) }),
|
|
39532
|
+
error && /* @__PURE__ */ jsxRuntime.jsx(chunkHVOPUYAG_cjs.ConsentNotice, { tone: "error", children: error }),
|
|
39533
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkHVOPUYAG_cjs.ConsentActions, { isLoading: loading, onDeny: handleDeny, onAllow: handleAllow }),
|
|
39534
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkHVOPUYAG_cjs.ConsentFootnote, { children: footnote })
|
|
39535
39535
|
] }) });
|
|
39536
39536
|
}
|
|
39537
39537
|
function ConnectedSharedFilesPage({
|
|
@@ -39752,7 +39752,7 @@ function ConnectedPanelHost({
|
|
|
39752
39752
|
}
|
|
39753
39753
|
);
|
|
39754
39754
|
const panelElement = /* @__PURE__ */ jsxRuntime.jsx(
|
|
39755
|
-
|
|
39755
|
+
chunkJBL4PPEE_cjs.FloatingPanel,
|
|
39756
39756
|
{
|
|
39757
39757
|
panelId,
|
|
39758
39758
|
mode,
|
|
@@ -39856,10 +39856,10 @@ function useContextualHints() {
|
|
|
39856
39856
|
const session = react.useArbiSessionStore();
|
|
39857
39857
|
const { data: userSettings } = react.useUserSettings();
|
|
39858
39858
|
const updateUserSettings = react.useUpdateUserSettings();
|
|
39859
|
-
const [sessionOverride] = react.useTransientView(
|
|
39860
|
-
const setShowHints = (value) =>
|
|
39859
|
+
const [sessionOverride] = react.useTransientView(chunk4RJPTXUQ_cjs.TIPS_VISIBILITY_OVERRIDE, null);
|
|
39860
|
+
const setShowHints = (value) => chunk4RJPTXUQ_cjs.setHintsSessionOverride(session, value);
|
|
39861
39861
|
const setShowHintsPersisted = (value) => {
|
|
39862
|
-
|
|
39862
|
+
chunk4RJPTXUQ_cjs.setHintsSessionOverride(session, null);
|
|
39863
39863
|
updateUserSettings.mutate({ show_hints: value });
|
|
39864
39864
|
};
|
|
39865
39865
|
return {
|
|
@@ -39967,55 +39967,55 @@ function ChromeInstallDialog({
|
|
|
39967
39967
|
|
|
39968
39968
|
Object.defineProperty(exports, "CAP_REACHED_MESSAGE", {
|
|
39969
39969
|
enumerable: true,
|
|
39970
|
-
get: function () { return
|
|
39970
|
+
get: function () { return chunkCCSF7RI4_cjs.CAP_REACHED_MESSAGE; }
|
|
39971
39971
|
});
|
|
39972
39972
|
Object.defineProperty(exports, "ZERO_BUDGET_MESSAGE", {
|
|
39973
39973
|
enumerable: true,
|
|
39974
|
-
get: function () { return
|
|
39974
|
+
get: function () { return chunkCCSF7RI4_cjs.ZERO_BUDGET_MESSAGE; }
|
|
39975
39975
|
});
|
|
39976
39976
|
Object.defineProperty(exports, "aiUsageResetTimestamp", {
|
|
39977
39977
|
enumerable: true,
|
|
39978
|
-
get: function () { return
|
|
39978
|
+
get: function () { return chunkCCSF7RI4_cjs.aiUsageResetTimestamp; }
|
|
39979
39979
|
});
|
|
39980
39980
|
Object.defineProperty(exports, "formatMoney", {
|
|
39981
39981
|
enumerable: true,
|
|
39982
|
-
get: function () { return
|
|
39982
|
+
get: function () { return chunkCCSF7RI4_cjs.formatMoney; }
|
|
39983
39983
|
});
|
|
39984
39984
|
Object.defineProperty(exports, "formatResetDate", {
|
|
39985
39985
|
enumerable: true,
|
|
39986
|
-
get: function () { return
|
|
39986
|
+
get: function () { return chunkCCSF7RI4_cjs.formatResetDate; }
|
|
39987
39987
|
});
|
|
39988
39988
|
Object.defineProperty(exports, "getQuotaItems", {
|
|
39989
39989
|
enumerable: true,
|
|
39990
|
-
get: function () { return
|
|
39990
|
+
get: function () { return chunkCCSF7RI4_cjs.getQuotaItems; }
|
|
39991
39991
|
});
|
|
39992
39992
|
Object.defineProperty(exports, "isAddonBudgetZero", {
|
|
39993
39993
|
enumerable: true,
|
|
39994
|
-
get: function () { return
|
|
39994
|
+
get: function () { return chunkCCSF7RI4_cjs.isAddonBudgetZero; }
|
|
39995
39995
|
});
|
|
39996
39996
|
Object.defineProperty(exports, "isProProject", {
|
|
39997
39997
|
enumerable: true,
|
|
39998
|
-
get: function () { return
|
|
39998
|
+
get: function () { return chunkCCSF7RI4_cjs.isProProject; }
|
|
39999
39999
|
});
|
|
40000
40000
|
Object.defineProperty(exports, "planBadgeView", {
|
|
40001
40001
|
enumerable: true,
|
|
40002
|
-
get: function () { return
|
|
40002
|
+
get: function () { return chunkCCSF7RI4_cjs.planBadgeView; }
|
|
40003
40003
|
});
|
|
40004
40004
|
Object.defineProperty(exports, "planName", {
|
|
40005
40005
|
enumerable: true,
|
|
40006
|
-
get: function () { return
|
|
40006
|
+
get: function () { return chunkCCSF7RI4_cjs.planName; }
|
|
40007
40007
|
});
|
|
40008
40008
|
Object.defineProperty(exports, "projectGroupBilling", {
|
|
40009
40009
|
enumerable: true,
|
|
40010
|
-
get: function () { return
|
|
40010
|
+
get: function () { return chunkCCSF7RI4_cjs.projectGroupBilling; }
|
|
40011
40011
|
});
|
|
40012
40012
|
Object.defineProperty(exports, "useBillingSupport", {
|
|
40013
40013
|
enumerable: true,
|
|
40014
|
-
get: function () { return
|
|
40014
|
+
get: function () { return chunkCCSF7RI4_cjs.useBillingSupport; }
|
|
40015
40015
|
});
|
|
40016
40016
|
Object.defineProperty(exports, "useRewardBalance", {
|
|
40017
40017
|
enumerable: true,
|
|
40018
|
-
get: function () { return
|
|
40018
|
+
get: function () { return chunkCCSF7RI4_cjs.useRewardBalance; }
|
|
40019
40019
|
});
|
|
40020
40020
|
Object.defineProperty(exports, "ConnectedTagEntity", {
|
|
40021
40021
|
enumerable: true,
|
|
@@ -40063,91 +40063,91 @@ Object.defineProperty(exports, "useWorkspaceDocs", {
|
|
|
40063
40063
|
});
|
|
40064
40064
|
Object.defineProperty(exports, "ConnectedTaskActivityDialog", {
|
|
40065
40065
|
enumerable: true,
|
|
40066
|
-
get: function () { return
|
|
40066
|
+
get: function () { return chunkX3JJTHQ4_cjs.ConnectedTaskActivityDialog; }
|
|
40067
40067
|
});
|
|
40068
40068
|
Object.defineProperty(exports, "ConnectedTaskComposer", {
|
|
40069
40069
|
enumerable: true,
|
|
40070
|
-
get: function () { return
|
|
40070
|
+
get: function () { return chunkX3JJTHQ4_cjs.ConnectedTaskComposer; }
|
|
40071
40071
|
});
|
|
40072
40072
|
Object.defineProperty(exports, "ConnectedThreadTaskBar", {
|
|
40073
40073
|
enumerable: true,
|
|
40074
|
-
get: function () { return
|
|
40074
|
+
get: function () { return chunkX3JJTHQ4_cjs.ConnectedThreadTaskBar; }
|
|
40075
40075
|
});
|
|
40076
40076
|
Object.defineProperty(exports, "ConnectedWorkflowHistory", {
|
|
40077
40077
|
enumerable: true,
|
|
40078
|
-
get: function () { return
|
|
40078
|
+
get: function () { return chunkX3JJTHQ4_cjs.ConnectedWorkflowHistory; }
|
|
40079
40079
|
});
|
|
40080
40080
|
Object.defineProperty(exports, "ConnectedWorkflowRunner", {
|
|
40081
40081
|
enumerable: true,
|
|
40082
|
-
get: function () { return
|
|
40082
|
+
get: function () { return chunkX3JJTHQ4_cjs.ConnectedWorkflowRunner; }
|
|
40083
40083
|
});
|
|
40084
40084
|
Object.defineProperty(exports, "DEFAULT_CONNECTED_WORKFLOW_RUNNER_LABELS", {
|
|
40085
40085
|
enumerable: true,
|
|
40086
|
-
get: function () { return
|
|
40086
|
+
get: function () { return chunkX3JJTHQ4_cjs.DEFAULT_CONNECTED_WORKFLOW_RUNNER_LABELS; }
|
|
40087
40087
|
});
|
|
40088
40088
|
Object.defineProperty(exports, "DEFAULT_WORKFLOW_RUN_PAGE_LABELS", {
|
|
40089
40089
|
enumerable: true,
|
|
40090
|
-
get: function () { return
|
|
40090
|
+
get: function () { return chunkX3JJTHQ4_cjs.DEFAULT_WORKFLOW_RUN_PAGE_LABELS; }
|
|
40091
40091
|
});
|
|
40092
40092
|
Object.defineProperty(exports, "WorkflowRunThread", {
|
|
40093
40093
|
enumerable: true,
|
|
40094
|
-
get: function () { return
|
|
40094
|
+
get: function () { return chunkX3JJTHQ4_cjs.WorkflowRunThread; }
|
|
40095
40095
|
});
|
|
40096
40096
|
Object.defineProperty(exports, "WorkflowRunWorkspaceChangedError", {
|
|
40097
40097
|
enumerable: true,
|
|
40098
|
-
get: function () { return
|
|
40098
|
+
get: function () { return chunkX3JJTHQ4_cjs.WorkflowRunWorkspaceChangedError; }
|
|
40099
40099
|
});
|
|
40100
40100
|
Object.defineProperty(exports, "buildProjectSummaries", {
|
|
40101
40101
|
enumerable: true,
|
|
40102
|
-
get: function () { return
|
|
40102
|
+
get: function () { return chunkX3JJTHQ4_cjs.buildProjectSummaries; }
|
|
40103
40103
|
});
|
|
40104
40104
|
Object.defineProperty(exports, "primaryProjectWorkspace", {
|
|
40105
40105
|
enumerable: true,
|
|
40106
|
-
get: function () { return
|
|
40106
|
+
get: function () { return chunkX3JJTHQ4_cjs.primaryProjectWorkspace; }
|
|
40107
40107
|
});
|
|
40108
40108
|
Object.defineProperty(exports, "useEnsureRequiredLabels", {
|
|
40109
40109
|
enumerable: true,
|
|
40110
|
-
get: function () { return
|
|
40110
|
+
get: function () { return chunkX3JJTHQ4_cjs.useEnsureRequiredLabels; }
|
|
40111
40111
|
});
|
|
40112
40112
|
Object.defineProperty(exports, "useProjectSummaries", {
|
|
40113
40113
|
enumerable: true,
|
|
40114
|
-
get: function () { return
|
|
40114
|
+
get: function () { return chunkX3JJTHQ4_cjs.useProjectSummaries; }
|
|
40115
40115
|
});
|
|
40116
40116
|
Object.defineProperty(exports, "useProjectSummary", {
|
|
40117
40117
|
enumerable: true,
|
|
40118
|
-
get: function () { return
|
|
40118
|
+
get: function () { return chunkX3JJTHQ4_cjs.useProjectSummary; }
|
|
40119
40119
|
});
|
|
40120
40120
|
Object.defineProperty(exports, "useRenderTaskPerson", {
|
|
40121
40121
|
enumerable: true,
|
|
40122
|
-
get: function () { return
|
|
40122
|
+
get: function () { return chunkX3JJTHQ4_cjs.useRenderTaskPerson; }
|
|
40123
40123
|
});
|
|
40124
40124
|
Object.defineProperty(exports, "useRequiredLabels", {
|
|
40125
40125
|
enumerable: true,
|
|
40126
|
-
get: function () { return
|
|
40126
|
+
get: function () { return chunkX3JJTHQ4_cjs.useRequiredLabels; }
|
|
40127
40127
|
});
|
|
40128
40128
|
Object.defineProperty(exports, "useSkillsEnabled", {
|
|
40129
40129
|
enumerable: true,
|
|
40130
|
-
get: function () { return
|
|
40130
|
+
get: function () { return chunkX3JJTHQ4_cjs.useSkillsEnabled; }
|
|
40131
40131
|
});
|
|
40132
40132
|
Object.defineProperty(exports, "useTaskPeople", {
|
|
40133
40133
|
enumerable: true,
|
|
40134
|
-
get: function () { return
|
|
40134
|
+
get: function () { return chunkX3JJTHQ4_cjs.useTaskPeople; }
|
|
40135
40135
|
});
|
|
40136
40136
|
Object.defineProperty(exports, "useWorkflowDefinitions", {
|
|
40137
40137
|
enumerable: true,
|
|
40138
|
-
get: function () { return
|
|
40138
|
+
get: function () { return chunkX3JJTHQ4_cjs.useWorkflowDefinitions; }
|
|
40139
40139
|
});
|
|
40140
40140
|
Object.defineProperty(exports, "useWorkflowTasks", {
|
|
40141
40141
|
enumerable: true,
|
|
40142
|
-
get: function () { return
|
|
40142
|
+
get: function () { return chunkX3JJTHQ4_cjs.useWorkflowTasks; }
|
|
40143
40143
|
});
|
|
40144
40144
|
Object.defineProperty(exports, "useWorkflowsPageState", {
|
|
40145
40145
|
enumerable: true,
|
|
40146
|
-
get: function () { return
|
|
40146
|
+
get: function () { return chunkX3JJTHQ4_cjs.useWorkflowsPageState; }
|
|
40147
40147
|
});
|
|
40148
40148
|
Object.defineProperty(exports, "workflowRunView", {
|
|
40149
40149
|
enumerable: true,
|
|
40150
|
-
get: function () { return
|
|
40150
|
+
get: function () { return chunkX3JJTHQ4_cjs.workflowRunView; }
|
|
40151
40151
|
});
|
|
40152
40152
|
Object.defineProperty(exports, "FILES_PREFS_KEY", {
|
|
40153
40153
|
enumerable: true,
|
|
@@ -40183,131 +40183,131 @@ Object.defineProperty(exports, "usePendingFolders", {
|
|
|
40183
40183
|
});
|
|
40184
40184
|
Object.defineProperty(exports, "AgentSteps", {
|
|
40185
40185
|
enumerable: true,
|
|
40186
|
-
get: function () { return
|
|
40186
|
+
get: function () { return chunk3X37I6QE_cjs.AgentSteps; }
|
|
40187
40187
|
});
|
|
40188
40188
|
Object.defineProperty(exports, "AnswerTable", {
|
|
40189
40189
|
enumerable: true,
|
|
40190
|
-
get: function () { return
|
|
40190
|
+
get: function () { return chunk3X37I6QE_cjs.AnswerTable; }
|
|
40191
40191
|
});
|
|
40192
40192
|
Object.defineProperty(exports, "ArbiChat", {
|
|
40193
40193
|
enumerable: true,
|
|
40194
|
-
get: function () { return
|
|
40194
|
+
get: function () { return chunk3X37I6QE_cjs.ArbiChat; }
|
|
40195
40195
|
});
|
|
40196
40196
|
Object.defineProperty(exports, "AskAgainContext", {
|
|
40197
40197
|
enumerable: true,
|
|
40198
|
-
get: function () { return
|
|
40198
|
+
get: function () { return chunk3X37I6QE_cjs.AskAgainContext; }
|
|
40199
40199
|
});
|
|
40200
40200
|
Object.defineProperty(exports, "ConnectedBranchControls", {
|
|
40201
40201
|
enumerable: true,
|
|
40202
|
-
get: function () { return
|
|
40202
|
+
get: function () { return chunk3X37I6QE_cjs.ConnectedBranchControls; }
|
|
40203
40203
|
});
|
|
40204
40204
|
Object.defineProperty(exports, "ConnectedCitationRenderer", {
|
|
40205
40205
|
enumerable: true,
|
|
40206
|
-
get: function () { return
|
|
40206
|
+
get: function () { return chunk3X37I6QE_cjs.ConnectedCitationRenderer; }
|
|
40207
40207
|
});
|
|
40208
40208
|
Object.defineProperty(exports, "ConnectedCompactConversation", {
|
|
40209
40209
|
enumerable: true,
|
|
40210
|
-
get: function () { return
|
|
40210
|
+
get: function () { return chunk3X37I6QE_cjs.ConnectedCompactConversation; }
|
|
40211
40211
|
});
|
|
40212
40212
|
Object.defineProperty(exports, "ConnectedConversationDocumentPicker", {
|
|
40213
40213
|
enumerable: true,
|
|
40214
|
-
get: function () { return
|
|
40214
|
+
get: function () { return chunk3X37I6QE_cjs.ConnectedConversationDocumentPicker; }
|
|
40215
40215
|
});
|
|
40216
40216
|
Object.defineProperty(exports, "ConnectedEmbeddedChat", {
|
|
40217
40217
|
enumerable: true,
|
|
40218
|
-
get: function () { return
|
|
40218
|
+
get: function () { return chunk3X37I6QE_cjs.ConnectedEmbeddedChat; }
|
|
40219
40219
|
});
|
|
40220
40220
|
Object.defineProperty(exports, "ConnectedMessage", {
|
|
40221
40221
|
enumerable: true,
|
|
40222
|
-
get: function () { return
|
|
40222
|
+
get: function () { return chunk3X37I6QE_cjs.ConnectedMessage; }
|
|
40223
40223
|
});
|
|
40224
40224
|
Object.defineProperty(exports, "ConnectedMessageArea", {
|
|
40225
40225
|
enumerable: true,
|
|
40226
|
-
get: function () { return
|
|
40226
|
+
get: function () { return chunk3X37I6QE_cjs.ConnectedMessageArea; }
|
|
40227
40227
|
});
|
|
40228
40228
|
Object.defineProperty(exports, "ConnectedMessageList", {
|
|
40229
40229
|
enumerable: true,
|
|
40230
|
-
get: function () { return
|
|
40230
|
+
get: function () { return chunk3X37I6QE_cjs.ConnectedMessageList; }
|
|
40231
40231
|
});
|
|
40232
40232
|
Object.defineProperty(exports, "ConnectedThreadsPreview", {
|
|
40233
40233
|
enumerable: true,
|
|
40234
|
-
get: function () { return
|
|
40234
|
+
get: function () { return chunk3X37I6QE_cjs.ConnectedThreadsPreview; }
|
|
40235
40235
|
});
|
|
40236
40236
|
Object.defineProperty(exports, "ConnectedUserEntity", {
|
|
40237
40237
|
enumerable: true,
|
|
40238
|
-
get: function () { return
|
|
40238
|
+
get: function () { return chunk3X37I6QE_cjs.ConnectedUserEntity; }
|
|
40239
40239
|
});
|
|
40240
40240
|
Object.defineProperty(exports, "ConversationComposer", {
|
|
40241
40241
|
enumerable: true,
|
|
40242
|
-
get: function () { return
|
|
40242
|
+
get: function () { return chunk3X37I6QE_cjs.ConversationComposer; }
|
|
40243
40243
|
});
|
|
40244
40244
|
Object.defineProperty(exports, "EmbeddedChatPanel", {
|
|
40245
40245
|
enumerable: true,
|
|
40246
|
-
get: function () { return
|
|
40246
|
+
get: function () { return chunk3X37I6QE_cjs.EmbeddedChatPanel; }
|
|
40247
40247
|
});
|
|
40248
40248
|
Object.defineProperty(exports, "MessageDetailsModal", {
|
|
40249
40249
|
enumerable: true,
|
|
40250
|
-
get: function () { return
|
|
40250
|
+
get: function () { return chunk3X37I6QE_cjs.MessageDetailsModal; }
|
|
40251
40251
|
});
|
|
40252
40252
|
Object.defineProperty(exports, "MessageLiveSeconds", {
|
|
40253
40253
|
enumerable: true,
|
|
40254
|
-
get: function () { return
|
|
40254
|
+
get: function () { return chunk3X37I6QE_cjs.MessageLiveSeconds; }
|
|
40255
40255
|
});
|
|
40256
40256
|
Object.defineProperty(exports, "RunningSubagents", {
|
|
40257
40257
|
enumerable: true,
|
|
40258
|
-
get: function () { return
|
|
40258
|
+
get: function () { return chunk3X37I6QE_cjs.RunningSubagents; }
|
|
40259
40259
|
});
|
|
40260
40260
|
Object.defineProperty(exports, "SourceChips", {
|
|
40261
40261
|
enumerable: true,
|
|
40262
|
-
get: function () { return
|
|
40262
|
+
get: function () { return chunk3X37I6QE_cjs.SourceChips; }
|
|
40263
40263
|
});
|
|
40264
40264
|
Object.defineProperty(exports, "WorkflowStepMessage", {
|
|
40265
40265
|
enumerable: true,
|
|
40266
|
-
get: function () { return
|
|
40266
|
+
get: function () { return chunk3X37I6QE_cjs.WorkflowStepMessage; }
|
|
40267
40267
|
});
|
|
40268
40268
|
Object.defineProperty(exports, "backUpOnSignup", {
|
|
40269
40269
|
enumerable: true,
|
|
40270
|
-
get: function () { return
|
|
40270
|
+
get: function () { return chunk3X37I6QE_cjs.backUpOnSignup; }
|
|
40271
40271
|
});
|
|
40272
40272
|
Object.defineProperty(exports, "defaultHost", {
|
|
40273
40273
|
enumerable: true,
|
|
40274
|
-
get: function () { return
|
|
40274
|
+
get: function () { return chunk3X37I6QE_cjs.defaultHost; }
|
|
40275
40275
|
});
|
|
40276
40276
|
Object.defineProperty(exports, "renderConnectedUser", {
|
|
40277
40277
|
enumerable: true,
|
|
40278
|
-
get: function () { return
|
|
40278
|
+
get: function () { return chunk3X37I6QE_cjs.renderConnectedUser; }
|
|
40279
40279
|
});
|
|
40280
40280
|
Object.defineProperty(exports, "resolveSsoName", {
|
|
40281
40281
|
enumerable: true,
|
|
40282
|
-
get: function () { return
|
|
40282
|
+
get: function () { return chunk3X37I6QE_cjs.resolveSsoName; }
|
|
40283
40283
|
});
|
|
40284
40284
|
Object.defineProperty(exports, "useAuthPages", {
|
|
40285
40285
|
enumerable: true,
|
|
40286
|
-
get: function () { return
|
|
40286
|
+
get: function () { return chunk3X37I6QE_cjs.useAuthPages; }
|
|
40287
40287
|
});
|
|
40288
40288
|
Object.defineProperty(exports, "useOpenChunk", {
|
|
40289
40289
|
enumerable: true,
|
|
40290
|
-
get: function () { return
|
|
40290
|
+
get: function () { return chunk3X37I6QE_cjs.useOpenChunk; }
|
|
40291
40291
|
});
|
|
40292
40292
|
Object.defineProperty(exports, "useOpenWorkspaceIcon", {
|
|
40293
40293
|
enumerable: true,
|
|
40294
|
-
get: function () { return
|
|
40294
|
+
get: function () { return chunk3X37I6QE_cjs.useOpenWorkspaceIcon; }
|
|
40295
40295
|
});
|
|
40296
40296
|
Object.defineProperty(exports, "useSlashItems", {
|
|
40297
40297
|
enumerable: true,
|
|
40298
|
-
get: function () { return
|
|
40298
|
+
get: function () { return chunk3X37I6QE_cjs.useSlashItems; }
|
|
40299
40299
|
});
|
|
40300
40300
|
Object.defineProperty(exports, "useSsoSignIn", {
|
|
40301
40301
|
enumerable: true,
|
|
40302
|
-
get: function () { return
|
|
40302
|
+
get: function () { return chunk3X37I6QE_cjs.useSsoSignIn; }
|
|
40303
40303
|
});
|
|
40304
40304
|
Object.defineProperty(exports, "useWorkspaceDocTitles", {
|
|
40305
40305
|
enumerable: true,
|
|
40306
|
-
get: function () { return
|
|
40306
|
+
get: function () { return chunk3X37I6QE_cjs.useWorkspaceDocTitles; }
|
|
40307
40307
|
});
|
|
40308
40308
|
Object.defineProperty(exports, "useConnectedThreadActivity", {
|
|
40309
40309
|
enumerable: true,
|
|
40310
|
-
get: function () { return
|
|
40310
|
+
get: function () { return chunkLBKTTQUR_cjs.useConnectedThreadActivity; }
|
|
40311
40311
|
});
|
|
40312
40312
|
Object.defineProperty(exports, "ConnectedPendingSyncDialog", {
|
|
40313
40313
|
enumerable: true,
|
|
@@ -40383,43 +40383,43 @@ Object.defineProperty(exports, "useResolvedDocStatus", {
|
|
|
40383
40383
|
});
|
|
40384
40384
|
Object.defineProperty(exports, "ConnectedWorkflowDocumentsField", {
|
|
40385
40385
|
enumerable: true,
|
|
40386
|
-
get: function () { return
|
|
40386
|
+
get: function () { return chunkUDMII47W_cjs.ConnectedWorkflowDocumentsField; }
|
|
40387
40387
|
});
|
|
40388
40388
|
Object.defineProperty(exports, "ConnectedWorkflowLauncher", {
|
|
40389
40389
|
enumerable: true,
|
|
40390
|
-
get: function () { return
|
|
40390
|
+
get: function () { return chunkUDMII47W_cjs.ConnectedWorkflowLauncher; }
|
|
40391
40391
|
});
|
|
40392
40392
|
Object.defineProperty(exports, "ConnectedWorkflowsTable", {
|
|
40393
40393
|
enumerable: true,
|
|
40394
|
-
get: function () { return
|
|
40394
|
+
get: function () { return chunkUDMII47W_cjs.ConnectedWorkflowsTable; }
|
|
40395
40395
|
});
|
|
40396
40396
|
Object.defineProperty(exports, "DEFAULT_CONNECTED_WORKFLOWS_TABLE_LABELS", {
|
|
40397
40397
|
enumerable: true,
|
|
40398
|
-
get: function () { return
|
|
40398
|
+
get: function () { return chunkUDMII47W_cjs.DEFAULT_CONNECTED_WORKFLOWS_TABLE_LABELS; }
|
|
40399
40399
|
});
|
|
40400
40400
|
Object.defineProperty(exports, "toWorkflowFieldDocument", {
|
|
40401
40401
|
enumerable: true,
|
|
40402
|
-
get: function () { return
|
|
40402
|
+
get: function () { return chunkUDMII47W_cjs.toWorkflowFieldDocument; }
|
|
40403
40403
|
});
|
|
40404
40404
|
Object.defineProperty(exports, "useConnectedAgentOptions", {
|
|
40405
40405
|
enumerable: true,
|
|
40406
|
-
get: function () { return
|
|
40406
|
+
get: function () { return chunkUDMII47W_cjs.useConnectedAgentOptions; }
|
|
40407
40407
|
});
|
|
40408
40408
|
Object.defineProperty(exports, "useConnectedWorkflowScopeSource", {
|
|
40409
40409
|
enumerable: true,
|
|
40410
|
-
get: function () { return
|
|
40410
|
+
get: function () { return chunkUDMII47W_cjs.useConnectedWorkflowScopeSource; }
|
|
40411
40411
|
});
|
|
40412
40412
|
Object.defineProperty(exports, "useConnectedWorkspaceRole", {
|
|
40413
40413
|
enumerable: true,
|
|
40414
|
-
get: function () { return
|
|
40414
|
+
get: function () { return chunkUDMII47W_cjs.useConnectedWorkspaceRole; }
|
|
40415
40415
|
});
|
|
40416
40416
|
Object.defineProperty(exports, "useDocxCommentTarget", {
|
|
40417
40417
|
enumerable: true,
|
|
40418
|
-
get: function () { return
|
|
40418
|
+
get: function () { return chunkUDMII47W_cjs.useDocxCommentTarget; }
|
|
40419
40419
|
});
|
|
40420
40420
|
Object.defineProperty(exports, "useNativeDocxSupport", {
|
|
40421
40421
|
enumerable: true,
|
|
40422
|
-
get: function () { return
|
|
40422
|
+
get: function () { return chunkUDMII47W_cjs.useNativeDocxSupport; }
|
|
40423
40423
|
});
|
|
40424
40424
|
Object.defineProperty(exports, "useOpenWorkflow", {
|
|
40425
40425
|
enumerable: true,
|
|
@@ -40499,7 +40499,7 @@ Object.defineProperty(exports, "useDocumentWorkspace", {
|
|
|
40499
40499
|
});
|
|
40500
40500
|
Object.defineProperty(exports, "useMeetingThreadMessages", {
|
|
40501
40501
|
enumerable: true,
|
|
40502
|
-
get: function () { return
|
|
40502
|
+
get: function () { return chunk33PWCTND_cjs.useMeetingThreadMessages; }
|
|
40503
40503
|
});
|
|
40504
40504
|
Object.defineProperty(exports, "isListedDocument", {
|
|
40505
40505
|
enumerable: true,
|