@jskit-ai/workspaces-web 0.1.138 → 0.1.139-oldline.1

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 (24) hide show
  1. package/package.descriptor.mjs +492 -0
  2. package/package.json +9 -564
  3. package/src/client/account-settings/accountSettingsInvitesRuntime.js +2 -2
  4. package/src/client/account-settings/useAccountSettingsInvitesSectionRuntime.js +3 -3
  5. package/src/client/components/MembersAdminClientElement.vue +1 -1
  6. package/src/client/components/{WorkspaceProfileSurfaceSwitchMenuItem.vue → UsersProfileSurfaceSwitchMenuItem.vue} +1 -1
  7. package/src/client/components/{WorkspaceMembersMenuItem.vue → UsersWorkspaceMembersMenuItem.vue} +2 -2
  8. package/src/client/components/{WorkspacePermissionMenuItem.vue → UsersWorkspacePermissionMenuItem.vue} +3 -3
  9. package/src/client/components/{WorkspaceSelector.vue → UsersWorkspaceSelector.vue} +1 -1
  10. package/src/client/components/{WorkspaceSettingsMenuItem.vue → UsersWorkspaceSettingsMenuItem.vue} +2 -2
  11. package/src/client/components/WorkspaceInviteLanding.vue +4 -4
  12. package/src/client/components/WorkspaceMembersClientElement.vue +6 -6
  13. package/src/client/components/WorkspacesClientElement.vue +13 -13
  14. package/src/client/composables/useWorkspaceRouteContext.js +1 -1
  15. package/src/client/lib/httpClient.js +10 -0
  16. package/src/client/lib/permissions.js +27 -0
  17. package/src/client/lib/surfaceAccessPolicy.js +1 -4
  18. package/src/client/providers/WorkspacesWebClientProvider.js +11 -11
  19. package/src/client/runtime/bootstrapPlacementRuntime.js +1 -1
  20. package/src/client/runtime/bootstrapPlacementRuntimeHelpers.js +2 -2
  21. package/test/{packageMetadataOwnership.test.js → packageDescriptorOwnership.test.js} +2 -4
  22. package/test/settingsPlacementContract.test.js +20 -22
  23. package/test/{workspaceSelectorContract.test.js → usersWorkspaceSelectorContract.test.js} +3 -3
  24. /package/src/client/components/{WorkspaceToolsWidget.vue → UsersWorkspaceToolsWidget.vue} +0 -0
@@ -0,0 +1,492 @@
1
+ export default Object.freeze({
2
+ packageVersion: 1,
3
+ packageId: "@jskit-ai/workspaces-web",
4
+ version: "0.1.127",
5
+ kind: "runtime",
6
+ description: "Workspace web module: workspace selector, tools widget, workspace surfaces, members UI, and settings hosts.",
7
+ dependsOn: [
8
+ "@jskit-ai/auth-web",
9
+ "@jskit-ai/workspaces-core",
10
+ "@jskit-ai/users-web"
11
+ ],
12
+ capabilities: {
13
+ provides: [
14
+ "workspaces.web"
15
+ ],
16
+ requires: [
17
+ "users.web",
18
+ "workspaces.core"
19
+ ]
20
+ },
21
+ runtime: {
22
+ server: {
23
+ providers: []
24
+ },
25
+ client: {
26
+ providers: [
27
+ {
28
+ entrypoint: "src/client/providers/WorkspacesWebClientProvider.js",
29
+ export: "WorkspacesWebClientProvider"
30
+ }
31
+ ]
32
+ }
33
+ },
34
+ metadata: {
35
+ apiSummary: {
36
+ surfaces: [
37
+ {
38
+ subpath: "./client",
39
+ summary: "Exports workspaces-web client provider registration surface."
40
+ },
41
+ {
42
+ subpath: "./client/components/AccountSettingsInvitesSection",
43
+ summary: "Exports the default account invites section component used by multihoming installs."
44
+ },
45
+ {
46
+ subpath: "./client/components/WorkspaceInviteLanding",
47
+ summary: "Exports the default public workspace invite landing component."
48
+ },
49
+ {
50
+ subpath: "./client/providers/WorkspacesWebClientProvider",
51
+ summary: "Exports workspaces-web client provider class."
52
+ },
53
+ {
54
+ subpath: "./client/composables/useWorkspaceRouteContext",
55
+ summary: "Exports workspace route context composable."
56
+ }
57
+ ],
58
+ containerTokens: {
59
+ server: [],
60
+ client: [
61
+ "workspaces.web.profile.menu.surface-switch-item",
62
+ "workspaces.web.workspace.selector",
63
+ "workspaces.web.workspace.tools.widget",
64
+ "workspaces.web.workspace-settings.menu-item",
65
+ "workspaces.web.workspace-members.menu-item",
66
+ "workspaces.web.members-admin.element",
67
+ "workspaces.web.bootstrap-placement.runtime",
68
+ "workspaces.web.scope-support"
69
+ ]
70
+ }
71
+ },
72
+ ui: {
73
+ placements: {
74
+ outlets: [
75
+ {
76
+ target: "admin-settings:primary-menu",
77
+ surfaces: ["admin"],
78
+ source: "templates/src/pages/admin/workspace/settings.vue"
79
+ },
80
+ {
81
+ target: "admin-cog:primary-menu",
82
+ surfaces: ["admin"],
83
+ source: "src/client/components/UsersWorkspaceToolsWidget.vue"
84
+ }
85
+ ],
86
+ topology: {
87
+ placements: [
88
+ {
89
+ id: "page.section-nav",
90
+ owner: "admin-settings",
91
+ description: "Navigation between workspace admin settings child pages.",
92
+ surfaces: ["admin"],
93
+ variants: {
94
+ compact: {
95
+ outlet: "admin-settings:primary-menu",
96
+ renderers: {
97
+ link: "local.main.ui.surface-aware-menu-link-item"
98
+ }
99
+ },
100
+ medium: {
101
+ outlet: "admin-settings:primary-menu",
102
+ renderers: {
103
+ link: "local.main.ui.surface-aware-menu-link-item"
104
+ }
105
+ },
106
+ expanded: {
107
+ outlet: "admin-settings:primary-menu",
108
+ renderers: {
109
+ link: "local.main.ui.surface-aware-menu-link-item"
110
+ }
111
+ }
112
+ }
113
+ },
114
+ {
115
+ id: "admin.tools-menu",
116
+ description: "Admin surface tools menu actions.",
117
+ surfaces: ["admin"],
118
+ variants: {
119
+ compact: {
120
+ outlet: "admin-cog:primary-menu",
121
+ renderers: {
122
+ link: "local.main.ui.surface-aware-menu-link-item"
123
+ }
124
+ },
125
+ medium: {
126
+ outlet: "admin-cog:primary-menu",
127
+ renderers: {
128
+ link: "local.main.ui.surface-aware-menu-link-item"
129
+ }
130
+ },
131
+ expanded: {
132
+ outlet: "admin-cog:primary-menu",
133
+ renderers: {
134
+ link: "local.main.ui.surface-aware-menu-link-item"
135
+ }
136
+ }
137
+ }
138
+ }
139
+ ]
140
+ },
141
+ contributions: [
142
+ {
143
+ id: "workspaces.workspace.menu.app",
144
+ target: "shell.primary-nav",
145
+ kind: "link",
146
+ surfaces: ["app"],
147
+ order: 50,
148
+ when: "auth.authenticated === true",
149
+ source: "mutations.text#workspaces-web-placement-block"
150
+ },
151
+ {
152
+ id: "workspaces.workspace.menu.admin",
153
+ target: "shell.primary-nav",
154
+ kind: "link",
155
+ surfaces: ["admin"],
156
+ order: 60,
157
+ when: "auth.authenticated === true",
158
+ source: "mutations.text#workspaces-web-placement-block"
159
+ },
160
+ {
161
+ id: "workspaces.profile.menu.surface-switch",
162
+ target: "auth.profile-menu",
163
+ kind: "component",
164
+ surfaces: ["*"],
165
+ order: 100,
166
+ componentToken: "workspaces.web.profile.menu.surface-switch-item",
167
+ when: "auth.authenticated === true",
168
+ source: "mutations.text#workspaces-web-profile-surface-switch-placement"
169
+ },
170
+ {
171
+ id: "workspaces.workspace.selector",
172
+ target: "shell.identity",
173
+ kind: "component",
174
+ surfaces: ["*"],
175
+ order: 200,
176
+ componentToken: "workspaces.web.workspace.selector",
177
+ when: "auth.authenticated === true",
178
+ source: "mutations.text#workspaces-web-placement-block"
179
+ },
180
+ {
181
+ id: "workspaces.account.invites.cue",
182
+ target: "shell.status",
183
+ kind: "component",
184
+ surfaces: ["*"],
185
+ order: 850,
186
+ componentToken: "local.main.account.pending-invites.cue",
187
+ when: "auth.authenticated === true",
188
+ source: "mutations.text#workspaces-web-placement-block"
189
+ },
190
+ {
191
+ id: "workspaces.account.settings.invites",
192
+ target: "settings.sections",
193
+ owner: "account-settings",
194
+ kind: "component",
195
+ surfaces: ["account"],
196
+ order: 400,
197
+ componentToken: "local.main.account-settings.section.invites",
198
+ when: "auth.authenticated === true && workspaceInvitesEnabled === true",
199
+ source: "mutations.text#workspaces-web-account-settings-placement"
200
+ },
201
+ {
202
+ id: "workspaces.workspace.tools.widget",
203
+ target: "shell.status",
204
+ kind: "component",
205
+ surfaces: ["admin"],
206
+ order: 900,
207
+ componentToken: "workspaces.web.workspace.tools.widget",
208
+ source: "mutations.text#workspaces-web-placement-block"
209
+ },
210
+ {
211
+ id: "workspaces.workspace.menu.workspace-settings",
212
+ target: "admin.tools-menu",
213
+ kind: "component",
214
+ surfaces: ["admin"],
215
+ order: 100,
216
+ componentToken: "workspaces.web.workspace-settings.menu-item",
217
+ source: "mutations.text#workspaces-web-placement-block"
218
+ },
219
+ {
220
+ id: "workspaces.workspace.menu.members",
221
+ target: "admin.tools-menu",
222
+ kind: "component",
223
+ surfaces: ["admin"],
224
+ order: 200,
225
+ componentToken: "workspaces.web.workspace-members.menu-item",
226
+ source: "mutations.text#workspaces-web-placement-block"
227
+ },
228
+ ]
229
+ }
230
+ }
231
+ },
232
+ mutations: {
233
+ dependencies: {
234
+ runtime: {
235
+ "@jskit-ai/auth-web": "0.1.148",
236
+ "@jskit-ai/workspaces-core": "0.1.126",
237
+ "@jskit-ai/users-web": "0.1.165"
238
+ },
239
+ dev: {}
240
+ },
241
+ packageJson: {
242
+ scripts: {
243
+ "dev:app": "VITE_SURFACE=app vite",
244
+ "dev:admin": "VITE_SURFACE=admin vite",
245
+ "build:app": "VITE_SURFACE=app vite build",
246
+ "build:admin": "VITE_SURFACE=admin vite build"
247
+ }
248
+ },
249
+ procfile: {},
250
+ files: [
251
+ {
252
+ from: "templates/packages/main/src/client/components/AccountPendingInvitesCue.vue",
253
+ to: "packages/main/src/client/components/AccountPendingInvitesCue.vue",
254
+ ownership: "app",
255
+ reason: "Install app-owned account pending invites cue component scaffold.",
256
+ category: "workspaces-web",
257
+ id: "users-web-main-component-account-pending-invites-cue"
258
+ },
259
+ {
260
+ from: "templates/packages/main/src/client/components/AccountSettingsInvitesSection.vue",
261
+ to: "packages/main/src/client/components/AccountSettingsInvitesSection.vue",
262
+ ownership: "app",
263
+ reason: "Install app-owned account invites section scaffold for multihoming account settings.",
264
+ category: "workspaces-web",
265
+ id: "users-web-main-component-account-settings-invites-section"
266
+ },
267
+ {
268
+ from: "templates/src/pages/invite/[token].vue",
269
+ to: "src/pages/invite/[token].vue",
270
+ ownership: "app",
271
+ reason: "Install public workspace invite acceptance route scaffold.",
272
+ category: "workspaces-web",
273
+ id: "workspaces-web-page-public-invite"
274
+ },
275
+ {
276
+ from: "templates/src/components/WorkspaceNotFoundCard.vue",
277
+ to: "src/components/WorkspaceNotFoundCard.vue",
278
+ ownership: "app",
279
+ reason: "Install app-owned workspace not-found card component used by workspace-dependent surfaces.",
280
+ category: "workspaces-web",
281
+ id: "users-web-component-workspace-not-found-card",
282
+ when: {
283
+ config: "tenancyMode",
284
+ in: ["personal", "workspaces"]
285
+ }
286
+ },
287
+ {
288
+ from: "templates/src/composables/useWorkspaceNotFoundState.js",
289
+ to: "src/composables/useWorkspaceNotFoundState.js",
290
+ ownership: "app",
291
+ reason: "Install app-owned workspace bootstrap status composable for workspace-dependent surfaces.",
292
+ category: "workspaces-web",
293
+ id: "users-web-composable-workspace-not-found-state",
294
+ when: {
295
+ config: "tenancyMode",
296
+ in: ["personal", "workspaces"]
297
+ }
298
+ },
299
+ {
300
+ from: "templates/src/surfaces/app/root.vue",
301
+ toSurface: "app",
302
+ toSurfaceRoot: true,
303
+ ownership: "app",
304
+ reason: "Install workspace app surface wrapper shell for workspaces-web.",
305
+ category: "workspaces-web",
306
+ id: "users-web-page-app-wrapper",
307
+ when: {
308
+ config: "tenancyMode",
309
+ in: ["personal", "workspaces"]
310
+ }
311
+ },
312
+ {
313
+ from: "templates/src/surfaces/app/index.vue",
314
+ toSurface: "app",
315
+ toSurfacePath: "index.vue",
316
+ ownership: "app",
317
+ reason: "Install workspace app surface starter page scaffold for workspaces-web.",
318
+ category: "workspaces-web",
319
+ id: "users-web-page-app-index",
320
+ when: {
321
+ config: "tenancyMode",
322
+ in: ["personal", "workspaces"]
323
+ }
324
+ },
325
+ {
326
+ from: "templates/src/surfaces/admin/root.vue",
327
+ toSurface: "admin",
328
+ toSurfaceRoot: true,
329
+ ownership: "app",
330
+ reason: "Install workspace admin surface wrapper shell for workspaces-web.",
331
+ category: "workspaces-web",
332
+ id: "users-web-page-admin-wrapper",
333
+ when: {
334
+ config: "tenancyMode",
335
+ in: ["personal", "workspaces"]
336
+ }
337
+ },
338
+ {
339
+ from: "templates/src/surfaces/admin/index.vue",
340
+ toSurface: "admin",
341
+ toSurfacePath: "index.vue",
342
+ ownership: "app",
343
+ reason: "Install workspace admin surface starter page scaffold for workspaces-web.",
344
+ category: "workspaces-web",
345
+ id: "users-web-page-admin-index",
346
+ when: {
347
+ config: "tenancyMode",
348
+ in: ["personal", "workspaces"]
349
+ }
350
+ },
351
+ {
352
+ from: "templates/src/pages/admin/members/index.vue",
353
+ toSurface: "admin",
354
+ toSurfacePath: "members/index.vue",
355
+ ownership: "app",
356
+ reason: "Install admin members starter page scaffold for workspaces-web members UI.",
357
+ category: "workspaces-web",
358
+ id: "users-web-page-admin-members",
359
+ when: {
360
+ config: "tenancyMode",
361
+ in: ["personal", "workspaces"]
362
+ }
363
+ },
364
+ {
365
+ from: "templates/src/pages/admin/workspace/settings.vue",
366
+ toSurface: "admin",
367
+ toSurfacePath: "workspace/settings.vue",
368
+ ownership: "app",
369
+ reason: "Install workspace settings shell route scaffold for workspaces-web workspace admin UI.",
370
+ category: "workspaces-web",
371
+ id: "users-web-page-admin-workspace-settings-shell",
372
+ when: {
373
+ config: "tenancyMode",
374
+ in: ["personal", "workspaces"]
375
+ }
376
+ },
377
+ {
378
+ from: "templates/src/pages/admin/workspace/settings/index.vue",
379
+ toSurface: "admin",
380
+ toSurfacePath: "workspace/settings/index.vue",
381
+ ownership: "app",
382
+ reason: "Install workspace settings index stub scaffold for app-owned landing or redirect behavior.",
383
+ category: "workspaces-web",
384
+ id: "users-web-page-admin-workspace-settings",
385
+ when: {
386
+ config: "tenancyMode",
387
+ in: ["personal", "workspaces"]
388
+ }
389
+ }
390
+ ],
391
+ text: [
392
+ {
393
+ op: "append-text",
394
+ file: "src/placement.js",
395
+ position: "bottom",
396
+ skipIfContains: "id: \"workspaces.profile.menu.surface-switch\"",
397
+ value:
398
+ "\naddPlacement({\n id: \"workspaces.profile.menu.surface-switch\",\n target: \"auth.profile-menu\",\n kind: \"component\",\n surfaces: [\"*\"],\n order: 100,\n componentToken: \"workspaces.web.profile.menu.surface-switch-item\",\n when: ({ auth }) => auth?.authenticated === true\n});\n",
399
+ reason: "Append workspaces-web profile surface switch placement into app-owned placement registry.",
400
+ category: "workspaces-web",
401
+ id: "workspaces-web-profile-surface-switch-placement",
402
+ when: {
403
+ config: "tenancyMode",
404
+ in: ["personal", "workspaces"]
405
+ }
406
+ },
407
+ {
408
+ op: "append-text",
409
+ file: "src/placement.js",
410
+ position: "bottom",
411
+ skipIfContains: "id: \"workspaces.workspace.selector\"",
412
+ value: "\naddPlacement({\n id: \"workspaces.workspace.menu.app\",\n target: \"shell.primary-nav\",\n kind: \"link\",\n surfaces: [\"app\"],\n order: 50,\n props: {\n label: \"Home\",\n surface: \"app\",\n scopedSuffix: \"/\",\n unscopedSuffix: \"/\",\n exact: true\n },\n when: ({ auth }) => auth?.authenticated === true\n});\n\naddPlacement({\n id: \"workspaces.workspace.menu.admin\",\n target: \"shell.primary-nav\",\n kind: \"link\",\n surfaces: [\"admin\"],\n order: 60,\n props: {\n label: \"Home\",\n surface: \"admin\",\n scopedSuffix: \"/\",\n unscopedSuffix: \"/\",\n exact: true\n },\n when: ({ auth }) => auth?.authenticated === true\n});\n\naddPlacement({\n id: \"workspaces.workspace.selector\",\n target: \"shell.identity\",\n kind: \"component\",\n surfaces: [\"*\"],\n order: 200,\n componentToken: \"workspaces.web.workspace.selector\",\n props: {\n allowOnNonWorkspaceSurface: true,\n targetSurfaceId: \"app\"\n },\n when: ({ auth }) => auth?.authenticated === true\n});\n\naddPlacement({\n id: \"workspaces.account.invites.cue\",\n target: \"shell.status\",\n kind: \"component\",\n surfaces: [\"*\"],\n order: 850,\n componentToken: \"local.main.account.pending-invites.cue\",\n when: ({ auth }) => auth?.authenticated === true\n});\n\naddPlacement({\n id: \"workspaces.workspace.tools.widget\",\n target: \"shell.status\",\n kind: \"component\",\n surfaces: [\"admin\"],\n order: 900,\n componentToken: \"workspaces.web.workspace.tools.widget\"\n});\n\naddPlacement({\n id: \"workspaces.workspace.menu.workspace-settings\",\n target: \"admin.tools-menu\",\n kind: \"component\",\n surfaces: [\"admin\"],\n order: 100,\n componentToken: \"workspaces.web.workspace-settings.menu-item\"\n});\n\naddPlacement({\n id: \"workspaces.workspace.menu.members\",\n target: \"admin.tools-menu\",\n kind: \"component\",\n surfaces: [\"admin\"],\n order: 200,\n componentToken: \"workspaces.web.workspace-members.menu-item\"\n});\n",
413
+ reason: "Append workspace placement entries into app-owned placement registry.",
414
+ category: "workspaces-web",
415
+ id: "workspaces-web-placement-block",
416
+ when: {
417
+ config: "tenancyMode",
418
+ in: ["personal", "workspaces"]
419
+ }
420
+ },
421
+ {
422
+ op: "append-text",
423
+ file: "src/placementTopology.js",
424
+ position: "bottom",
425
+ skipIfContains: "id: \"admin.tools-menu\"",
426
+ value: "\naddPlacementTopology({\n id: \"page.section-nav\",\n owner: \"admin-settings\",\n description: \"Navigation between workspace admin settings child pages.\",\n surfaces: [\"admin\"],\n variants: {\n compact: {\n outlet: \"admin-settings:primary-menu\",\n renderers: {\n link: \"local.main.ui.surface-aware-menu-link-item\"\n }\n },\n medium: {\n outlet: \"admin-settings:primary-menu\",\n renderers: {\n link: \"local.main.ui.surface-aware-menu-link-item\"\n }\n },\n expanded: {\n outlet: \"admin-settings:primary-menu\",\n renderers: {\n link: \"local.main.ui.surface-aware-menu-link-item\"\n }\n }\n }\n});\n\naddPlacementTopology({\n id: \"admin.tools-menu\",\n description: \"Admin surface tools menu actions.\",\n surfaces: [\"admin\"],\n variants: {\n compact: {\n outlet: \"admin-cog:primary-menu\",\n renderers: {\n link: \"local.main.ui.surface-aware-menu-link-item\"\n }\n },\n medium: {\n outlet: \"admin-cog:primary-menu\",\n renderers: {\n link: \"local.main.ui.surface-aware-menu-link-item\"\n }\n },\n expanded: {\n outlet: \"admin-cog:primary-menu\",\n renderers: {\n link: \"local.main.ui.surface-aware-menu-link-item\"\n }\n }\n }\n});\n",
427
+ reason: "Append workspaces-web admin semantic topology into app-owned placement topology.",
428
+ category: "workspaces-web",
429
+ id: "workspaces-web-admin-placement-topology",
430
+ when: {
431
+ config: "tenancyMode",
432
+ in: ["personal", "workspaces"]
433
+ }
434
+ },
435
+ {
436
+ op: "append-text",
437
+ file: "src/placement.js",
438
+ position: "bottom",
439
+ skipIfContains: "id: \"workspaces.account.settings.invites\"",
440
+ value:
441
+ "\naddPlacement({\n id: \"workspaces.account.settings.invites\",\n target: \"settings.sections\",\n owner: \"account-settings\",\n kind: \"component\",\n surfaces: [\"account\"],\n order: 400,\n componentToken: \"local.main.account-settings.section.invites\",\n props: {\n title: \"Invites\",\n value: \"invites\",\n usesSharedRuntime: false\n },\n when: ({ auth, workspaceInvitesEnabled }) => auth?.authenticated === true && workspaceInvitesEnabled === true\n});\n",
442
+ reason: "Append workspaces-web account settings invites section placement into app-owned placement registry.",
443
+ category: "workspaces-web",
444
+ id: "workspaces-web-account-settings-placement",
445
+ when: {
446
+ config: "tenancyMode",
447
+ in: ["personal", "workspaces"]
448
+ }
449
+ }
450
+ ],
451
+ source: [
452
+ {
453
+ op: "ensure-import",
454
+ file: "packages/main/src/client/providers/MainClientProvider.js",
455
+ defaultImport: "AccountPendingInvitesCue",
456
+ from: "../components/AccountPendingInvitesCue.vue",
457
+ reason: "Bind app-owned account pending invites cue component into local main client provider imports.",
458
+ category: "workspaces-web",
459
+ id: "users-web-main-client-provider-account-invites-import"
460
+ },
461
+ {
462
+ op: "ensure-import",
463
+ file: "packages/main/src/client/providers/MainClientProvider.js",
464
+ defaultImport: "AccountSettingsInvitesSection",
465
+ from: "../components/AccountSettingsInvitesSection.vue",
466
+ reason: "Bind app-owned account invites section component into local main client provider imports.",
467
+ category: "workspaces-web",
468
+ id: "users-web-main-client-provider-account-settings-section-import"
469
+ },
470
+ {
471
+ op: "ensure-call",
472
+ file: "packages/main/src/client/providers/MainClientProvider.js",
473
+ callee: "registerMainClientComponent",
474
+ args: ["\"local.main.account.pending-invites.cue\"", "() => AccountPendingInvitesCue"],
475
+ beforeClass: "MainClientProvider",
476
+ reason: "Bind app-owned account pending invites cue component token into local main client provider registry.",
477
+ category: "workspaces-web",
478
+ id: "users-web-main-client-provider-account-invites-register"
479
+ },
480
+ {
481
+ op: "ensure-call",
482
+ file: "packages/main/src/client/providers/MainClientProvider.js",
483
+ callee: "registerMainClientComponent",
484
+ args: ["\"local.main.account-settings.section.invites\"", "() => AccountSettingsInvitesSection"],
485
+ beforeClass: "MainClientProvider",
486
+ reason: "Bind app-owned account invites section component token into local main client provider registry.",
487
+ category: "workspaces-web",
488
+ id: "users-web-main-client-provider-account-settings-section-register"
489
+ }
490
+ ]
491
+ }
492
+ });