@lessly/sdk-app 61.0.1 → 61.1.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 (41) hide show
  1. package/dist/_types/gen/client.gen.d.ts +29 -1
  2. package/dist/_types/gen/manifest.gen.d.ts +1 -1
  3. package/dist/_types/gen/playground/connect.gen.d.ts +3 -0
  4. package/dist/_types/gen/playground/index.d.ts +3 -0
  5. package/dist/_types/gen/playground/queryOptions.gen.d.ts +50 -0
  6. package/dist/_types/gen/types.gen.d.ts +192 -0
  7. package/dist/_types/index.d.ts +2 -1
  8. package/dist/_types/react/index.d.ts +33 -0
  9. package/dist/_types/runtime/access.d.ts +40 -0
  10. package/dist/_types/runtime/createLesslyApp.d.ts +4 -0
  11. package/dist/_types/runtime/errors.d.ts +11 -0
  12. package/dist/_types/runtime/permission-match.d.ts +62 -0
  13. package/dist/chunk-T4K7L6V5.js +10218 -0
  14. package/dist/chunk-T4K7L6V5.js.map +1 -0
  15. package/dist/index.cjs +868 -37
  16. package/dist/index.cjs.map +1 -1
  17. package/dist/index.js +699 -10073
  18. package/dist/index.js.map +1 -1
  19. package/dist/playground/index.cjs +81 -0
  20. package/dist/playground/index.cjs.map +1 -0
  21. package/dist/playground/index.d.cts +1 -0
  22. package/dist/playground/index.d.ts +1 -0
  23. package/dist/playground/index.js +58 -0
  24. package/dist/playground/index.js.map +1 -0
  25. package/dist/react/index.cjs +29 -0
  26. package/dist/react/index.cjs.map +1 -0
  27. package/dist/react/index.d.cts +1 -0
  28. package/dist/react/index.d.ts +1 -0
  29. package/dist/react/index.js +26 -0
  30. package/dist/react/index.js.map +1 -0
  31. package/docs/README.md +1 -0
  32. package/docs/recipes/access.md +177 -0
  33. package/docs/rules.md +33 -0
  34. package/package.json +35 -2
  35. package/src/gen/bindings.gen.ts +174 -38
  36. package/src/gen/client.gen.ts +52 -0
  37. package/src/gen/manifest.gen.ts +50 -38
  38. package/src/gen/playground/connect.gen.ts +9 -0
  39. package/src/gen/playground/index.ts +4 -0
  40. package/src/gen/playground/queryOptions.gen.ts +86 -0
  41. package/src/gen/types.gen.ts +227 -0
package/dist/index.cjs CHANGED
@@ -1,16 +1,24 @@
1
1
  'use strict';
2
2
 
3
3
  // src/runtime/errors.ts
4
+ var ACCESS_DENIED_CODES = /* @__PURE__ */ new Set([
5
+ "role_denied",
6
+ "operation_uncatalogued",
7
+ "no_tool_permission"
8
+ ]);
4
9
  var LesslyApiError = class extends Error {
5
10
  status;
6
11
  code;
7
12
  body;
13
+ /** True iff this is the gateway refusing the call over the caller's access. See ACCESS_DENIED_CODES. */
14
+ accessDenied;
8
15
  constructor(status, code, message, body) {
9
16
  super(message);
10
17
  this.name = "LesslyApiError";
11
18
  this.status = status;
12
19
  this.code = code;
13
20
  this.body = body;
21
+ this.accessDenied = status === 403 && code !== null && ACCESS_DENIED_CODES.has(code);
14
22
  }
15
23
  };
16
24
  function parseErrorBody(body, status) {
@@ -19,6 +27,12 @@ function parseErrorBody(body, status) {
19
27
  const message = b?.error?.message ?? b?.message ?? `Request failed with status ${status}`;
20
28
  return new LesslyApiError(status, code, message, body);
21
29
  }
30
+ function isAccessDenied(err) {
31
+ if (err instanceof LesslyApiError) return err.accessDenied;
32
+ if (typeof err !== "object" || err === null) return false;
33
+ const { status, code } = err;
34
+ return status === 403 && typeof code === "string" && ACCESS_DENIED_CODES.has(code);
35
+ }
22
36
 
23
37
  // src/runtime/csrf.ts
24
38
  var CSRF_COOKIE = "lessly_csrf";
@@ -673,7 +687,7 @@ var bindings = {
673
687
  "readOnly": false
674
688
  },
675
689
  "restore": {
676
- "level": "write",
690
+ "level": "admin",
677
691
  "method": "POST",
678
692
  "operationKey": "brain_backup_restore",
679
693
  "params": [
@@ -1270,7 +1284,7 @@ var bindings = {
1270
1284
  "readOnly": false
1271
1285
  },
1272
1286
  "delete": {
1273
- "level": "admin",
1287
+ "level": "write",
1274
1288
  "method": "DELETE",
1275
1289
  "operationKey": "brain_memory_delete",
1276
1290
  "params": [
@@ -1374,7 +1388,7 @@ var bindings = {
1374
1388
  },
1375
1389
  "product-shared-memory": {
1376
1390
  "reset": {
1377
- "level": "write",
1391
+ "level": "admin",
1378
1392
  "method": "POST",
1379
1393
  "operationKey": "brain_product_shared_memory_reset",
1380
1394
  "params": [
@@ -1429,7 +1443,7 @@ var bindings = {
1429
1443
  "consent": {
1430
1444
  "config-cookie-domain": {
1431
1445
  "upsert": {
1432
- "level": "write",
1446
+ "level": "admin",
1433
1447
  "method": "PATCH",
1434
1448
  "operationKey": "consent_config_cookie_domain_upsert",
1435
1449
  "params": [
@@ -1680,7 +1694,7 @@ var bindings = {
1680
1694
  },
1681
1695
  "records": {
1682
1696
  "export": {
1683
- "level": "read",
1697
+ "level": "admin",
1684
1698
  "method": "POST",
1685
1699
  "operationKey": "consent_records_export",
1686
1700
  "params": [
@@ -2748,7 +2762,7 @@ var bindings = {
2748
2762
  "readOnly": false
2749
2763
  },
2750
2764
  "restore": {
2751
- "level": "write",
2765
+ "level": "admin",
2752
2766
  "method": "POST",
2753
2767
  "operationKey": "deployment_cloud_sql_instance_restore",
2754
2768
  "params": [
@@ -2827,7 +2841,7 @@ var bindings = {
2827
2841
  },
2828
2842
  "domain": {
2829
2843
  "add": {
2830
- "level": "write",
2844
+ "level": "admin",
2831
2845
  "method": "POST",
2832
2846
  "operationKey": "deployment_domain_add",
2833
2847
  "params": [
@@ -2934,7 +2948,7 @@ var bindings = {
2934
2948
  },
2935
2949
  "domain-redirect": {
2936
2950
  "www": {
2937
- "level": "write",
2951
+ "level": "admin",
2938
2952
  "method": "PATCH",
2939
2953
  "operationKey": "deployment_domain_redirect_www",
2940
2954
  "params": [
@@ -2953,7 +2967,7 @@ var bindings = {
2953
2967
  },
2954
2968
  "domain-routes": {
2955
2969
  "add": {
2956
- "level": "write",
2970
+ "level": "admin",
2957
2971
  "method": "POST",
2958
2972
  "operationKey": "deployment_domain_routes_add",
2959
2973
  "params": [
@@ -3012,7 +3026,7 @@ var bindings = {
3012
3026
  "readOnly": false
3013
3027
  },
3014
3028
  "update": {
3015
- "level": "write",
3029
+ "level": "admin",
3016
3030
  "method": "PATCH",
3017
3031
  "operationKey": "deployment_domain_routes_update",
3018
3032
  "params": [
@@ -3413,7 +3427,7 @@ var bindings = {
3413
3427
  "readOnly": false
3414
3428
  },
3415
3429
  "restore": {
3416
- "level": "write",
3430
+ "level": "admin",
3417
3431
  "method": "POST",
3418
3432
  "operationKey": "deployment_managed_service_restore",
3419
3433
  "params": [
@@ -3574,7 +3588,7 @@ var bindings = {
3574
3588
  "readOnly": true
3575
3589
  },
3576
3590
  "set": {
3577
- "level": "write",
3591
+ "level": "admin",
3578
3592
  "method": "PUT",
3579
3593
  "operationKey": "deployment_preview_policy_set",
3580
3594
  "params": [
@@ -3683,7 +3697,7 @@ var bindings = {
3683
3697
  "readOnly": false
3684
3698
  },
3685
3699
  "exec": {
3686
- "level": "write",
3700
+ "level": "admin",
3687
3701
  "method": "POST",
3688
3702
  "operationKey": "deployment_service_exec",
3689
3703
  "params": [
@@ -3942,7 +3956,7 @@ var bindings = {
3942
3956
  "readOnly": true
3943
3957
  },
3944
3958
  "register": {
3945
- "level": "write",
3959
+ "level": "admin",
3946
3960
  "method": "POST",
3947
3961
  "operationKey": "deployment_ssh_key_register",
3948
3962
  "params": [
@@ -4074,7 +4088,7 @@ var bindings = {
4074
4088
  "readOnly": false
4075
4089
  },
4076
4090
  "product": {
4077
- "level": "write",
4091
+ "level": "admin",
4078
4092
  "method": "PUT",
4079
4093
  "operationKey": "deployment_variable_set_product",
4080
4094
  "params": [
@@ -4114,7 +4128,7 @@ var bindings = {
4114
4128
  "readOnly": false
4115
4129
  },
4116
4130
  "product": {
4117
- "level": "write",
4131
+ "level": "admin",
4118
4132
  "method": "DELETE",
4119
4133
  "operationKey": "deployment_variable_unset_product",
4120
4134
  "params": [
@@ -4286,7 +4300,7 @@ var bindings = {
4286
4300
  "mail": {
4287
4301
  "apikey": {
4288
4302
  "create": {
4289
- "level": "write",
4303
+ "level": "admin",
4290
4304
  "method": "POST",
4291
4305
  "operationKey": "mail_apikey_create",
4292
4306
  "params": [
@@ -4703,7 +4717,7 @@ var bindings = {
4703
4717
  },
4704
4718
  "domain": {
4705
4719
  "create": {
4706
- "level": "write",
4720
+ "level": "admin",
4707
4721
  "method": "POST",
4708
4722
  "operationKey": "mail_domain_create",
4709
4723
  "params": [
@@ -4753,7 +4767,7 @@ var bindings = {
4753
4767
  "readOnly": true
4754
4768
  },
4755
4769
  "update": {
4756
- "level": "write",
4770
+ "level": "admin",
4757
4771
  "method": "PATCH",
4758
4772
  "operationKey": "mail_domain_update",
4759
4773
  "params": [
@@ -5123,7 +5137,7 @@ var bindings = {
5123
5137
  },
5124
5138
  "webhook": {
5125
5139
  "create": {
5126
- "level": "write",
5140
+ "level": "admin",
5127
5141
  "method": "POST",
5128
5142
  "operationKey": "mail_webhook_create",
5129
5143
  "params": [
@@ -5177,7 +5191,7 @@ var bindings = {
5177
5191
  "readOnly": true
5178
5192
  },
5179
5193
  "update": {
5180
- "level": "write",
5194
+ "level": "admin",
5181
5195
  "method": "PATCH",
5182
5196
  "operationKey": "mail_webhook_update",
5183
5197
  "params": [
@@ -5390,7 +5404,7 @@ var bindings = {
5390
5404
  },
5391
5405
  "issues": {
5392
5406
  "archive": {
5393
- "level": "admin",
5407
+ "level": "write",
5394
5408
  "method": "POST",
5395
5409
  "operationKey": "observe_issues_archive",
5396
5410
  "params": [
@@ -5919,7 +5933,7 @@ var bindings = {
5919
5933
  },
5920
5934
  "webhooks-rotate": {
5921
5935
  "secret": {
5922
- "level": "write",
5936
+ "level": "admin",
5923
5937
  "method": "POST",
5924
5938
  "operationKey": "observe_webhooks_rotate_secret",
5925
5939
  "params": [
@@ -7096,10 +7110,138 @@ var bindings = {
7096
7110
  }
7097
7111
  }
7098
7112
  },
7113
+ "playground": {
7114
+ "analytics": {
7115
+ "overview": {
7116
+ "level": "read",
7117
+ "method": "POST",
7118
+ "operationKey": "playground_analytics_overview",
7119
+ "params": [
7120
+ {
7121
+ "in": "body",
7122
+ "name": "limit"
7123
+ }
7124
+ ],
7125
+ "path": "/playground/analytics/overview",
7126
+ "readOnly": true
7127
+ }
7128
+ },
7129
+ "billing": {
7130
+ "entitlements": {
7131
+ "level": "read",
7132
+ "method": "POST",
7133
+ "operationKey": "playground_billing_entitlements",
7134
+ "path": "/playground/billing/entitlements",
7135
+ "readOnly": true
7136
+ },
7137
+ "record-usage": {
7138
+ "level": "write",
7139
+ "method": "POST",
7140
+ "operationKey": "playground_billing_record-usage",
7141
+ "params": [
7142
+ {
7143
+ "in": "body",
7144
+ "name": "value"
7145
+ }
7146
+ ],
7147
+ "path": "/playground/billing/usage",
7148
+ "readOnly": false
7149
+ }
7150
+ },
7151
+ "clickup": {
7152
+ "create-task": {
7153
+ "level": "write",
7154
+ "method": "POST",
7155
+ "operationKey": "playground_clickup_create-task",
7156
+ "params": [
7157
+ {
7158
+ "in": "body",
7159
+ "name": "listId"
7160
+ },
7161
+ {
7162
+ "in": "body",
7163
+ "name": "name"
7164
+ }
7165
+ ],
7166
+ "path": "/playground/clickup/tasks",
7167
+ "readOnly": false
7168
+ },
7169
+ "get-last-webhook": {
7170
+ "level": "read",
7171
+ "method": "GET",
7172
+ "operationKey": "playground_clickup_get-last-webhook",
7173
+ "path": "/playground/clickup/webhooks/last",
7174
+ "readOnly": true
7175
+ },
7176
+ "get-overview": {
7177
+ "level": "read",
7178
+ "method": "GET",
7179
+ "operationKey": "playground_clickup_get-overview",
7180
+ "path": "/playground/clickup/overview",
7181
+ "readOnly": true
7182
+ }
7183
+ },
7184
+ "gdrive": {
7185
+ "get-last-change": {
7186
+ "level": "read",
7187
+ "method": "GET",
7188
+ "operationKey": "playground_gdrive_get-last-change",
7189
+ "path": "/playground/gdrive/changes/last",
7190
+ "readOnly": true
7191
+ },
7192
+ "read-file": {
7193
+ "level": "read",
7194
+ "method": "POST",
7195
+ "operationKey": "playground_gdrive_read-file",
7196
+ "params": [
7197
+ {
7198
+ "in": "body",
7199
+ "name": "fileId"
7200
+ }
7201
+ ],
7202
+ "path": "/playground/gdrive/file",
7203
+ "readOnly": true
7204
+ }
7205
+ },
7206
+ "googleads": {
7207
+ "read-customer": {
7208
+ "level": "read",
7209
+ "method": "POST",
7210
+ "operationKey": "playground_googleads_read-customer",
7211
+ "path": "/playground/googleads/customer",
7212
+ "readOnly": true
7213
+ }
7214
+ },
7215
+ "lifecycle": {
7216
+ "get-state": {
7217
+ "level": "read",
7218
+ "method": "GET",
7219
+ "operationKey": "playground_lifecycle_get-state",
7220
+ "path": "/playground/lifecycle/state",
7221
+ "readOnly": true
7222
+ },
7223
+ "list-events": {
7224
+ "level": "read",
7225
+ "method": "GET",
7226
+ "operationKey": "playground_lifecycle_list-events",
7227
+ "path": "/playground/lifecycle/events",
7228
+ "readOnly": true
7229
+ }
7230
+ },
7231
+ "webhook": {
7232
+ "get-last": {
7233
+ "level": "read",
7234
+ "method": "GET",
7235
+ "operationKey": "playground_webhook_get-last",
7236
+ "path": "/playground/webhooks/last",
7237
+ "readOnly": true
7238
+ }
7239
+ }
7240
+ },
7099
7241
  "realtime": {
7100
7242
  "archive": {
7101
7243
  "export": {
7102
- "level": "write",
7244
+ "level": "admin",
7103
7245
  "method": "POST",
7104
7246
  "operationKey": "realtime_archive_export",
7105
7247
  "params": [
@@ -7158,7 +7300,7 @@ var bindings = {
7158
7300
  },
7159
7301
  "grant": {
7160
7302
  "create": {
7161
- "level": "write",
7303
+ "level": "admin",
7162
7304
  "method": "POST",
7163
7305
  "operationKey": "realtime_grant_create",
7164
7306
  "params": [
@@ -7622,7 +7764,7 @@ var bindings = {
7622
7764
  },
7623
7765
  "webhook-secret": {
7624
7766
  "rotate": {
7625
- "level": "write",
7767
+ "level": "admin",
7626
7768
  "method": "POST",
7627
7769
  "operationKey": "realtime_webhook_secret_rotate",
7628
7770
  "params": [
@@ -8221,7 +8363,7 @@ var bindings = {
8221
8363
  "readOnly": true
8222
8364
  },
8223
8365
  "publish": {
8224
- "level": "write",
8366
+ "level": "admin",
8225
8367
  "method": "POST",
8226
8368
  "operationKey": "support_survey_publish",
8227
8369
  "params": [
@@ -8255,7 +8397,7 @@ var bindings = {
8255
8397
  "readOnly": true
8256
8398
  },
8257
8399
  "unpublish": {
8258
- "level": "write",
8400
+ "level": "admin",
8259
8401
  "method": "POST",
8260
8402
  "operationKey": "support_survey_unpublish",
8261
8403
  "params": [
@@ -8469,7 +8611,7 @@ var bindings = {
8469
8611
  },
8470
8612
  "webhook": {
8471
8613
  "create": {
8472
- "level": "write",
8614
+ "level": "admin",
8473
8615
  "method": "POST",
8474
8616
  "operationKey": "support_webhook_create",
8475
8617
  "params": [
@@ -8503,7 +8645,7 @@ var bindings = {
8503
8645
  "readOnly": false
8504
8646
  },
8505
8647
  "get": {
8506
- "level": "read",
8648
+ "level": "admin",
8507
8649
  "method": "GET",
8508
8650
  "operationKey": "support_webhook_get",
8509
8651
  "params": [
@@ -8516,14 +8658,14 @@ var bindings = {
8516
8658
  "readOnly": true
8517
8659
  },
8518
8660
  "list": {
8519
- "level": "read",
8661
+ "level": "admin",
8520
8662
  "method": "GET",
8521
8663
  "operationKey": "support_webhook_list",
8522
8664
  "path": "/support/webhooks",
8523
8665
  "readOnly": true
8524
8666
  },
8525
8667
  "redeliver": {
8526
- "level": "write",
8668
+ "level": "admin",
8527
8669
  "method": "POST",
8528
8670
  "operationKey": "support_webhook_redeliver",
8529
8671
  "params": [
@@ -8536,7 +8678,7 @@ var bindings = {
8536
8678
  "readOnly": false
8537
8679
  },
8538
8680
  "update": {
8539
- "level": "write",
8681
+ "level": "admin",
8540
8682
  "method": "PATCH",
8541
8683
  "operationKey": "support_webhook_update",
8542
8684
  "params": [
@@ -8567,7 +8709,7 @@ var bindings = {
8567
8709
  },
8568
8710
  "webhook-deliveries": {
8569
8711
  "list": {
8570
- "level": "read",
8712
+ "level": "admin",
8571
8713
  "method": "GET",
8572
8714
  "operationKey": "support_webhook_deliveries_list",
8573
8715
  "params": [
@@ -8606,7 +8748,7 @@ var bindings = {
8606
8748
  },
8607
8749
  "webhook-rotate": {
8608
8750
  "secret": {
8609
- "level": "write",
8751
+ "level": "admin",
8610
8752
  "method": "POST",
8611
8753
  "operationKey": "support_webhook_rotate_secret",
8612
8754
  "params": [
@@ -8692,7 +8834,7 @@ var bindings = {
8692
8834
  },
8693
8835
  "event-names": {
8694
8836
  "archive": {
8695
- "level": "admin",
8837
+ "level": "write",
8696
8838
  "method": "POST",
8697
8839
  "operationKey": "tracking_event-names_archive",
8698
8840
  "params": [
@@ -8730,7 +8872,7 @@ var bindings = {
8730
8872
  "readOnly": true
8731
8873
  },
8732
8874
  "unarchive": {
8733
- "level": "admin",
8875
+ "level": "write",
8734
8876
  "method": "POST",
8735
8877
  "operationKey": "tracking_event-names_unarchive",
8736
8878
  "params": [
@@ -10277,6 +10419,690 @@ var bindings = {
10277
10419
  }
10278
10420
  };
10279
10421
 
10422
+ // src/gen/manifest.gen.ts
10423
+ var operations = {
10424
+ "analytics_catalog_get": "read",
10425
+ "analytics_dashboard_create": "write",
10426
+ "analytics_dashboard_delete": "write",
10427
+ "analytics_dashboard_get": "read",
10428
+ "analytics_dashboard_list": "read",
10429
+ "analytics_dashboard_run": "read",
10430
+ "analytics_dashboard_update": "write",
10431
+ "analytics_funnel_run": "read",
10432
+ "analytics_insight_create": "write",
10433
+ "analytics_insight_delete": "write",
10434
+ "analytics_insight_get": "read",
10435
+ "analytics_insight_list": "read",
10436
+ "analytics_insight_run": "read",
10437
+ "analytics_insight_update": "write",
10438
+ "analytics_metric_query": "read",
10439
+ "analytics_person_timeline": "read",
10440
+ "analytics_query_run": "read",
10441
+ "analytics_retention_run": "read",
10442
+ "brain_backup_create": "write",
10443
+ "brain_backup_restore": "admin",
10444
+ "brain_backup_status": "read",
10445
+ "brain_backups_list": "read",
10446
+ "brain_clickup_channels_list": "read",
10447
+ "brain_clickup_connections_list": "read",
10448
+ "brain_clickup_lists_list": "read",
10449
+ "brain_clickup_spaces_list": "read",
10450
+ "brain_cognition_digest": "write",
10451
+ "brain_cognition_status": "read",
10452
+ "brain_cognition_sweep": "write",
10453
+ "brain_connector_branches_list": "read",
10454
+ "brain_connector_connections_list": "read",
10455
+ "brain_connector_repos_list": "read",
10456
+ "brain_daemon_batch_status": "read",
10457
+ "brain_daemon_create": "write",
10458
+ "brain_daemon_get": "read",
10459
+ "brain_daemon_reingest": "write",
10460
+ "brain_daemon_remove": "admin",
10461
+ "brain_daemon_run": "write",
10462
+ "brain_daemon_run_items": "read",
10463
+ "brain_daemon_runs": "read",
10464
+ "brain_daemon_status": "read",
10465
+ "brain_daemon_update": "write",
10466
+ "brain_daemons_list": "read",
10467
+ "brain_gdrive_connections_list": "read",
10468
+ "brain_knowledge_entity_memories": "read",
10469
+ "brain_knowledge_graph": "read",
10470
+ "brain_knowledge_neighborhood": "read",
10471
+ "brain_knowledge_relations": "read",
10472
+ "brain_knowledge_search": "read",
10473
+ "brain_memory_add": "write",
10474
+ "brain_memory_delete": "write",
10475
+ "brain_memory_get": "read",
10476
+ "brain_memory_list": "read",
10477
+ "brain_memory_search": "read",
10478
+ "brain_memory_stats": "read",
10479
+ "brain_memory_update": "write",
10480
+ "brain_product_shared_memory_reset": "admin",
10481
+ "brain_restore_status": "read",
10482
+ "brain_usage_report": "read",
10483
+ "consent_config_cookie_domain_upsert": "admin",
10484
+ "consent_config_customization_upsert": "write",
10485
+ "consent_config_floating_icon_upsert": "write",
10486
+ "consent_config_theme_upsert": "write",
10487
+ "consent_dashboard_config_get": "read",
10488
+ "consent_dashboard_decisions_list": "read",
10489
+ "consent_dashboard_embed_snippet_get": "read",
10490
+ "consent_dashboard_stats_get": "read",
10491
+ "consent_embed_get": "read",
10492
+ "consent_providers_create": "write",
10493
+ "consent_providers_delete": "admin",
10494
+ "consent_providers_list": "read",
10495
+ "consent_providers_update": "write",
10496
+ "consent_records_export": "admin",
10497
+ "consent_stats_get": "read",
10498
+ "content_channels_bind": "write",
10499
+ "content_channels_get": "read",
10500
+ "content_channels_list": "read",
10501
+ "content_channels_resume": "write",
10502
+ "content_channels_unbind": "write",
10503
+ "content_channels_update": "write",
10504
+ "content_media_create_upload_url": "write",
10505
+ "content_media_finalize": "write",
10506
+ "content_media_get": "read",
10507
+ "content_media_list": "read",
10508
+ "content_media_upload": "write",
10509
+ "content_metrics_channel_series": "read",
10510
+ "content_metrics_post_series": "read",
10511
+ "content_posts_approve": "write",
10512
+ "content_posts_attach_media": "write",
10513
+ "content_posts_create": "write",
10514
+ "content_posts_detach_media": "write",
10515
+ "content_posts_get": "read",
10516
+ "content_posts_list": "read",
10517
+ "content_posts_submit": "write",
10518
+ "content_posts_update": "write",
10519
+ "content_posts_versions": "read",
10520
+ "content_publications_cancel": "write",
10521
+ "content_publications_confirm": "write",
10522
+ "content_publications_get": "read",
10523
+ "content_publications_list": "read",
10524
+ "content_publications_publish": "write",
10525
+ "content_publications_remind": "write",
10526
+ "content_publications_reschedule": "write",
10527
+ "content_publications_schedule": "write",
10528
+ "content_publications_validate": "read",
10529
+ "deployment_alert_create": "write",
10530
+ "deployment_alert_delete": "admin",
10531
+ "deployment_alert_events_list": "read",
10532
+ "deployment_alert_list": "read",
10533
+ "deployment_alert_update": "write",
10534
+ "deployment_analytics_query": "read",
10535
+ "deployment_build_get": "read",
10536
+ "deployment_build_list": "read",
10537
+ "deployment_build_logs": "read",
10538
+ "deployment_canvas_get": "read",
10539
+ "deployment_canvas_move_node": "write",
10540
+ "deployment_cloud_sql_backfill_log_flags": "write",
10541
+ "deployment_cloud_sql_database_attach": "write",
10542
+ "deployment_cloud_sql_database_create": "write",
10543
+ "deployment_cloud_sql_database_delete": "admin",
10544
+ "deployment_cloud_sql_database_detach": "write",
10545
+ "deployment_cloud_sql_database_get": "read",
10546
+ "deployment_cloud_sql_database_list": "read",
10547
+ "deployment_cloud_sql_instance_backup": "write",
10548
+ "deployment_cloud_sql_instance_backup_list": "read",
10549
+ "deployment_cloud_sql_instance_create": "write",
10550
+ "deployment_cloud_sql_instance_delete": "admin",
10551
+ "deployment_cloud_sql_instance_get": "read",
10552
+ "deployment_cloud_sql_instance_list": "read",
10553
+ "deployment_cloud_sql_instance_resize": "write",
10554
+ "deployment_cloud_sql_instance_restore": "admin",
10555
+ "deployment_cloud_sql_logs": "read",
10556
+ "deployment_deployment_cancel": "write",
10557
+ "deployment_deployment_get": "read",
10558
+ "deployment_deployment_list": "read",
10559
+ "deployment_domain_add": "admin",
10560
+ "deployment_domain_allowed_list": "read",
10561
+ "deployment_domain_get": "read",
10562
+ "deployment_domain_list": "read",
10563
+ "deployment_domain_list_by_service": "read",
10564
+ "deployment_domain_redirect_www": "admin",
10565
+ "deployment_domain_remove": "admin",
10566
+ "deployment_domain_routes_add": "admin",
10567
+ "deployment_domain_routes_list": "read",
10568
+ "deployment_domain_routes_remove": "admin",
10569
+ "deployment_domain_routes_update": "admin",
10570
+ "deployment_domain_verify": "write",
10571
+ "deployment_environment_create": "write",
10572
+ "deployment_environment_delete": "admin",
10573
+ "deployment_environment_fork": "write",
10574
+ "deployment_environment_get": "read",
10575
+ "deployment_environment_list": "read",
10576
+ "deployment_environment_reconcile": "write",
10577
+ "deployment_environment_update": "write",
10578
+ "deployment_events_list_by_environment": "read",
10579
+ "deployment_events_list_by_service": "read",
10580
+ "deployment_job_run": "write",
10581
+ "deployment_job_run_logs": "read",
10582
+ "deployment_job_runs_list": "read",
10583
+ "deployment_managed_service_backup": "write",
10584
+ "deployment_managed_service_backup_list": "read",
10585
+ "deployment_managed_service_connect_info": "read",
10586
+ "deployment_managed_service_delete": "admin",
10587
+ "deployment_managed_service_get": "read",
10588
+ "deployment_managed_service_list": "read",
10589
+ "deployment_managed_service_logs": "read",
10590
+ "deployment_managed_service_provision": "write",
10591
+ "deployment_managed_service_reconcile": "write",
10592
+ "deployment_managed_service_resize": "write",
10593
+ "deployment_managed_service_restore": "admin",
10594
+ "deployment_managed_service_start": "write",
10595
+ "deployment_managed_service_stop": "write",
10596
+ "deployment_managed_service_types": "read",
10597
+ "deployment_metrics_get": "read",
10598
+ "deployment_preview_environment_create": "write",
10599
+ "deployment_preview_environment_delete": "admin",
10600
+ "deployment_preview_environment_list": "read",
10601
+ "deployment_preview_policy_get": "read",
10602
+ "deployment_preview_policy_set": "admin",
10603
+ "deployment_service_create": "write",
10604
+ "deployment_service_delete": "admin",
10605
+ "deployment_service_exec": "admin",
10606
+ "deployment_service_get": "read",
10607
+ "deployment_service_list": "read",
10608
+ "deployment_service_logs": "read",
10609
+ "deployment_service_redeploy": "write",
10610
+ "deployment_service_restart": "write",
10611
+ "deployment_service_rollback": "write",
10612
+ "deployment_service_scale": "write",
10613
+ "deployment_service_update": "write",
10614
+ "deployment_service_wake": "write",
10615
+ "deployment_ssh_command": "read",
10616
+ "deployment_ssh_key_delete": "admin",
10617
+ "deployment_ssh_key_list": "read",
10618
+ "deployment_ssh_key_register": "admin",
10619
+ "deployment_suspension_get": "read",
10620
+ "deployment_variable_list": "read",
10621
+ "deployment_variable_list_env": "read",
10622
+ "deployment_variable_list_product": "read",
10623
+ "deployment_variable_set": "write",
10624
+ "deployment_variable_set_env": "write",
10625
+ "deployment_variable_set_product": "admin",
10626
+ "deployment_variable_unset": "write",
10627
+ "deployment_variable_unset_env": "write",
10628
+ "deployment_variable_unset_product": "admin",
10629
+ "deployment_vcs_branch_list": "read",
10630
+ "deployment_vcs_connection_list": "read",
10631
+ "deployment_vcs_repo_list": "read",
10632
+ "deployment_volume_create": "write",
10633
+ "deployment_volume_delete": "admin",
10634
+ "deployment_volume_detach": "write",
10635
+ "deployment_volume_get": "read",
10636
+ "deployment_volume_list": "read",
10637
+ "deployment_volume_resize": "write",
10638
+ "mail_apikey_create": "admin",
10639
+ "mail_apikey_delete": "admin",
10640
+ "mail_apikey_list": "read",
10641
+ "mail_audience_create": "write",
10642
+ "mail_audience_delete": "admin",
10643
+ "mail_audience_get": "read",
10644
+ "mail_audience_list": "read",
10645
+ "mail_audience_update": "write",
10646
+ "mail_broadcast_cancel": "write",
10647
+ "mail_broadcast_create": "write",
10648
+ "mail_broadcast_delete": "admin",
10649
+ "mail_broadcast_get": "read",
10650
+ "mail_broadcast_list": "read",
10651
+ "mail_broadcast_queue": "write",
10652
+ "mail_broadcast_stats": "read",
10653
+ "mail_broadcast_update": "write",
10654
+ "mail_contact_create": "write",
10655
+ "mail_contact_delete": "admin",
10656
+ "mail_contact_get": "read",
10657
+ "mail_contact_list": "read",
10658
+ "mail_contact_update": "write",
10659
+ "mail_domain_allowed_list": "read",
10660
+ "mail_domain_create": "admin",
10661
+ "mail_domain_delete": "admin",
10662
+ "mail_domain_get": "read",
10663
+ "mail_domain_list": "read",
10664
+ "mail_domain_update": "admin",
10665
+ "mail_domain_verify": "write",
10666
+ "mail_email_cancel": "write",
10667
+ "mail_email_get": "read",
10668
+ "mail_email_send": "write",
10669
+ "mail_email_send_batch": "write",
10670
+ "mail_email_update": "write",
10671
+ "mail_reputation_get": "read",
10672
+ "mail_stats_get": "read",
10673
+ "mail_suppression_add": "write",
10674
+ "mail_suppression_list": "read",
10675
+ "mail_suppression_remove": "admin",
10676
+ "mail_template_create": "write",
10677
+ "mail_template_delete": "admin",
10678
+ "mail_template_get": "read",
10679
+ "mail_template_list": "read",
10680
+ "mail_template_publish": "write",
10681
+ "mail_template_update": "write",
10682
+ "mail_usage_get": "read",
10683
+ "mail_webhook_create": "admin",
10684
+ "mail_webhook_delete": "admin",
10685
+ "mail_webhook_deliveries_list": "read",
10686
+ "mail_webhook_get": "read",
10687
+ "mail_webhook_list": "read",
10688
+ "mail_webhook_update": "admin",
10689
+ "observe_alerts_create": "write",
10690
+ "observe_alerts_delete": "admin",
10691
+ "observe_alerts_events_list": "read",
10692
+ "observe_alerts_get": "read",
10693
+ "observe_alerts_list": "read",
10694
+ "observe_alerts_update": "write",
10695
+ "observe_artifacts_delete": "admin",
10696
+ "observe_artifacts_list": "read",
10697
+ "observe_artifacts_resolve": "read",
10698
+ "observe_issues_archive": "write",
10699
+ "observe_issues_assign": "write",
10700
+ "observe_issues_event": "read",
10701
+ "observe_issues_events": "read",
10702
+ "observe_issues_get": "read",
10703
+ "observe_issues_histogram": "read",
10704
+ "observe_issues_list": "read",
10705
+ "observe_issues_resolve": "write",
10706
+ "observe_keys_create": "write",
10707
+ "observe_keys_list": "read",
10708
+ "observe_keys_revoke": "admin",
10709
+ "observe_logs_facets": "read",
10710
+ "observe_logs_search": "read",
10711
+ "observe_logs_tail": "read",
10712
+ "observe_metrics_list": "read",
10713
+ "observe_metrics_query": "read",
10714
+ "observe_traces_get": "read",
10715
+ "observe_traces_search": "read",
10716
+ "observe_webhooks_create": "write",
10717
+ "observe_webhooks_delete": "admin",
10718
+ "observe_webhooks_deliveries_list": "read",
10719
+ "observe_webhooks_get": "read",
10720
+ "observe_webhooks_list": "read",
10721
+ "observe_webhooks_redeliver": "write",
10722
+ "observe_webhooks_rotate_secret": "admin",
10723
+ "observe_webhooks_update": "write",
10724
+ "organization_auth_me": "read",
10725
+ "organization_billing_budgets_get": "read",
10726
+ "organization_billing_budgets_set": "write",
10727
+ "organization_billing_caps_clear": "write",
10728
+ "organization_billing_caps_set": "write",
10729
+ "organization_bindings_list": "read",
10730
+ "organization_clickup_install": "read",
10731
+ "organization_clickup_list-installations": "read",
10732
+ "organization_cloudflare_install": "read",
10733
+ "organization_connectors_approve-request": "write",
10734
+ "organization_connectors_attach": "write",
10735
+ "organization_connectors_delete": "admin",
10736
+ "organization_connectors_deny-request": "write",
10737
+ "organization_connectors_detach": "write",
10738
+ "organization_connectors_list": "read",
10739
+ "organization_connectors_list-attachments": "read",
10740
+ "organization_connectors_list-available": "read",
10741
+ "organization_connectors_list-org": "read",
10742
+ "organization_connectors_list-requests": "read",
10743
+ "organization_connectors_remove": "admin",
10744
+ "organization_connectors_request": "write",
10745
+ "organization_create": "write",
10746
+ "organization_domains_add": "write",
10747
+ "organization_domains_get": "read",
10748
+ "organization_domains_list": "read",
10749
+ "organization_domains_remove": "admin",
10750
+ "organization_domains_set-mode": "write",
10751
+ "organization_extensions_list-installed": "read",
10752
+ "organization_feedback_submit": "write",
10753
+ "organization_gdrive_install": "read",
10754
+ "organization_github_install": "read",
10755
+ "organization_github_list-installations": "read",
10756
+ "organization_googleads_install": "read",
10757
+ "organization_list": "read",
10758
+ "organization_member_accept-invite": "write",
10759
+ "organization_member_invite": "write",
10760
+ "organization_member_list": "read",
10761
+ "organization_member_list-invitations": "read",
10762
+ "organization_member_list-product-access": "read",
10763
+ "organization_member_remove": "admin",
10764
+ "organization_member_revoke-invitation": "admin",
10765
+ "organization_member_set-role": "admin",
10766
+ "organization_member_share-product": "admin",
10767
+ "organization_member_unshare-product": "admin",
10768
+ "organization_members_assign-role": "admin",
10769
+ "organization_permission_catalog": "read",
10770
+ "organization_product_create": "write",
10771
+ "organization_product_list": "read",
10772
+ "organization_product_list-access": "read",
10773
+ "organization_product_list-members": "read",
10774
+ "organization_product_list-roles": "read",
10775
+ "organization_product_revoke-access": "write",
10776
+ "organization_product_select": "read",
10777
+ "organization_product_set-access": "write",
10778
+ "organization_product_update": "write",
10779
+ "organization_public-keys_create": "write",
10780
+ "organization_public-keys_list": "read",
10781
+ "organization_public-keys_revoke": "admin",
10782
+ "organization_public-keys_update-scope": "write",
10783
+ "organization_public-routes_list": "read",
10784
+ "organization_roles_create": "write",
10785
+ "organization_roles_delete": "admin",
10786
+ "organization_roles_get": "read",
10787
+ "organization_roles_list": "read",
10788
+ "organization_roles_update": "write",
10789
+ "organization_security_mfa_enable": "write",
10790
+ "organization_select": "read",
10791
+ "organization_support_thread_create": "write",
10792
+ "organization_support_thread_get": "read",
10793
+ "organization_support_thread_reply": "write",
10794
+ "organization_support_threads_list": "read",
10795
+ "playground_analytics_overview": "read",
10796
+ "playground_billing_entitlements": "read",
10797
+ "playground_billing_record-usage": "write",
10798
+ "playground_clickup_create-task": "write",
10799
+ "playground_clickup_get-last-webhook": "read",
10800
+ "playground_clickup_get-overview": "read",
10801
+ "playground_gdrive_get-last-change": "read",
10802
+ "playground_gdrive_read-file": "read",
10803
+ "playground_googleads_read-customer": "read",
10804
+ "playground_lifecycle_get-state": "read",
10805
+ "playground_lifecycle_list-events": "read",
10806
+ "playground_webhook_get-last": "read",
10807
+ "realtime_archive_export": "admin",
10808
+ "realtime_archive_export_status": "read",
10809
+ "realtime_archive_get": "read",
10810
+ "realtime_grant_create": "admin",
10811
+ "realtime_grant_list": "read",
10812
+ "realtime_grant_revoke": "admin",
10813
+ "realtime_history_get": "read",
10814
+ "realtime_messages_publish": "write",
10815
+ "realtime_namespace_create": "write",
10816
+ "realtime_namespace_delete": "admin",
10817
+ "realtime_namespace_get": "read",
10818
+ "realtime_namespace_list": "read",
10819
+ "realtime_namespace_update": "write",
10820
+ "realtime_presence_enter": "write",
10821
+ "realtime_presence_get": "read",
10822
+ "realtime_presence_leave": "write",
10823
+ "realtime_presence_stats": "read",
10824
+ "realtime_presence_update": "write",
10825
+ "realtime_public_access_status": "read",
10826
+ "realtime_status_get": "read",
10827
+ "realtime_tokens_create": "write",
10828
+ "realtime_webhook_create": "write",
10829
+ "realtime_webhook_delete": "admin",
10830
+ "realtime_webhook_deliveries_list": "read",
10831
+ "realtime_webhook_get": "read",
10832
+ "realtime_webhook_list": "read",
10833
+ "realtime_webhook_secret_rotate": "admin",
10834
+ "realtime_webhook_update": "write",
10835
+ "support_agent_create": "write",
10836
+ "support_agent_get": "read",
10837
+ "support_agent_list": "read",
10838
+ "support_agent_update": "write",
10839
+ "support_attachment_create": "write",
10840
+ "support_attachment_finalize": "write",
10841
+ "support_label_create": "write",
10842
+ "support_label_list": "read",
10843
+ "support_message_create": "write",
10844
+ "support_message_list": "read",
10845
+ "support_response_escalate": "write",
10846
+ "support_response_get": "read",
10847
+ "support_response_list": "read",
10848
+ "support_rule_create": "write",
10849
+ "support_rule_delete": "admin",
10850
+ "support_rule_get": "read",
10851
+ "support_rule_list": "read",
10852
+ "support_rule_update": "write",
10853
+ "support_status_archive": "admin",
10854
+ "support_status_create": "write",
10855
+ "support_status_list": "read",
10856
+ "support_status_update": "write",
10857
+ "support_survey_archive": "admin",
10858
+ "support_survey_create": "write",
10859
+ "support_survey_get": "read",
10860
+ "support_survey_list": "read",
10861
+ "support_survey_publish": "admin",
10862
+ "support_survey_stats": "read",
10863
+ "support_survey_unpublish": "admin",
10864
+ "support_survey_update": "write",
10865
+ "support_thread_assign": "write",
10866
+ "support_thread_create": "write",
10867
+ "support_thread_get": "read",
10868
+ "support_thread_list": "read",
10869
+ "support_thread_status_set": "write",
10870
+ "support_thread_update": "write",
10871
+ "support_webhook_create": "admin",
10872
+ "support_webhook_delete": "admin",
10873
+ "support_webhook_deliveries_list": "admin",
10874
+ "support_webhook_get": "admin",
10875
+ "support_webhook_list": "admin",
10876
+ "support_webhook_redeliver": "admin",
10877
+ "support_webhook_rotate_secret": "admin",
10878
+ "support_webhook_update": "admin",
10879
+ "tracking_domains_create": "write",
10880
+ "tracking_domains_delete": "admin",
10881
+ "tracking_domains_get": "read",
10882
+ "tracking_domains_list": "read",
10883
+ "tracking_domains_verify": "write",
10884
+ "tracking_event-names_archive": "write",
10885
+ "tracking_event-names_list": "read",
10886
+ "tracking_event-names_unarchive": "write",
10887
+ "tracking_googleads_connection_status": "read",
10888
+ "tracking_googleads_conversion_actions": "read",
10889
+ "tracking_googleads_feedback_config_get": "read",
10890
+ "tracking_googleads_feedback_config_set": "write",
10891
+ "tracking_googleads_feedback_run": "write",
10892
+ "tracking_googleads_feedback_status": "read",
10893
+ "tracking_googleads_feedback_uploads": "read",
10894
+ "tracking_googleads_roas_report": "read",
10895
+ "tracking_googleads_sync_now": "write",
10896
+ "tracking_googleads_tracking_health": "read",
10897
+ "tracking_googleads_us_vs_platform": "read",
10898
+ "tracking_identity_health": "read",
10899
+ "tracking_install-domains_create": "write",
10900
+ "tracking_install-domains_delete": "admin",
10901
+ "tracking_install-domains_list": "read",
10902
+ "tracking_link-domains_create": "write",
10903
+ "tracking_link-domains_delete": "admin",
10904
+ "tracking_link-domains_list": "read",
10905
+ "tracking_live-events_list": "read",
10906
+ "tracking_profiles_delete": "admin",
10907
+ "tracking_profiles_export": "read",
10908
+ "tracking_profiles_get": "read",
10909
+ "tracking_profiles_list": "read",
10910
+ "tracking_reports_attributed_journey": "read",
10911
+ "tracking_reports_event_volume": "read",
10912
+ "tracking_reports_revenue_by_source": "read",
10913
+ "tracking_reports_source_people": "read",
10914
+ "tracking_snippets_get": "read",
10915
+ "users_apikeys_create": "write",
10916
+ "users_apikeys_list": "read",
10917
+ "users_apikeys_revoke": "admin",
10918
+ "users_audit_list": "read",
10919
+ "users_config_get": "read",
10920
+ "users_config_upsert": "write",
10921
+ "users_factors_list": "read",
10922
+ "users_factors_reset": "write",
10923
+ "users_keys_list": "read",
10924
+ "users_keys_revoke": "admin",
10925
+ "users_keys_rotate": "write",
10926
+ "users_ops_retention_get": "read",
10927
+ "users_ops_slo_get": "read",
10928
+ "users_passkeys_list": "read",
10929
+ "users_passkeys_revoke": "admin",
10930
+ "users_sessions_get": "read",
10931
+ "users_sessions_impersonate": "write",
10932
+ "users_sessions_list": "read",
10933
+ "users_sessions_revoke": "admin",
10934
+ "users_stats_get": "read",
10935
+ "users_users_ban": "write",
10936
+ "users_users_create": "write",
10937
+ "users_users_delete": "admin",
10938
+ "users_users_erase": "write",
10939
+ "users_users_export": "read",
10940
+ "users_users_get": "read",
10941
+ "users_users_import": "write",
10942
+ "users_users_invite": "write",
10943
+ "users_users_list": "read",
10944
+ "users_users_set_primary_identifier": "write",
10945
+ "users_users_unban": "write",
10946
+ "users_users_update": "write",
10947
+ "users_waitlist_erase": "write",
10948
+ "users_waitlist_funnel": "write",
10949
+ "users_waitlist_import": "write",
10950
+ "users_waitlist_invite": "write",
10951
+ "users_waitlist_list": "read",
10952
+ "users_webhooks_create": "write",
10953
+ "users_webhooks_delete": "admin",
10954
+ "users_webhooks_deliveries_list": "read",
10955
+ "users_webhooks_get": "read",
10956
+ "users_webhooks_list": "read",
10957
+ "users_webhooks_rotate_secret": "write",
10958
+ "users_webhooks_update": "write",
10959
+ "waitlist_config_get": "read",
10960
+ "waitlist_config_upsert": "write",
10961
+ "waitlist_embed_get": "read",
10962
+ "waitlist_invites_send": "write",
10963
+ "waitlist_signups_erase": "write",
10964
+ "waitlist_signups_funnel": "read",
10965
+ "waitlist_signups_list": "read"
10966
+ };
10967
+
10968
+ // src/runtime/permission-match.ts
10969
+ var LEVELS = ["read", "write", "admin"];
10970
+ var LEVEL_PREFIX = "level:";
10971
+ function isLevelPattern(p) {
10972
+ return typeof p === "string" && p.startsWith(LEVEL_PREFIX) && LEVELS.includes(p.slice(LEVEL_PREFIX.length));
10973
+ }
10974
+ function matchPermission(op, grants) {
10975
+ const key = typeof op === "string" ? op : op.key;
10976
+ const level = typeof op === "string" ? void 0 : op.level;
10977
+ if (!key) return false;
10978
+ const keySegments = key.split("_");
10979
+ for (const grant of grants) {
10980
+ if (isLevelPattern(grant)) {
10981
+ if (level !== void 0 && grant === LEVEL_PREFIX + level) return true;
10982
+ continue;
10983
+ }
10984
+ if (matchSingle(keySegments, grant)) return true;
10985
+ }
10986
+ return false;
10987
+ }
10988
+ function matchSingle(keySegments, grant) {
10989
+ const grantSegments = grant.split("_");
10990
+ const m = grantSegments.length;
10991
+ const n = keySegments.length;
10992
+ const trailing = grantSegments[m - 1] === "*";
10993
+ if (trailing) {
10994
+ if (n < m) return false;
10995
+ for (let i = 0; i < m - 1; i++) {
10996
+ const g = grantSegments[i];
10997
+ if (g !== "*" && g !== keySegments[i]) return false;
10998
+ }
10999
+ return true;
11000
+ }
11001
+ if (n !== m) return false;
11002
+ for (let i = 0; i < m; i++) {
11003
+ const g = grantSegments[i];
11004
+ if (g !== "*" && g !== keySegments[i]) return false;
11005
+ }
11006
+ return true;
11007
+ }
11008
+ function evaluate(op, perms) {
11009
+ return matchPermission(op, perms.allow) && !matchPermission(op, perms.deny);
11010
+ }
11011
+
11012
+ // src/runtime/access.ts
11013
+ var ME_OPERATION_KEY = "organization_product_me";
11014
+ var ME_ROUTE = {
11015
+ method: "GET",
11016
+ path: "/governance/api/v1/products/:productId/me"};
11017
+ var ELEVATED_ROLES = /* @__PURE__ */ new Set(["owner", "admin"]);
11018
+ function findMeBinding(bindings2) {
11019
+ for (const resources of Object.values(bindings2)) {
11020
+ for (const actions of Object.values(resources)) {
11021
+ for (const binding of Object.values(actions)) {
11022
+ if (binding.operationKey === ME_OPERATION_KEY) return binding;
11023
+ }
11024
+ }
11025
+ }
11026
+ return void 0;
11027
+ }
11028
+ function asStringArray(value) {
11029
+ return Array.isArray(value) ? value.filter((v) => typeof v === "string") : [];
11030
+ }
11031
+ function asRoleType(value) {
11032
+ return value === "system" || value === "custom" ? value : null;
11033
+ }
11034
+ function normalize(raw) {
11035
+ const r = typeof raw === "object" && raw !== null ? raw : {};
11036
+ return {
11037
+ role: typeof r.role === "string" ? r.role : "",
11038
+ roleId: typeof r.roleId === "string" ? r.roleId : null,
11039
+ roleName: typeof r.roleName === "string" ? r.roleName : null,
11040
+ roleType: asRoleType(r.roleType),
11041
+ allow: asStringArray(r.allow),
11042
+ deny: asStringArray(r.deny)
11043
+ };
11044
+ }
11045
+ function createAccess(opts, bindings2, operations2) {
11046
+ let snapshot;
11047
+ let inflight;
11048
+ let state = "idle";
11049
+ const subscribers = /* @__PURE__ */ new Set();
11050
+ function setState(next) {
11051
+ if (next === state) return;
11052
+ state = next;
11053
+ for (const cb of [...subscribers]) cb();
11054
+ }
11055
+ return {
11056
+ load() {
11057
+ if (snapshot) return Promise.resolve(snapshot);
11058
+ if (inflight) return inflight;
11059
+ setState("loading");
11060
+ const binding = findMeBinding(bindings2) ?? ME_ROUTE;
11061
+ const request = executeRequest(opts, binding, { productId: opts.productId }).then(
11062
+ (raw) => {
11063
+ const next = normalize(raw);
11064
+ snapshot = next;
11065
+ inflight = void 0;
11066
+ setState("ready");
11067
+ return next;
11068
+ },
11069
+ (err) => {
11070
+ inflight = void 0;
11071
+ setState("error");
11072
+ throw err;
11073
+ }
11074
+ );
11075
+ inflight = request;
11076
+ return request;
11077
+ },
11078
+ can(op) {
11079
+ if (state !== "ready" || !snapshot) return false;
11080
+ if (ELEVATED_ROLES.has(snapshot.role)) return true;
11081
+ const key = typeof op === "string" ? op : op.operationKey;
11082
+ const level = typeof op === "string" ? operations2[key] : op.level;
11083
+ const subject = level === void 0 ? { key } : { key, level };
11084
+ return evaluate(subject, { allow: snapshot.allow, deny: snapshot.deny });
11085
+ },
11086
+ get role() {
11087
+ return snapshot?.role;
11088
+ },
11089
+ get state() {
11090
+ return state;
11091
+ },
11092
+ invalidate() {
11093
+ snapshot = void 0;
11094
+ inflight = void 0;
11095
+ setState("idle");
11096
+ },
11097
+ subscribe(cb) {
11098
+ subscribers.add(cb);
11099
+ return () => {
11100
+ subscribers.delete(cb);
11101
+ };
11102
+ }
11103
+ };
11104
+ }
11105
+
10280
11106
  // src/runtime/createLesslyApp.ts
10281
11107
  function actionFn(opts, binding) {
10282
11108
  return Object.assign(
@@ -10308,7 +11134,11 @@ function namespaceProxy(opts, resources) {
10308
11134
  function createLesslyApp(opts) {
10309
11135
  const map = bindings;
10310
11136
  const nsCache = {};
11137
+ let accessApi;
10311
11138
  const base = {
11139
+ get access() {
11140
+ return accessApi ??= createAccess(opts, map, operations);
11141
+ },
10312
11142
  // The whole streaming surface of the client. Streams are NOT reachable through the request
10313
11143
  // proxy: a socket is not a promise-returning call, and hanging one off `sdk.<ns>.<res>.<act>`
10314
11144
  // would make two very different lifetimes look identical at the call site. The generated
@@ -10343,5 +11173,6 @@ function createLesslyApp(opts) {
10343
11173
  exports.LesslyApiError = LesslyApiError;
10344
11174
  exports.connectStream = connectStream;
10345
11175
  exports.createLesslyApp = createLesslyApp;
11176
+ exports.isAccessDenied = isAccessDenied;
10346
11177
  //# sourceMappingURL=index.cjs.map
10347
11178
  //# sourceMappingURL=index.cjs.map