@lightdash/common 0.1930.3 → 0.1931.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/dist/cjs/authorization/parseScopes.d.ts +8 -0
  2. package/dist/cjs/authorization/parseScopes.d.ts.map +1 -0
  3. package/dist/cjs/authorization/parseScopes.js +27 -0
  4. package/dist/cjs/authorization/parseScopes.js.map +1 -0
  5. package/dist/cjs/authorization/parseScopes.test.d.ts +2 -0
  6. package/dist/cjs/authorization/parseScopes.test.d.ts.map +1 -0
  7. package/dist/cjs/authorization/parseScopes.test.js +109 -0
  8. package/dist/cjs/authorization/parseScopes.test.js.map +1 -0
  9. package/dist/cjs/authorization/scopeAbilityBuilder.d.ts +23 -0
  10. package/dist/cjs/authorization/scopeAbilityBuilder.d.ts.map +1 -0
  11. package/dist/cjs/authorization/scopeAbilityBuilder.js +58 -0
  12. package/dist/cjs/authorization/scopeAbilityBuilder.js.map +1 -0
  13. package/dist/cjs/authorization/scopeAbilityBuilder.test.d.ts +2 -0
  14. package/dist/cjs/authorization/scopeAbilityBuilder.test.d.ts.map +1 -0
  15. package/dist/cjs/authorization/scopeAbilityBuilder.test.js +955 -0
  16. package/dist/cjs/authorization/scopeAbilityBuilder.test.js.map +1 -0
  17. package/dist/cjs/authorization/scopes.d.ts +8 -0
  18. package/dist/cjs/authorization/scopes.d.ts.map +1 -0
  19. package/dist/cjs/authorization/scopes.js +633 -0
  20. package/dist/cjs/authorization/scopes.js.map +1 -0
  21. package/dist/cjs/types/scopes.d.ts +30 -3
  22. package/dist/cjs/types/scopes.d.ts.map +1 -1
  23. package/dist/cjs/types/scopes.js.map +1 -1
  24. package/dist/esm/authorization/parseScopes.d.ts +8 -0
  25. package/dist/esm/authorization/parseScopes.d.ts.map +1 -0
  26. package/dist/esm/authorization/parseScopes.js +22 -0
  27. package/dist/esm/authorization/parseScopes.js.map +1 -0
  28. package/dist/esm/authorization/parseScopes.test.d.ts +2 -0
  29. package/dist/esm/authorization/parseScopes.test.d.ts.map +1 -0
  30. package/dist/esm/authorization/parseScopes.test.js +107 -0
  31. package/dist/esm/authorization/parseScopes.test.js.map +1 -0
  32. package/dist/esm/authorization/scopeAbilityBuilder.d.ts +23 -0
  33. package/dist/esm/authorization/scopeAbilityBuilder.d.ts.map +1 -0
  34. package/dist/esm/authorization/scopeAbilityBuilder.js +54 -0
  35. package/dist/esm/authorization/scopeAbilityBuilder.js.map +1 -0
  36. package/dist/esm/authorization/scopeAbilityBuilder.test.d.ts +2 -0
  37. package/dist/esm/authorization/scopeAbilityBuilder.test.d.ts.map +1 -0
  38. package/dist/esm/authorization/scopeAbilityBuilder.test.js +953 -0
  39. package/dist/esm/authorization/scopeAbilityBuilder.test.js.map +1 -0
  40. package/dist/esm/authorization/scopes.d.ts +8 -0
  41. package/dist/esm/authorization/scopes.d.ts.map +1 -0
  42. package/dist/esm/authorization/scopes.js +628 -0
  43. package/dist/esm/authorization/scopes.js.map +1 -0
  44. package/dist/esm/types/scopes.d.ts +30 -3
  45. package/dist/esm/types/scopes.d.ts.map +1 -1
  46. package/dist/esm/types/scopes.js.map +1 -1
  47. package/dist/tsconfig.types.tsbuildinfo +1 -1
  48. package/dist/types/authorization/parseScopes.d.ts +8 -0
  49. package/dist/types/authorization/parseScopes.d.ts.map +1 -0
  50. package/dist/types/authorization/parseScopes.test.d.ts +2 -0
  51. package/dist/types/authorization/parseScopes.test.d.ts.map +1 -0
  52. package/dist/types/authorization/scopeAbilityBuilder.d.ts +23 -0
  53. package/dist/types/authorization/scopeAbilityBuilder.d.ts.map +1 -0
  54. package/dist/types/authorization/scopeAbilityBuilder.test.d.ts +2 -0
  55. package/dist/types/authorization/scopeAbilityBuilder.test.d.ts.map +1 -0
  56. package/dist/types/authorization/scopes.d.ts +8 -0
  57. package/dist/types/authorization/scopes.d.ts.map +1 -0
  58. package/dist/types/types/scopes.d.ts +30 -3
  59. package/dist/types/types/scopes.d.ts.map +1 -1
  60. package/package.json +1 -1
  61. package/dist/cjs/authorization/scopes/index.d.ts +0 -5
  62. package/dist/cjs/authorization/scopes/index.d.ts.map +0 -1
  63. package/dist/cjs/authorization/scopes/index.js +0 -372
  64. package/dist/cjs/authorization/scopes/index.js.map +0 -1
  65. package/dist/esm/authorization/scopes/index.d.ts +0 -5
  66. package/dist/esm/authorization/scopes/index.d.ts.map +0 -1
  67. package/dist/esm/authorization/scopes/index.js +0 -368
  68. package/dist/esm/authorization/scopes/index.js.map +0 -1
  69. package/dist/types/authorization/scopes/index.d.ts +0 -5
  70. package/dist/types/authorization/scopes/index.d.ts.map +0 -1
@@ -0,0 +1,628 @@
1
+ import { ProjectType } from '../types/projects';
2
+ import { ScopeGroup, } from '../types/scopes';
3
+ import { SpaceMemberRole } from '../types/space';
4
+ const addAccessCondition = (context, role) => ({
5
+ $elemMatch: {
6
+ userUuid: context.userUuid || false,
7
+ ...(role ? { role } : {}),
8
+ },
9
+ });
10
+ const addDefaultOrgIdCondition = (context) => [
11
+ {
12
+ organizationUuid: context.organizationUuid,
13
+ },
14
+ ];
15
+ const scopes = [
16
+ {
17
+ name: 'view:Dashboard',
18
+ description: 'View dashboards',
19
+ isEnterprise: false,
20
+ group: ScopeGroup.CONTENT,
21
+ getConditions: (context) => {
22
+ // Public dashboards
23
+ const conditions = [
24
+ {
25
+ organizationUuid: context.organizationUuid,
26
+ isPrivate: false,
27
+ },
28
+ ];
29
+ conditions.push({
30
+ organizationUuid: context.organizationUuid,
31
+ access: addAccessCondition(context),
32
+ });
33
+ return conditions;
34
+ },
35
+ },
36
+ {
37
+ name: 'manage:Dashboard',
38
+ description: 'Create, edit, and delete dashboards',
39
+ isEnterprise: false,
40
+ group: ScopeGroup.CONTENT,
41
+ getConditions: (context) => {
42
+ const { organizationUuid } = context;
43
+ if (context.scopes.has('manage:Organization')) {
44
+ return [{ organizationUuid }];
45
+ }
46
+ return [
47
+ {
48
+ organizationUuid,
49
+ access: addAccessCondition(context, SpaceMemberRole.EDITOR),
50
+ },
51
+ {
52
+ organizationUuid,
53
+ access: addAccessCondition(context, SpaceMemberRole.ADMIN),
54
+ },
55
+ ];
56
+ },
57
+ },
58
+ {
59
+ name: 'view:SavedChart',
60
+ description: 'View saved charts',
61
+ isEnterprise: false,
62
+ group: ScopeGroup.CONTENT,
63
+ getConditions: (context) => {
64
+ // Public saved charts
65
+ const conditions = [
66
+ {
67
+ organizationUuid: context.organizationUuid,
68
+ projectUuid: context.projectUuid,
69
+ isPrivate: false,
70
+ },
71
+ ];
72
+ // User's accessible saved charts via space access
73
+ conditions.push({
74
+ organizationUuid: context.organizationUuid,
75
+ projectUuid: context.projectUuid,
76
+ access: addAccessCondition(context),
77
+ });
78
+ return conditions;
79
+ },
80
+ },
81
+ {
82
+ name: 'manage:SavedChart',
83
+ description: 'Create, edit, and delete saved charts',
84
+ isEnterprise: false,
85
+ group: ScopeGroup.CONTENT,
86
+ getConditions: (context) => {
87
+ const { organizationUuid } = context;
88
+ if (context.scopes.has('manage:Organization')) {
89
+ return [{ organizationUuid }];
90
+ }
91
+ return [
92
+ {
93
+ organizationUuid,
94
+ access: addAccessCondition(context, SpaceMemberRole.EDITOR),
95
+ },
96
+ {
97
+ organizationUuid,
98
+ access: addAccessCondition(context, SpaceMemberRole.ADMIN),
99
+ },
100
+ ];
101
+ },
102
+ },
103
+ {
104
+ name: 'view:Space',
105
+ description: 'View spaces',
106
+ isEnterprise: false,
107
+ group: ScopeGroup.CONTENT,
108
+ getConditions: (context) => {
109
+ // Public spaces
110
+ const conditions = [
111
+ {
112
+ organizationUuid: context.organizationUuid,
113
+ projectUuid: context.projectUuid,
114
+ isPrivate: false,
115
+ },
116
+ ];
117
+ // User's accessible spaces
118
+ conditions.push({
119
+ organizationUuid: context.organizationUuid,
120
+ projectUuid: context.projectUuid,
121
+ access: addAccessCondition(context),
122
+ });
123
+ return conditions;
124
+ },
125
+ },
126
+ {
127
+ name: 'create:Space',
128
+ description: 'Create new spaces',
129
+ isEnterprise: false,
130
+ group: ScopeGroup.CONTENT,
131
+ getConditions: addDefaultOrgIdCondition,
132
+ },
133
+ {
134
+ name: 'manage:Space',
135
+ description: 'Edit and delete spaces',
136
+ isEnterprise: false,
137
+ group: ScopeGroup.CONTENT,
138
+ getConditions: (context) => {
139
+ const { organizationUuid } = context;
140
+ // Manage all spaces where user is admin of the organization
141
+ if (context.scopes.has('manage:Organization')) {
142
+ return [{ organizationUuid }];
143
+ }
144
+ const conditions = [
145
+ {
146
+ organizationUuid,
147
+ access: addAccessCondition(context, SpaceMemberRole.ADMIN),
148
+ },
149
+ ];
150
+ if (context.scopes.has('manage:Project')) {
151
+ // Manage public spaces where user is admin of the project
152
+ conditions.push({
153
+ organizationUuid: context.organizationUuid,
154
+ isPrivate: false,
155
+ });
156
+ }
157
+ return conditions;
158
+ },
159
+ },
160
+ {
161
+ name: 'view:DashboardComments',
162
+ description: 'View dashboard comments',
163
+ isEnterprise: false,
164
+ group: ScopeGroup.CONTENT,
165
+ getConditions: addDefaultOrgIdCondition,
166
+ },
167
+ {
168
+ name: 'create:DashboardComments',
169
+ description: 'Create dashboard comments',
170
+ isEnterprise: false,
171
+ group: ScopeGroup.CONTENT,
172
+ getConditions: addDefaultOrgIdCondition,
173
+ },
174
+ {
175
+ name: 'manage:DashboardComments',
176
+ description: 'Edit and delete dashboard comments',
177
+ isEnterprise: false,
178
+ group: ScopeGroup.CONTENT,
179
+ getConditions: addDefaultOrgIdCondition,
180
+ },
181
+ {
182
+ name: 'view:Tags',
183
+ description: 'View tags',
184
+ isEnterprise: false,
185
+ group: ScopeGroup.CONTENT,
186
+ getConditions: (context) => [
187
+ {
188
+ organizationUuid: context.organizationUuid,
189
+ },
190
+ ],
191
+ },
192
+ {
193
+ name: 'manage:Tags',
194
+ description: 'Create, edit, and delete tags',
195
+ isEnterprise: false,
196
+ group: ScopeGroup.CONTENT,
197
+ getConditions: addDefaultOrgIdCondition,
198
+ },
199
+ {
200
+ name: 'view:PinnedItems',
201
+ description: 'View pinned items',
202
+ isEnterprise: false,
203
+ group: ScopeGroup.CONTENT,
204
+ getConditions: addDefaultOrgIdCondition,
205
+ },
206
+ {
207
+ name: 'manage:PinnedItems',
208
+ description: 'Pin and unpin items',
209
+ isEnterprise: false,
210
+ group: ScopeGroup.CONTENT,
211
+ getConditions: addDefaultOrgIdCondition,
212
+ },
213
+ {
214
+ name: 'promote:SavedChart',
215
+ description: 'Promote saved charts to spaces',
216
+ isEnterprise: false,
217
+ group: ScopeGroup.CONTENT,
218
+ getConditions: (context) => {
219
+ if (context.scopes.has('manage:Organization')) {
220
+ return [
221
+ {
222
+ organizationUuid: context.organizationUuid,
223
+ },
224
+ ];
225
+ }
226
+ return [
227
+ {
228
+ organizationUuid: context.organizationUuid,
229
+ projectUuid: context.projectUuid,
230
+ access: addAccessCondition(context, SpaceMemberRole.EDITOR),
231
+ },
232
+ ];
233
+ },
234
+ },
235
+ {
236
+ name: 'promote:Dashboard',
237
+ description: 'Promote dashboards to spaces',
238
+ isEnterprise: false,
239
+ group: ScopeGroup.CONTENT,
240
+ getConditions: (context) => {
241
+ if (context.scopes.has('manage:Organization')) {
242
+ return [
243
+ {
244
+ organizationUuid: context.organizationUuid,
245
+ },
246
+ ];
247
+ }
248
+ return [
249
+ {
250
+ organizationUuid: context.organizationUuid,
251
+ projectUuid: context.projectUuid,
252
+ access: addAccessCondition(context, SpaceMemberRole.EDITOR),
253
+ },
254
+ ];
255
+ },
256
+ },
257
+ // Project Management Scopes
258
+ {
259
+ name: 'view:Project',
260
+ description: 'View project details',
261
+ isEnterprise: false,
262
+ group: ScopeGroup.PROJECT_MANAGEMENT,
263
+ getConditions: addDefaultOrgIdCondition,
264
+ },
265
+ {
266
+ name: 'create:Project',
267
+ description: 'Create new projects',
268
+ isEnterprise: false,
269
+ group: ScopeGroup.PROJECT_MANAGEMENT,
270
+ getConditions: (context) =>
271
+ // Allow creating preview projects by default
272
+ [
273
+ {
274
+ organizationUuid: context.organizationUuid,
275
+ type: ProjectType.PREVIEW,
276
+ },
277
+ ],
278
+ },
279
+ {
280
+ name: 'update:Project',
281
+ description: 'Update project settings',
282
+ isEnterprise: false,
283
+ group: ScopeGroup.PROJECT_MANAGEMENT,
284
+ getConditions: addDefaultOrgIdCondition,
285
+ },
286
+ {
287
+ name: 'delete:Project',
288
+ description: 'Delete projects',
289
+ isEnterprise: false,
290
+ group: ScopeGroup.PROJECT_MANAGEMENT,
291
+ getConditions: (context) => {
292
+ if (context.projectUuid) {
293
+ return [
294
+ {
295
+ projectUuid: context.projectUuid,
296
+ },
297
+ ];
298
+ }
299
+ // Can delete preview projects in organization
300
+ return [
301
+ {
302
+ organizationUuid: context.organizationUuid,
303
+ type: ProjectType.PREVIEW,
304
+ },
305
+ ];
306
+ },
307
+ },
308
+ {
309
+ name: 'manage:Project',
310
+ description: 'Full project management permissions',
311
+ isEnterprise: false,
312
+ group: ScopeGroup.PROJECT_MANAGEMENT,
313
+ getConditions: addDefaultOrgIdCondition,
314
+ },
315
+ {
316
+ name: 'manage:CompileProject',
317
+ description: 'Compile and refresh dbt projects',
318
+ isEnterprise: false,
319
+ group: ScopeGroup.PROJECT_MANAGEMENT,
320
+ getConditions: addDefaultOrgIdCondition,
321
+ },
322
+ {
323
+ name: 'manage:Validation',
324
+ description: 'Manage data validation rules',
325
+ isEnterprise: false,
326
+ group: ScopeGroup.PROJECT_MANAGEMENT,
327
+ getConditions: addDefaultOrgIdCondition,
328
+ },
329
+ {
330
+ name: 'create:ScheduledDeliveries',
331
+ description: 'Create scheduled deliveries',
332
+ isEnterprise: false,
333
+ group: ScopeGroup.PROJECT_MANAGEMENT,
334
+ getConditions: addDefaultOrgIdCondition,
335
+ },
336
+ {
337
+ name: 'manage:ScheduledDeliveries',
338
+ description: 'Manage scheduled deliveries',
339
+ isEnterprise: false,
340
+ group: ScopeGroup.PROJECT_MANAGEMENT,
341
+ getConditions: addDefaultOrgIdCondition,
342
+ },
343
+ {
344
+ name: 'view:Analytics',
345
+ description: 'View usage analytics',
346
+ isEnterprise: false,
347
+ group: ScopeGroup.PROJECT_MANAGEMENT,
348
+ getConditions: addDefaultOrgIdCondition,
349
+ },
350
+ {
351
+ name: 'create:Job',
352
+ description: 'Create background jobs',
353
+ isEnterprise: false,
354
+ group: ScopeGroup.PROJECT_MANAGEMENT,
355
+ getConditions: () => [{}],
356
+ },
357
+ {
358
+ name: 'view:Job',
359
+ description: 'View job details',
360
+ isEnterprise: false,
361
+ group: ScopeGroup.PROJECT_MANAGEMENT,
362
+ getConditions: (context) => [{ userUuid: context.userUuid || false }],
363
+ },
364
+ {
365
+ name: 'manage:Job',
366
+ description: 'Manage background jobs',
367
+ isEnterprise: false,
368
+ group: ScopeGroup.PROJECT_MANAGEMENT,
369
+ getConditions: () => [{}],
370
+ },
371
+ {
372
+ name: 'view:JobStatus',
373
+ description: 'View job status',
374
+ isEnterprise: false,
375
+ group: ScopeGroup.PROJECT_MANAGEMENT,
376
+ getConditions: (context) => {
377
+ if (context.scopes.has('manage:Organization')) {
378
+ return addDefaultOrgIdCondition(context);
379
+ }
380
+ return [
381
+ {
382
+ createdByUserUuid: context.userUuid || false,
383
+ },
384
+ ];
385
+ },
386
+ },
387
+ // Organization Management Scopes
388
+ {
389
+ name: 'view:Organization',
390
+ description: 'View organization details',
391
+ isEnterprise: false,
392
+ group: ScopeGroup.ORGANIZATION_MANAGEMENT,
393
+ getConditions: addDefaultOrgIdCondition,
394
+ },
395
+ {
396
+ name: 'manage:Organization',
397
+ description: 'Manage organization settings',
398
+ isEnterprise: false,
399
+ group: ScopeGroup.ORGANIZATION_MANAGEMENT,
400
+ getConditions: addDefaultOrgIdCondition,
401
+ },
402
+ {
403
+ name: 'view:OrganizationMemberProfile',
404
+ description: 'View organization member profiles',
405
+ isEnterprise: false,
406
+ group: ScopeGroup.ORGANIZATION_MANAGEMENT,
407
+ getConditions: addDefaultOrgIdCondition,
408
+ },
409
+ {
410
+ name: 'manage:OrganizationMemberProfile',
411
+ description: 'Manage organization member profiles and roles',
412
+ isEnterprise: false,
413
+ group: ScopeGroup.ORGANIZATION_MANAGEMENT,
414
+ getConditions: addDefaultOrgIdCondition,
415
+ },
416
+ {
417
+ name: 'manage:InviteLink',
418
+ description: 'Create and manage invite links',
419
+ isEnterprise: false,
420
+ group: ScopeGroup.ORGANIZATION_MANAGEMENT,
421
+ getConditions: addDefaultOrgIdCondition,
422
+ },
423
+ {
424
+ name: 'manage:Group',
425
+ description: 'Manage user groups',
426
+ isEnterprise: false,
427
+ group: ScopeGroup.ORGANIZATION_MANAGEMENT,
428
+ getConditions: addDefaultOrgIdCondition,
429
+ },
430
+ {
431
+ name: 'manage:ContentAsCode',
432
+ description: 'Manage content as code features',
433
+ isEnterprise: true,
434
+ group: ScopeGroup.ORGANIZATION_MANAGEMENT,
435
+ getConditions: addDefaultOrgIdCondition,
436
+ },
437
+ {
438
+ name: 'manage:PersonalAccessToken',
439
+ description: 'Create and manage personal access tokens',
440
+ isEnterprise: true,
441
+ group: ScopeGroup.ORGANIZATION_MANAGEMENT,
442
+ getConditions: addDefaultOrgIdCondition,
443
+ },
444
+ // Data Scopes
445
+ {
446
+ name: 'view:UnderlyingData',
447
+ description: 'View underlying data in charts',
448
+ isEnterprise: false,
449
+ group: ScopeGroup.DATA,
450
+ getConditions: addDefaultOrgIdCondition,
451
+ },
452
+ {
453
+ name: 'view:SemanticViewer',
454
+ description: 'View data in semantic viewer',
455
+ isEnterprise: false,
456
+ group: ScopeGroup.DATA,
457
+ getConditions: addDefaultOrgIdCondition,
458
+ },
459
+ {
460
+ name: 'manage:SemanticViewer',
461
+ description: 'Create and edit semantic viewer queries',
462
+ isEnterprise: false,
463
+ group: ScopeGroup.DATA,
464
+ getConditions: (context) => {
465
+ if (context.scopes.has('manage:Organization')) {
466
+ return addDefaultOrgIdCondition(context);
467
+ }
468
+ return [
469
+ {
470
+ organizationUuid: context.organizationUuid,
471
+ access: addAccessCondition(context, SpaceMemberRole.EDITOR),
472
+ },
473
+ ];
474
+ },
475
+ },
476
+ {
477
+ name: 'manage:Explore',
478
+ description: 'Explore and query data',
479
+ isEnterprise: false,
480
+ group: ScopeGroup.DATA,
481
+ getConditions: addDefaultOrgIdCondition,
482
+ },
483
+ {
484
+ name: 'manage:SqlRunner',
485
+ description: 'Run SQL queries directly',
486
+ isEnterprise: false,
487
+ group: ScopeGroup.DATA,
488
+ getConditions: addDefaultOrgIdCondition,
489
+ },
490
+ {
491
+ name: 'manage:CustomSql',
492
+ description: 'Create custom SQL queries',
493
+ isEnterprise: false,
494
+ group: ScopeGroup.DATA,
495
+ getConditions: addDefaultOrgIdCondition,
496
+ },
497
+ {
498
+ name: 'manage:VirtualView',
499
+ description: 'Create and manage virtual views',
500
+ isEnterprise: false,
501
+ group: ScopeGroup.DATA,
502
+ getConditions: addDefaultOrgIdCondition,
503
+ },
504
+ {
505
+ name: 'manage:ExportCsv',
506
+ description: 'Export data to CSV',
507
+ isEnterprise: false,
508
+ group: ScopeGroup.DATA,
509
+ getConditions: addDefaultOrgIdCondition,
510
+ },
511
+ {
512
+ name: 'manage:ChangeCsvResults',
513
+ description: 'Modify CSV export results',
514
+ isEnterprise: false,
515
+ group: ScopeGroup.DATA,
516
+ getConditions: addDefaultOrgIdCondition,
517
+ },
518
+ // Sharing Scopes
519
+ {
520
+ name: 'export:DashboardCsv',
521
+ description: 'Can export dashboards and charts to CSV',
522
+ isEnterprise: false,
523
+ group: ScopeGroup.SHARING,
524
+ getConditions: () => [{}],
525
+ },
526
+ {
527
+ name: 'export:DashboardImage',
528
+ description: 'Can export dashboards and charts to images',
529
+ isEnterprise: false,
530
+ group: ScopeGroup.SHARING,
531
+ getConditions: () => [{}],
532
+ },
533
+ {
534
+ name: 'export:DashboardPdf',
535
+ description: 'Can export dashboards and charts to PDF',
536
+ isEnterprise: false,
537
+ group: ScopeGroup.SHARING,
538
+ getConditions: () => [{}],
539
+ },
540
+ // AI Agent
541
+ {
542
+ name: 'view:AiAgent',
543
+ description: 'View AI agent features',
544
+ isEnterprise: true,
545
+ group: ScopeGroup.AI,
546
+ getConditions: addDefaultOrgIdCondition,
547
+ },
548
+ {
549
+ name: 'manage:AiAgent',
550
+ description: 'Configure AI agent settings',
551
+ isEnterprise: true,
552
+ group: ScopeGroup.AI,
553
+ getConditions: addDefaultOrgIdCondition,
554
+ },
555
+ {
556
+ name: 'view:AiAgentThread',
557
+ description: 'View AI agent conversation threads',
558
+ isEnterprise: true,
559
+ group: ScopeGroup.AI,
560
+ getConditions: (context) =>
561
+ // View user's own AI agent threads
562
+ [
563
+ {
564
+ organizationUuid: context.organizationUuid,
565
+ projectUuid: context.projectUuid,
566
+ ...(context.userUuid && { userUuid: context.userUuid }),
567
+ },
568
+ ],
569
+ },
570
+ {
571
+ name: 'create:AiAgentThread',
572
+ description: 'Start new AI agent conversations',
573
+ isEnterprise: true,
574
+ group: ScopeGroup.AI,
575
+ getConditions: addDefaultOrgIdCondition,
576
+ },
577
+ {
578
+ name: 'manage:AiAgentThread',
579
+ description: 'Manage AI agent conversation threads',
580
+ isEnterprise: true,
581
+ group: ScopeGroup.AI,
582
+ getConditions: (context) => {
583
+ if (context.scopes.has('manage:Organization')) {
584
+ return addDefaultOrgIdCondition(context);
585
+ }
586
+ // Manage user's own AI agent threads
587
+ return [{ userUuid: context.userUuid || false }];
588
+ },
589
+ },
590
+ // Spotlight Scopes
591
+ {
592
+ name: 'manage:SpotlightTableConfig',
593
+ description: 'Configure spotlight table settings',
594
+ isEnterprise: true,
595
+ group: ScopeGroup.SPOTLIGHT,
596
+ getConditions: addDefaultOrgIdCondition,
597
+ },
598
+ {
599
+ name: 'view:SpotlightTableConfig',
600
+ description: 'View spotlight table configuration',
601
+ isEnterprise: true,
602
+ group: ScopeGroup.SPOTLIGHT,
603
+ getConditions: addDefaultOrgIdCondition,
604
+ },
605
+ {
606
+ name: 'view:MetricsTree',
607
+ description: 'View metrics tree',
608
+ isEnterprise: true,
609
+ group: ScopeGroup.SPOTLIGHT,
610
+ getConditions: addDefaultOrgIdCondition,
611
+ },
612
+ {
613
+ name: 'manage:MetricsTree',
614
+ description: 'Manage metrics tree configuration',
615
+ isEnterprise: true,
616
+ group: ScopeGroup.SPOTLIGHT,
617
+ getConditions: addDefaultOrgIdCondition,
618
+ },
619
+ ];
620
+ const getNonEnterpriseScopes = () => scopes.filter((scope) => !scope.isEnterprise);
621
+ // We will be using this
622
+ // eslint-disable-next-line import/export
623
+ export const getScopes = ({ isEnterprise = false } = {}) => isEnterprise ? scopes : getNonEnterpriseScopes();
624
+ export const getAllScopeMap = ({ isEnterprise = false } = {}) => getScopes({ isEnterprise }).reduce((acc, scope) => {
625
+ acc[scope.name] = scope;
626
+ return acc;
627
+ }, Object.create({}));
628
+ //# sourceMappingURL=scopes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scopes.js","sourceRoot":"","sources":["../../../src/authorization/scopes.ts"],"names":[],"mappings":"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"}