@jskit-ai/jskit-catalog 0.1.45 → 0.1.47

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 (2) hide show
  1. package/catalog/packages.json +382 -261
  2. package/package.json +1 -1
@@ -6,11 +6,11 @@
6
6
  "packages": [
7
7
  {
8
8
  "packageId": "@jskit-ai/assistant",
9
- "version": "0.1.46",
9
+ "version": "0.1.48",
10
10
  "descriptor": {
11
11
  "packageVersion": 1,
12
12
  "packageId": "@jskit-ai/assistant",
13
- "version": "0.1.46",
13
+ "version": "0.1.48",
14
14
  "kind": "generator",
15
15
  "description": "Install assistant runtime/config for one surface and scaffold assistant pages at explicit target files.",
16
16
  "options": {
@@ -356,11 +356,11 @@
356
356
  },
357
357
  {
358
358
  "packageId": "@jskit-ai/assistant-core",
359
- "version": "0.1.13",
359
+ "version": "0.1.15",
360
360
  "descriptor": {
361
361
  "packageVersion": 1,
362
362
  "packageId": "@jskit-ai/assistant-core",
363
- "version": "0.1.13",
363
+ "version": "0.1.15",
364
364
  "kind": "runtime",
365
365
  "description": "Reusable assistant client/server/shared primitives without surface-specific routes or settings ownership.",
366
366
  "dependsOn": [
@@ -406,9 +406,9 @@
406
406
  "mutations": {
407
407
  "dependencies": {
408
408
  "runtime": {
409
- "@jskit-ai/http-runtime": "0.1.36",
410
- "@jskit-ai/kernel": "0.1.37",
411
- "@jskit-ai/users-core": "0.1.47",
409
+ "@jskit-ai/http-runtime": "0.1.38",
410
+ "@jskit-ai/kernel": "0.1.39",
411
+ "@jskit-ai/users-core": "0.1.49",
412
412
  "@tanstack/vue-query": "^5.90.5",
413
413
  "dompurify": "^3.3.3",
414
414
  "marked": "^17.0.4",
@@ -429,11 +429,11 @@
429
429
  },
430
430
  {
431
431
  "packageId": "@jskit-ai/assistant-runtime",
432
- "version": "0.1.8",
432
+ "version": "0.1.10",
433
433
  "descriptor": {
434
434
  "packageVersion": 1,
435
435
  "packageId": "@jskit-ai/assistant-runtime",
436
- "version": "0.1.8",
436
+ "version": "0.1.10",
437
437
  "kind": "runtime",
438
438
  "description": "Shared assistant runtime with per-surface assistant registration.",
439
439
  "dependsOn": [
@@ -442,7 +442,9 @@
442
442
  "@jskit-ai/http-runtime",
443
443
  "@jskit-ai/shell-web",
444
444
  "@jskit-ai/users-core",
445
- "@jskit-ai/users-web"
445
+ "@jskit-ai/users-web",
446
+ "@jskit-ai/workspaces-core",
447
+ "@jskit-ai/workspaces-web"
446
448
  ],
447
449
  "capabilities": {
448
450
  "provides": [
@@ -454,7 +456,9 @@
454
456
  "auth.policy",
455
457
  "runtime.http-client",
456
458
  "users.core",
457
- "users.web"
459
+ "users.web",
460
+ "workspaces.core",
461
+ "workspaces.web"
458
462
  ]
459
463
  },
460
464
  "runtime": {
@@ -508,13 +512,15 @@
508
512
  "mutations": {
509
513
  "dependencies": {
510
514
  "runtime": {
511
- "@jskit-ai/assistant-core": "0.1.13",
512
- "@jskit-ai/database-runtime": "0.1.37",
513
- "@jskit-ai/http-runtime": "0.1.36",
514
- "@jskit-ai/kernel": "0.1.37",
515
- "@jskit-ai/shell-web": "0.1.36",
516
- "@jskit-ai/users-core": "0.1.47",
517
- "@jskit-ai/users-web": "0.1.52",
515
+ "@jskit-ai/assistant-core": "0.1.15",
516
+ "@jskit-ai/database-runtime": "0.1.39",
517
+ "@jskit-ai/http-runtime": "0.1.38",
518
+ "@jskit-ai/kernel": "0.1.39",
519
+ "@jskit-ai/shell-web": "0.1.38",
520
+ "@jskit-ai/users-core": "0.1.49",
521
+ "@jskit-ai/users-web": "0.1.54",
522
+ "@jskit-ai/workspaces-core": "0.1.15",
523
+ "@jskit-ai/workspaces-web": "0.1.15",
518
524
  "@tanstack/vue-query": "^5.90.5",
519
525
  "vuetify": "^4.0.0"
520
526
  },
@@ -571,11 +577,11 @@
571
577
  },
572
578
  {
573
579
  "packageId": "@jskit-ai/auth-core",
574
- "version": "0.1.36",
580
+ "version": "0.1.38",
575
581
  "descriptor": {
576
582
  "packageVersion": 1,
577
583
  "packageId": "@jskit-ai/auth-core",
578
- "version": "0.1.36",
584
+ "version": "0.1.38",
579
585
  "kind": "runtime",
580
586
  "dependsOn": [
581
587
  "@jskit-ai/value-app-config-shared"
@@ -643,7 +649,7 @@
643
649
  "mutations": {
644
650
  "dependencies": {
645
651
  "runtime": {
646
- "@jskit-ai/kernel": "0.1.37",
652
+ "@jskit-ai/kernel": "0.1.39",
647
653
  "@fastify/cookie": "^11.0.2",
648
654
  "@fastify/csrf-protection": "^7.1.0",
649
655
  "@fastify/rate-limit": "^10.3.0"
@@ -661,11 +667,11 @@
661
667
  },
662
668
  {
663
669
  "packageId": "@jskit-ai/auth-provider-supabase-core",
664
- "version": "0.1.36",
670
+ "version": "0.1.38",
665
671
  "descriptor": {
666
672
  "packageVersion": 1,
667
673
  "packageId": "@jskit-ai/auth-provider-supabase-core",
668
- "version": "0.1.36",
674
+ "version": "0.1.38",
669
675
  "kind": "runtime",
670
676
  "options": {
671
677
  "auth-supabase-url": {
@@ -747,8 +753,8 @@
747
753
  "mutations": {
748
754
  "dependencies": {
749
755
  "runtime": {
750
- "@jskit-ai/auth-core": "0.1.36",
751
- "@jskit-ai/kernel": "0.1.37",
756
+ "@jskit-ai/auth-core": "0.1.38",
757
+ "@jskit-ai/kernel": "0.1.39",
752
758
  "dotenv": "^16.4.5",
753
759
  "@supabase/supabase-js": "^2.57.4",
754
760
  "jose": "^6.1.0"
@@ -813,11 +819,11 @@
813
819
  },
814
820
  {
815
821
  "packageId": "@jskit-ai/auth-web",
816
- "version": "0.1.38",
822
+ "version": "0.1.40",
817
823
  "descriptor": {
818
824
  "packageVersion": 1,
819
825
  "packageId": "@jskit-ai/auth-web",
820
- "version": "0.1.38",
826
+ "version": "0.1.40",
821
827
  "kind": "runtime",
822
828
  "description": "Auth web module: Fastify auth routes plus web login/sign-out scaffolds.",
823
829
  "dependsOn": [
@@ -1044,10 +1050,10 @@
1044
1050
  "@tanstack/vue-query": "5.92.12",
1045
1051
  "@mdi/js": "^7.4.47",
1046
1052
  "@fastify/type-provider-typebox": "^6.1.0",
1047
- "@jskit-ai/auth-core": "0.1.36",
1048
- "@jskit-ai/http-runtime": "0.1.36",
1049
- "@jskit-ai/kernel": "0.1.37",
1050
- "@jskit-ai/shell-web": "0.1.36",
1053
+ "@jskit-ai/auth-core": "0.1.38",
1054
+ "@jskit-ai/http-runtime": "0.1.38",
1055
+ "@jskit-ai/kernel": "0.1.39",
1056
+ "@jskit-ai/shell-web": "0.1.38",
1051
1057
  "vuetify": "^4.0.0"
1052
1058
  },
1053
1059
  "dev": {}
@@ -1115,26 +1121,149 @@
1115
1121
  }
1116
1122
  }
1117
1123
  },
1124
+ {
1125
+ "packageId": "@jskit-ai/console-core",
1126
+ "version": "0.1.2",
1127
+ "descriptor": {
1128
+ "packageVersion": 1,
1129
+ "packageId": "@jskit-ai/console-core",
1130
+ "version": "0.1.2",
1131
+ "kind": "runtime",
1132
+ "description": "Console runtime: console settings schema, bootstrap flags, actions, and HTTP routes.",
1133
+ "dependsOn": [
1134
+ "@jskit-ai/database-runtime",
1135
+ "@jskit-ai/http-runtime",
1136
+ "@jskit-ai/users-core"
1137
+ ],
1138
+ "capabilities": {
1139
+ "provides": [
1140
+ "console.core",
1141
+ "console.server-routes"
1142
+ ],
1143
+ "requires": [
1144
+ "runtime.actions",
1145
+ "runtime.database",
1146
+ "users.core"
1147
+ ]
1148
+ },
1149
+ "runtime": {
1150
+ "server": {
1151
+ "providers": [
1152
+ {
1153
+ "entrypoint": "src/server/ConsoleCoreServiceProvider.js",
1154
+ "export": "ConsoleCoreServiceProvider"
1155
+ }
1156
+ ]
1157
+ },
1158
+ "client": {
1159
+ "providers": []
1160
+ }
1161
+ },
1162
+ "metadata": {
1163
+ "apiSummary": {
1164
+ "surfaces": [
1165
+ {
1166
+ "subpath": "./server",
1167
+ "summary": "Exports ConsoleCoreServiceProvider plus console settings services, routes, and action definitions."
1168
+ },
1169
+ {
1170
+ "subpath": "./shared",
1171
+ "summary": "Exports shared console settings resource and field registration helpers."
1172
+ },
1173
+ {
1174
+ "subpath": "./client",
1175
+ "summary": "Exports no runtime API today (reserved client entrypoint)."
1176
+ }
1177
+ ],
1178
+ "containerTokens": {
1179
+ "server": [],
1180
+ "client": []
1181
+ }
1182
+ },
1183
+ "server": {
1184
+ "routes": [
1185
+ {
1186
+ "method": "GET",
1187
+ "path": "/api/console/settings",
1188
+ "summary": "Get console settings."
1189
+ },
1190
+ {
1191
+ "method": "PATCH",
1192
+ "path": "/api/console/settings",
1193
+ "summary": "Update console settings."
1194
+ }
1195
+ ]
1196
+ }
1197
+ },
1198
+ "mutations": {
1199
+ "dependencies": {
1200
+ "runtime": {
1201
+ "@jskit-ai/database-runtime": "0.1.39",
1202
+ "@jskit-ai/http-runtime": "0.1.38",
1203
+ "@jskit-ai/kernel": "0.1.39",
1204
+ "@jskit-ai/users-core": "0.1.49",
1205
+ "typebox": "^1.0.81"
1206
+ },
1207
+ "dev": {}
1208
+ },
1209
+ "packageJson": {
1210
+ "scripts": {}
1211
+ },
1212
+ "procfile": {},
1213
+ "files": [
1214
+ {
1215
+ "op": "install-migration",
1216
+ "from": "templates/migrations/console_core_generic_initial.cjs",
1217
+ "toDir": "migrations",
1218
+ "extension": ".cjs",
1219
+ "reason": "Install console settings schema migration.",
1220
+ "category": "migration",
1221
+ "id": "console-core-generic-initial-schema"
1222
+ },
1223
+ {
1224
+ "from": "templates/packages/main/src/shared/resources/consoleSettingsFields.js",
1225
+ "to": "packages/main/src/shared/resources/consoleSettingsFields.js",
1226
+ "preserveOnRemove": true,
1227
+ "reason": "Install app-owned console settings field definitions.",
1228
+ "category": "console-core",
1229
+ "id": "console-core-app-owned-console-settings-fields"
1230
+ }
1231
+ ],
1232
+ "text": [
1233
+ {
1234
+ "op": "append-text",
1235
+ "file": "packages/main/src/shared/index.js",
1236
+ "position": "top",
1237
+ "skipIfContains": "import \"./resources/consoleSettingsFields.js\";",
1238
+ "value": "import \"./resources/consoleSettingsFields.js\";\n",
1239
+ "reason": "Load app-owned console settings field definitions inside the main shared module.",
1240
+ "category": "console-core",
1241
+ "id": "console-core-main-shared-console-settings-field-import"
1242
+ }
1243
+ ]
1244
+ }
1245
+ }
1246
+ },
1118
1247
  {
1119
1248
  "packageId": "@jskit-ai/console-web",
1120
- "version": "0.1.4",
1249
+ "version": "0.1.7",
1121
1250
  "descriptor": {
1122
1251
  "packageVersion": 1,
1123
1252
  "packageId": "@jskit-ai/console-web",
1124
- "version": "0.1.4",
1253
+ "version": "0.1.7",
1125
1254
  "kind": "runtime",
1126
1255
  "description": "Authenticated console surface scaffold and surface policy wiring.",
1127
1256
  "dependsOn": [
1128
1257
  "@jskit-ai/auth-web",
1129
- "@jskit-ai/shell-web",
1130
- "@jskit-ai/users-core"
1258
+ "@jskit-ai/console-core",
1259
+ "@jskit-ai/shell-web"
1131
1260
  ],
1132
1261
  "capabilities": {
1133
1262
  "provides": [
1134
1263
  "console.web"
1135
1264
  ],
1136
1265
  "requires": [
1137
- "users.core"
1266
+ "console.core"
1138
1267
  ]
1139
1268
  },
1140
1269
  "runtime": {
@@ -1157,14 +1286,41 @@
1157
1286
  "server": [],
1158
1287
  "client": []
1159
1288
  }
1289
+ },
1290
+ "ui": {
1291
+ "placements": {
1292
+ "outlets": [
1293
+ {
1294
+ "target": "console-settings:primary-menu",
1295
+ "defaultLinkComponentToken": "local.main.ui.surface-aware-menu-link-item",
1296
+ "surfaces": [
1297
+ "console"
1298
+ ],
1299
+ "source": "templates/src/pages/console/settings.vue"
1300
+ }
1301
+ ],
1302
+ "contributions": [
1303
+ {
1304
+ "id": "console.web.menu.settings",
1305
+ "target": "shell-layout:primary-menu",
1306
+ "surfaces": [
1307
+ "console"
1308
+ ],
1309
+ "order": 100,
1310
+ "componentToken": "local.main.ui.menu-link-item",
1311
+ "when": "auth.authenticated === true",
1312
+ "source": "mutations.text#console-web-console-settings-placement"
1313
+ }
1314
+ ]
1315
+ }
1160
1316
  }
1161
1317
  },
1162
1318
  "mutations": {
1163
1319
  "dependencies": {
1164
1320
  "runtime": {
1165
- "@jskit-ai/auth-web": "0.1.38",
1166
- "@jskit-ai/shell-web": "0.1.36",
1167
- "@jskit-ai/users-core": "0.1.47"
1321
+ "@jskit-ai/auth-web": "0.1.40",
1322
+ "@jskit-ai/console-core": "0.1.2",
1323
+ "@jskit-ai/shell-web": "0.1.38"
1168
1324
  },
1169
1325
  "dev": {}
1170
1326
  },
@@ -1194,6 +1350,24 @@
1194
1350
  "reason": "Install shell-driven console page starter.",
1195
1351
  "category": "console-web",
1196
1352
  "id": "console-web-page-console"
1353
+ },
1354
+ {
1355
+ "from": "templates/src/pages/console/settings.vue",
1356
+ "toSurface": "console",
1357
+ "toSurfacePath": "settings.vue",
1358
+ "ownership": "app",
1359
+ "reason": "Install console settings shell route scaffold for console-web.",
1360
+ "category": "console-web",
1361
+ "id": "console-web-page-console-settings-shell"
1362
+ },
1363
+ {
1364
+ "from": "templates/src/pages/console/settings/index.vue",
1365
+ "toSurface": "console",
1366
+ "toSurfacePath": "settings/index.vue",
1367
+ "ownership": "app",
1368
+ "reason": "Install console settings index stub scaffold for app-owned landing or redirect behavior.",
1369
+ "category": "console-web",
1370
+ "id": "console-web-page-console-settings"
1197
1371
  }
1198
1372
  ],
1199
1373
  "text": [
@@ -1212,10 +1386,20 @@
1212
1386
  "file": "config/public.js",
1213
1387
  "position": "bottom",
1214
1388
  "skipIfContains": "config.surfaceDefinitions.console = {",
1215
- "value": "\nconfig.surfaceDefinitions.console = {\n id: \"console\",\n label: \"Console\",\n pagesRoot: \"console\",\n enabled: true,\n requiresAuth: true,\n requiresWorkspace: false,\n accessPolicyId: \"console_owner\",\n origin: \"\"\n};\n",
1389
+ "value": "\nconfig.surfaceDefinitions.console = {\n id: \"console\",\n label: \"Console\",\n pagesRoot: \"console\",\n enabled: true,\n requiresAuth: true,\n requiresWorkspace: false,\n accessPolicyId: \"console_owner\",\n icon: \"mdi-console-network-outline\",\n origin: \"\"\n};\n",
1216
1390
  "reason": "Register console surface definition once console-web is installed.",
1217
1391
  "category": "console-web",
1218
1392
  "id": "console-web-surface-config-console"
1393
+ },
1394
+ {
1395
+ "op": "append-text",
1396
+ "file": "src/placement.js",
1397
+ "position": "bottom",
1398
+ "skipIfContains": "id: \"console.web.menu.settings\"",
1399
+ "value": "\naddPlacement({\n id: \"console.web.menu.settings\",\n target: \"shell-layout:primary-menu\",\n surfaces: [\"console\"],\n order: 100,\n componentToken: \"local.main.ui.menu-link-item\",\n props: {\n label: \"Settings\",\n to: \"/console/settings\",\n icon: \"mdi-cog-outline\"\n },\n when: ({ auth }) => Boolean(auth?.authenticated)\n});\n",
1400
+ "reason": "Append console-web settings menu placement into app-owned placement registry.",
1401
+ "category": "console-web",
1402
+ "id": "console-web-console-settings-placement"
1219
1403
  }
1220
1404
  ]
1221
1405
  }
@@ -1223,11 +1407,11 @@
1223
1407
  },
1224
1408
  {
1225
1409
  "packageId": "@jskit-ai/crud-core",
1226
- "version": "0.1.45",
1410
+ "version": "0.1.47",
1227
1411
  "descriptor": {
1228
1412
  "packageVersion": 1,
1229
1413
  "packageId": "@jskit-ai/crud-core",
1230
- "version": "0.1.45",
1414
+ "version": "0.1.47",
1231
1415
  "kind": "runtime",
1232
1416
  "description": "Shared CRUD helpers used by CRUD modules.",
1233
1417
  "dependsOn": [
@@ -1254,7 +1438,7 @@
1254
1438
  "mutations": {
1255
1439
  "dependencies": {
1256
1440
  "runtime": {
1257
- "@jskit-ai/crud-core": "0.1.45"
1441
+ "@jskit-ai/crud-core": "0.1.47"
1258
1442
  },
1259
1443
  "dev": {}
1260
1444
  },
@@ -1268,11 +1452,11 @@
1268
1452
  },
1269
1453
  {
1270
1454
  "packageId": "@jskit-ai/crud-server-generator",
1271
- "version": "0.1.45",
1455
+ "version": "0.1.47",
1272
1456
  "descriptor": {
1273
1457
  "packageVersion": 1,
1274
1458
  "packageId": "@jskit-ai/crud-server-generator",
1275
- "version": "0.1.45",
1459
+ "version": "0.1.47",
1276
1460
  "kind": "generator",
1277
1461
  "description": "CRUD server generator with routes, actions, and persistence scaffolding.",
1278
1462
  "options": {
@@ -1430,13 +1614,13 @@
1430
1614
  "mutations": {
1431
1615
  "dependencies": {
1432
1616
  "runtime": {
1433
- "@jskit-ai/auth-core": "0.1.36",
1434
- "@jskit-ai/crud-core": "0.1.45",
1435
- "@jskit-ai/database-runtime": "0.1.37",
1436
- "@jskit-ai/http-runtime": "0.1.36",
1437
- "@jskit-ai/kernel": "0.1.37",
1438
- "@jskit-ai/realtime": "0.1.36",
1439
- "@jskit-ai/users-core": "0.1.47",
1617
+ "@jskit-ai/auth-core": "0.1.38",
1618
+ "@jskit-ai/crud-core": "0.1.47",
1619
+ "@jskit-ai/database-runtime": "0.1.39",
1620
+ "@jskit-ai/http-runtime": "0.1.38",
1621
+ "@jskit-ai/kernel": "0.1.39",
1622
+ "@jskit-ai/realtime": "0.1.38",
1623
+ "@jskit-ai/users-core": "0.1.49",
1440
1624
  "@local/${option:namespace|kebab}": "file:packages/${option:namespace|kebab}",
1441
1625
  "typebox": "^1.0.81"
1442
1626
  },
@@ -1583,11 +1767,11 @@
1583
1767
  },
1584
1768
  {
1585
1769
  "packageId": "@jskit-ai/crud-ui-generator",
1586
- "version": "0.1.20",
1770
+ "version": "0.1.22",
1587
1771
  "descriptor": {
1588
1772
  "packageVersion": 1,
1589
1773
  "packageId": "@jskit-ai/crud-ui-generator",
1590
- "version": "0.1.20",
1774
+ "version": "0.1.22",
1591
1775
  "kind": "generator",
1592
1776
  "description": "Generate CRUD route trees from resource validators at an explicit route root relative to src/pages/.",
1593
1777
  "options": {
@@ -1762,7 +1946,7 @@
1762
1946
  "mutations": {
1763
1947
  "dependencies": {
1764
1948
  "runtime": {
1765
- "@jskit-ai/users-web": "0.1.52"
1949
+ "@jskit-ai/users-web": "0.1.54"
1766
1950
  },
1767
1951
  "dev": {}
1768
1952
  },
@@ -1974,7 +2158,7 @@
1974
2158
  "file": "src/placement.js",
1975
2159
  "position": "bottom",
1976
2160
  "skipIfContains": "__JSKIT_UI_MENU_MARKER__",
1977
- "value": "\n// __JSKIT_UI_MENU_MARKER__\n{\n addPlacement({\n id: \"__JSKIT_UI_MENU_PLACEMENT_ID__\",\n target: \"__JSKIT_UI_MENU_PLACEMENT_TARGET__\",\n surfaces: [\"__JSKIT_UI_SURFACE_ID__\"],\n order: 155,\n componentToken: \"__JSKIT_UI_MENU_COMPONENT_TOKEN__\",\n props: {\n label: \"__JSKIT_UI_MENU_LABEL__\",\n surface: \"__JSKIT_UI_SURFACE_ID__\",\n workspaceSuffix: \"__JSKIT_UI_MENU_WORKSPACE_SUFFIX__\",\n nonWorkspaceSuffix: \"__JSKIT_UI_MENU_NON_WORKSPACE_SUFFIX__\",\n__JSKIT_UI_MENU_TO_PROP_LINE__ },\n__JSKIT_UI_MENU_WHEN_LINE__ });\n}\n",
2161
+ "value": "\n// __JSKIT_UI_MENU_MARKER__\n{\n addPlacement({\n id: \"__JSKIT_UI_MENU_PLACEMENT_ID__\",\n target: \"__JSKIT_UI_MENU_PLACEMENT_TARGET__\",\n surfaces: [\"__JSKIT_UI_SURFACE_ID__\"],\n order: 155,\n componentToken: \"__JSKIT_UI_MENU_COMPONENT_TOKEN__\",\n props: {\n label: \"__JSKIT_UI_MENU_LABEL__\",\n surface: \"__JSKIT_UI_SURFACE_ID__\",\n scopedSuffix: \"__JSKIT_UI_MENU_WORKSPACE_SUFFIX__\",\n unscopedSuffix: \"__JSKIT_UI_MENU_NON_WORKSPACE_SUFFIX__\",\n__JSKIT_UI_MENU_TO_PROP_LINE__ },\n__JSKIT_UI_MENU_WHEN_LINE__ });\n}\n",
1978
2162
  "reason": "Append generated CRUD list-page placement.",
1979
2163
  "category": "crud-ui-generator",
1980
2164
  "id": "crud-ui-placement-menu",
@@ -1995,11 +2179,11 @@
1995
2179
  },
1996
2180
  {
1997
2181
  "packageId": "@jskit-ai/database-runtime",
1998
- "version": "0.1.37",
2182
+ "version": "0.1.39",
1999
2183
  "descriptor": {
2000
2184
  "packageVersion": 1,
2001
2185
  "packageId": "@jskit-ai/database-runtime",
2002
- "version": "0.1.37",
2186
+ "version": "0.1.39",
2003
2187
  "kind": "runtime",
2004
2188
  "dependsOn": [
2005
2189
  "@jskit-ai/kernel"
@@ -2056,7 +2240,7 @@
2056
2240
  "mutations": {
2057
2241
  "dependencies": {
2058
2242
  "runtime": {
2059
- "@jskit-ai/kernel": "0.1.37",
2243
+ "@jskit-ai/kernel": "0.1.39",
2060
2244
  "dotenv": "^16.4.5",
2061
2245
  "knex": "^3.1.0"
2062
2246
  },
@@ -2091,11 +2275,11 @@
2091
2275
  },
2092
2276
  {
2093
2277
  "packageId": "@jskit-ai/database-runtime-mysql",
2094
- "version": "0.1.36",
2278
+ "version": "0.1.38",
2095
2279
  "descriptor": {
2096
2280
  "packageVersion": 1,
2097
2281
  "packageId": "@jskit-ai/database-runtime-mysql",
2098
- "version": "0.1.36",
2282
+ "version": "0.1.38",
2099
2283
  "kind": "runtime",
2100
2284
  "options": {
2101
2285
  "db-host": {
@@ -2185,7 +2369,7 @@
2185
2369
  "mutations": {
2186
2370
  "dependencies": {
2187
2371
  "runtime": {
2188
- "@jskit-ai/database-runtime": "0.1.37",
2372
+ "@jskit-ai/database-runtime": "0.1.39",
2189
2373
  "mysql2": "^3.11.2"
2190
2374
  },
2191
2375
  "dev": {}
@@ -2256,11 +2440,11 @@
2256
2440
  },
2257
2441
  {
2258
2442
  "packageId": "@jskit-ai/database-runtime-postgres",
2259
- "version": "0.1.36",
2443
+ "version": "0.1.38",
2260
2444
  "descriptor": {
2261
2445
  "packageVersion": 1,
2262
2446
  "packageId": "@jskit-ai/database-runtime-postgres",
2263
- "version": "0.1.36",
2447
+ "version": "0.1.38",
2264
2448
  "kind": "runtime",
2265
2449
  "options": {
2266
2450
  "db-host": {
@@ -2350,7 +2534,7 @@
2350
2534
  "mutations": {
2351
2535
  "dependencies": {
2352
2536
  "runtime": {
2353
- "@jskit-ai/database-runtime": "0.1.37",
2537
+ "@jskit-ai/database-runtime": "0.1.39",
2354
2538
  "pg": "^8.13.1"
2355
2539
  },
2356
2540
  "dev": {}
@@ -2421,11 +2605,11 @@
2421
2605
  },
2422
2606
  {
2423
2607
  "packageId": "@jskit-ai/http-runtime",
2424
- "version": "0.1.36",
2608
+ "version": "0.1.38",
2425
2609
  "descriptor": {
2426
2610
  "packageVersion": 1,
2427
2611
  "packageId": "@jskit-ai/http-runtime",
2428
- "version": "0.1.36",
2612
+ "version": "0.1.38",
2429
2613
  "kind": "runtime",
2430
2614
  "dependsOn": [],
2431
2615
  "capabilities": {
@@ -2491,7 +2675,7 @@
2491
2675
  "mutations": {
2492
2676
  "dependencies": {
2493
2677
  "runtime": {
2494
- "@jskit-ai/kernel": "0.1.37",
2678
+ "@jskit-ai/kernel": "0.1.39",
2495
2679
  "@fastify/type-provider-typebox": "^6.1.0",
2496
2680
  "typebox": "^1.0.81"
2497
2681
  },
@@ -2507,11 +2691,11 @@
2507
2691
  },
2508
2692
  {
2509
2693
  "packageId": "@jskit-ai/realtime",
2510
- "version": "0.1.36",
2694
+ "version": "0.1.38",
2511
2695
  "descriptor": {
2512
2696
  "packageVersion": 1,
2513
2697
  "packageId": "@jskit-ai/realtime",
2514
- "version": "0.1.36",
2698
+ "version": "0.1.38",
2515
2699
  "kind": "runtime",
2516
2700
  "description": "Thin, generic realtime runtime wrappers for socket.io server and client.",
2517
2701
  "options": {
@@ -2606,7 +2790,7 @@
2606
2790
  "mutations": {
2607
2791
  "dependencies": {
2608
2792
  "runtime": {
2609
- "@jskit-ai/kernel": "0.1.37",
2793
+ "@jskit-ai/kernel": "0.1.39",
2610
2794
  "@socket.io/redis-adapter": "^8.3.0",
2611
2795
  "redis": "^5.8.2",
2612
2796
  "socket.io": "^4.8.3",
@@ -2655,11 +2839,11 @@
2655
2839
  },
2656
2840
  {
2657
2841
  "packageId": "@jskit-ai/shell-web",
2658
- "version": "0.1.36",
2842
+ "version": "0.1.38",
2659
2843
  "descriptor": {
2660
2844
  "packageVersion": 1,
2661
2845
  "packageId": "@jskit-ai/shell-web",
2662
- "version": "0.1.36",
2846
+ "version": "0.1.38",
2663
2847
  "kind": "runtime",
2664
2848
  "description": "Web shell layout runtime with outlet-based placement contributions.",
2665
2849
  "dependsOn": [],
@@ -2771,6 +2955,16 @@
2771
2955
  "order": 100,
2772
2956
  "componentToken": "local.main.ui.surface-aware-menu-link-item",
2773
2957
  "source": "templates/src/placement.js"
2958
+ },
2959
+ {
2960
+ "id": "shell-web.home.settings.general",
2961
+ "target": "home-settings:primary-menu",
2962
+ "surfaces": [
2963
+ "home"
2964
+ ],
2965
+ "order": 100,
2966
+ "componentToken": "local.main.ui.surface-aware-menu-link-item",
2967
+ "source": "templates/src/placement.js"
2774
2968
  }
2775
2969
  ]
2776
2970
  }
@@ -2781,7 +2975,7 @@
2781
2975
  "runtime": {
2782
2976
  "@mdi/js": "^7.4.47",
2783
2977
  "@tanstack/vue-query": "^5.90.5",
2784
- "@jskit-ai/kernel": "0.1.37",
2978
+ "@jskit-ai/kernel": "0.1.39",
2785
2979
  "vuetify": "^4.0.0"
2786
2980
  },
2787
2981
  "dev": {}
@@ -2947,9 +3141,18 @@
2947
3141
  "toSurface": "home",
2948
3142
  "toSurfacePath": "settings/index.vue",
2949
3143
  "ownership": "app",
2950
- "reason": "Install shell-driven home settings landing page with a tiny browser-local shell preference example.",
3144
+ "reason": "Install shell-driven home settings redirect so the starter settings shell lands on a real child page.",
2951
3145
  "category": "shell-web",
2952
3146
  "id": "shell-web-page-home-settings"
3147
+ },
3148
+ {
3149
+ "from": "templates/src/pages/home/settings/general/index.vue",
3150
+ "toSurface": "home",
3151
+ "toSurfacePath": "settings/general/index.vue",
3152
+ "ownership": "app",
3153
+ "reason": "Install shell-driven general settings child page with a tiny browser-local shell preference example.",
3154
+ "category": "shell-web",
3155
+ "id": "shell-web-page-home-settings-general"
2953
3156
  }
2954
3157
  ]
2955
3158
  }
@@ -2957,11 +3160,11 @@
2957
3160
  },
2958
3161
  {
2959
3162
  "packageId": "@jskit-ai/storage-runtime",
2960
- "version": "0.1.36",
3163
+ "version": "0.1.38",
2961
3164
  "descriptor": {
2962
3165
  "packageVersion": 1,
2963
3166
  "packageId": "@jskit-ai/storage-runtime",
2964
- "version": "0.1.36",
3167
+ "version": "0.1.38",
2965
3168
  "kind": "runtime",
2966
3169
  "dependsOn": [
2967
3170
  "@jskit-ai/kernel"
@@ -3010,7 +3213,7 @@
3010
3213
  "mutations": {
3011
3214
  "dependencies": {
3012
3215
  "runtime": {
3013
- "@jskit-ai/kernel": "0.1.37",
3216
+ "@jskit-ai/kernel": "0.1.39",
3014
3217
  "unstorage": "^1.17.3"
3015
3218
  },
3016
3219
  "dev": {}
@@ -3026,11 +3229,11 @@
3026
3229
  },
3027
3230
  {
3028
3231
  "packageId": "@jskit-ai/ui-generator",
3029
- "version": "0.1.20",
3232
+ "version": "0.1.22",
3030
3233
  "descriptor": {
3031
3234
  "packageVersion": 1,
3032
3235
  "packageId": "@jskit-ai/ui-generator",
3033
- "version": "0.1.20",
3236
+ "version": "0.1.22",
3034
3237
  "kind": "generator",
3035
3238
  "description": "Create non-CRUD pages, reusable UI elements, and subpage hosts.",
3036
3239
  "options": {
@@ -3329,7 +3532,7 @@
3329
3532
  "mutations": {
3330
3533
  "dependencies": {
3331
3534
  "runtime": {
3332
- "@jskit-ai/users-web": "0.1.52"
3535
+ "@jskit-ai/users-web": "0.1.54"
3333
3536
  },
3334
3537
  "dev": {}
3335
3538
  },
@@ -3344,11 +3547,11 @@
3344
3547
  },
3345
3548
  {
3346
3549
  "packageId": "@jskit-ai/uploads-image-web",
3347
- "version": "0.1.15",
3550
+ "version": "0.1.17",
3348
3551
  "descriptor": {
3349
3552
  "packageVersion": 1,
3350
3553
  "packageId": "@jskit-ai/uploads-image-web",
3351
- "version": "0.1.15",
3554
+ "version": "0.1.17",
3352
3555
  "kind": "runtime",
3353
3556
  "description": "Reusable client-side image upload runtime with pre-upload image editing.",
3354
3557
  "dependsOn": [
@@ -3412,7 +3615,7 @@
3412
3615
  "mutations": {
3413
3616
  "dependencies": {
3414
3617
  "runtime": {
3415
- "@jskit-ai/uploads-runtime": "0.1.15",
3618
+ "@jskit-ai/uploads-runtime": "0.1.17",
3416
3619
  "@uppy/compressor": "^3.1.0",
3417
3620
  "@uppy/core": "^5.2.0",
3418
3621
  "@uppy/dashboard": "^5.1.1",
@@ -3432,11 +3635,11 @@
3432
3635
  },
3433
3636
  {
3434
3637
  "packageId": "@jskit-ai/uploads-runtime",
3435
- "version": "0.1.15",
3638
+ "version": "0.1.17",
3436
3639
  "descriptor": {
3437
3640
  "packageVersion": 1,
3438
3641
  "packageId": "@jskit-ai/uploads-runtime",
3439
- "version": "0.1.15",
3642
+ "version": "0.1.17",
3440
3643
  "kind": "runtime",
3441
3644
  "description": "Reusable upload runtime primitives for multipart parsing, policy validation, and blob storage.",
3442
3645
  "dependsOn": [
@@ -3506,7 +3709,7 @@
3506
3709
  "dependencies": {
3507
3710
  "runtime": {
3508
3711
  "@fastify/multipart": "^9.4.0",
3509
- "@jskit-ai/kernel": "0.1.37"
3712
+ "@jskit-ai/kernel": "0.1.39"
3510
3713
  },
3511
3714
  "dev": {}
3512
3715
  },
@@ -3521,13 +3724,13 @@
3521
3724
  },
3522
3725
  {
3523
3726
  "packageId": "@jskit-ai/users-core",
3524
- "version": "0.1.47",
3727
+ "version": "0.1.49",
3525
3728
  "descriptor": {
3526
3729
  "packageVersion": 1,
3527
3730
  "packageId": "@jskit-ai/users-core",
3528
- "version": "0.1.47",
3731
+ "version": "0.1.49",
3529
3732
  "kind": "runtime",
3530
- "description": "Users/account runtime plus HTTP routes for account and console features.",
3733
+ "description": "Users/account runtime plus HTTP routes for account features.",
3531
3734
  "dependsOn": [
3532
3735
  "@jskit-ai/auth-core",
3533
3736
  "@jskit-ai/database-runtime",
@@ -3567,11 +3770,11 @@
3567
3770
  "surfaces": [
3568
3771
  {
3569
3772
  "subpath": "./server",
3570
- "summary": "Exports UsersCoreServiceProvider, users/console repositories and services, account feature route registration modules, and action definitions."
3773
+ "summary": "Exports UsersCoreServiceProvider plus account feature route registration modules and action definitions."
3571
3774
  },
3572
3775
  {
3573
3776
  "subpath": "./shared",
3574
- "summary": "Exports shared users settings and tenancy utilities."
3777
+ "summary": "Exports shared users settings resources and defaults."
3575
3778
  },
3576
3779
  {
3577
3780
  "subpath": "./client",
@@ -3644,16 +3847,6 @@
3644
3847
  "method": "POST",
3645
3848
  "path": "/api/settings/security/logout-others",
3646
3849
  "summary": "Sign out from other active sessions."
3647
- },
3648
- {
3649
- "method": "GET",
3650
- "path": "/api/console/settings",
3651
- "summary": "Get console settings."
3652
- },
3653
- {
3654
- "method": "PATCH",
3655
- "path": "/api/console/settings",
3656
- "summary": "Update console settings."
3657
3850
  }
3658
3851
  ]
3659
3852
  }
@@ -3661,11 +3854,11 @@
3661
3854
  "mutations": {
3662
3855
  "dependencies": {
3663
3856
  "runtime": {
3664
- "@jskit-ai/auth-core": "0.1.36",
3665
- "@jskit-ai/database-runtime": "0.1.37",
3666
- "@jskit-ai/http-runtime": "0.1.36",
3667
- "@jskit-ai/kernel": "0.1.37",
3668
- "@jskit-ai/uploads-runtime": "0.1.15",
3857
+ "@jskit-ai/auth-core": "0.1.38",
3858
+ "@jskit-ai/database-runtime": "0.1.39",
3859
+ "@jskit-ai/http-runtime": "0.1.38",
3860
+ "@jskit-ai/kernel": "0.1.39",
3861
+ "@jskit-ai/uploads-runtime": "0.1.17",
3669
3862
  "@fastify/type-provider-typebox": "^6.1.0",
3670
3863
  "typebox": "^1.0.81"
3671
3864
  },
@@ -3694,23 +3887,6 @@
3694
3887
  "category": "migration",
3695
3888
  "id": "users-core-profile-username-schema"
3696
3889
  },
3697
- {
3698
- "op": "install-migration",
3699
- "from": "templates/migrations/users_core_console_owner.cjs",
3700
- "toDir": "migrations",
3701
- "extension": ".cjs",
3702
- "reason": "Install console owner migration.",
3703
- "category": "migration",
3704
- "id": "users-core-console-owner-schema"
3705
- },
3706
- {
3707
- "from": "templates/packages/main/src/shared/resources/consoleSettingsFields.js",
3708
- "to": "packages/main/src/shared/resources/consoleSettingsFields.js",
3709
- "preserveOnRemove": true,
3710
- "reason": "Install app-owned console settings field definitions.",
3711
- "category": "users-core",
3712
- "id": "users-core-app-owned-console-settings-fields"
3713
- },
3714
3890
  {
3715
3891
  "from": "templates/packages/main/src/shared/resources/userSettingsFields.js",
3716
3892
  "to": "packages/main/src/shared/resources/userSettingsFields.js",
@@ -3730,16 +3906,6 @@
3730
3906
  "category": "runtime-config",
3731
3907
  "id": "users-core-auth-profile-mode"
3732
3908
  },
3733
- {
3734
- "op": "append-text",
3735
- "file": "packages/main/src/shared/index.js",
3736
- "position": "top",
3737
- "skipIfContains": "import \"./resources/consoleSettingsFields.js\";",
3738
- "value": "import \"./resources/consoleSettingsFields.js\";\n",
3739
- "reason": "Load app-owned console settings field definitions inside the main shared module.",
3740
- "category": "users-core",
3741
- "id": "users-core-main-shared-console-settings-field-import"
3742
- },
3743
3909
  {
3744
3910
  "op": "append-text",
3745
3911
  "file": "packages/main/src/shared/index.js",
@@ -3776,16 +3942,15 @@
3776
3942
  },
3777
3943
  {
3778
3944
  "packageId": "@jskit-ai/users-web",
3779
- "version": "0.1.52",
3945
+ "version": "0.1.54",
3780
3946
  "descriptor": {
3781
3947
  "packageVersion": 1,
3782
3948
  "packageId": "@jskit-ai/users-web",
3783
- "version": "0.1.52",
3949
+ "version": "0.1.54",
3784
3950
  "kind": "runtime",
3785
3951
  "description": "Users web module: account/profile UI plus shared users web widgets.",
3786
3952
  "dependsOn": [
3787
3953
  "@jskit-ai/auth-web",
3788
- "@jskit-ai/console-web",
3789
3954
  "@jskit-ai/http-runtime",
3790
3955
  "@jskit-ai/shell-web",
3791
3956
  "@jskit-ai/uploads-image-web",
@@ -3854,24 +4019,22 @@
3854
4019
  },
3855
4020
  {
3856
4021
  "subpath": "./client/composables/usePaths",
3857
- "summary": "Exports surface/workspace path resolver composable."
4022
+ "summary": "Exports surface route path resolver composable."
3858
4023
  },
3859
4024
  {
3860
4025
  "subpath": "./client/composables/useAccountSettingsRuntime",
3861
4026
  "summary": "Exports account settings runtime composable for app-owned settings UI."
3862
4027
  },
3863
4028
  {
3864
- "subpath": "./client/composables/useWorkspaceRouteContext",
3865
- "summary": "Exports workspace route context composable."
4029
+ "subpath": "./client/account-settings/sections",
4030
+ "summary": "Exports account settings section extension seam helpers."
3866
4031
  }
3867
4032
  ],
3868
4033
  "containerTokens": {
3869
4034
  "server": [],
3870
4035
  "client": [
3871
- "users.web.profile.menu.surface-switch-item",
3872
4036
  "users.web.home.tools.widget",
3873
- "users.web.profile.element",
3874
- "users.web.bootstrap-placement.runtime"
4037
+ "users.web.profile.element"
3875
4038
  ]
3876
4039
  }
3877
4040
  },
@@ -3885,36 +4048,9 @@
3885
4048
  "home"
3886
4049
  ],
3887
4050
  "source": "src/client/components/UsersHomeToolsWidget.vue"
3888
- },
3889
- {
3890
- "target": "workspace-tools:primary-menu",
3891
- "defaultLinkComponentToken": "local.main.ui.surface-aware-menu-link-item",
3892
- "surfaces": [
3893
- "admin"
3894
- ],
3895
- "source": "src/client/components/UsersWorkspaceToolsWidget.vue"
3896
- },
3897
- {
3898
- "target": "console-settings:primary-menu",
3899
- "defaultLinkComponentToken": "local.main.ui.surface-aware-menu-link-item",
3900
- "surfaces": [
3901
- "console"
3902
- ],
3903
- "source": "templates/src/pages/console/settings.vue"
3904
4051
  }
3905
4052
  ],
3906
4053
  "contributions": [
3907
- {
3908
- "id": "users.profile.menu.surface-switch",
3909
- "target": "auth-profile-menu:primary-menu",
3910
- "surfaces": [
3911
- "*"
3912
- ],
3913
- "order": 100,
3914
- "componentToken": "users.web.profile.menu.surface-switch-item",
3915
- "when": "auth.authenticated === true",
3916
- "source": "mutations.text#users-web-profile-surface-switch-placement"
3917
- },
3918
4054
  {
3919
4055
  "id": "users.profile.menu.settings",
3920
4056
  "target": "auth-profile-menu:primary-menu",
@@ -3926,17 +4062,6 @@
3926
4062
  "when": "auth.authenticated === true",
3927
4063
  "source": "mutations.text#users-web-profile-settings-placement"
3928
4064
  },
3929
- {
3930
- "id": "users.console.menu.settings",
3931
- "target": "shell-layout:primary-menu",
3932
- "surfaces": [
3933
- "console"
3934
- ],
3935
- "order": 100,
3936
- "componentToken": "local.main.ui.menu-link-item",
3937
- "when": "auth.authenticated === true",
3938
- "source": "mutations.text#users-web-console-settings-placement"
3939
- },
3940
4065
  {
3941
4066
  "id": "users.home.tools.widget",
3942
4067
  "target": "shell-layout:top-right",
@@ -3968,13 +4093,12 @@
3968
4093
  "runtime": {
3969
4094
  "@tanstack/vue-query": "5.92.12",
3970
4095
  "@mdi/js": "^7.4.47",
3971
- "@jskit-ai/console-web": "0.1.4",
3972
- "@jskit-ai/http-runtime": "0.1.36",
3973
- "@jskit-ai/realtime": "0.1.36",
3974
- "@jskit-ai/kernel": "0.1.37",
3975
- "@jskit-ai/shell-web": "0.1.36",
3976
- "@jskit-ai/uploads-image-web": "0.1.15",
3977
- "@jskit-ai/users-core": "0.1.47",
4096
+ "@jskit-ai/http-runtime": "0.1.38",
4097
+ "@jskit-ai/realtime": "0.1.38",
4098
+ "@jskit-ai/kernel": "0.1.39",
4099
+ "@jskit-ai/shell-web": "0.1.38",
4100
+ "@jskit-ai/uploads-image-web": "0.1.17",
4101
+ "@jskit-ai/users-core": "0.1.49",
3978
4102
  "vuetify": "^4.0.0"
3979
4103
  },
3980
4104
  "dev": {}
@@ -4022,29 +4146,6 @@
4022
4146
  "reason": "Install app-owned account settings notifications section scaffold.",
4023
4147
  "category": "users-web",
4024
4148
  "id": "users-web-component-account-settings-notifications"
4025
- },
4026
- {
4027
- "from": "templates/src/components/account/settings/AccountSettingsInvitesSection.vue",
4028
- "to": "src/components/account/settings/AccountSettingsInvitesSection.vue",
4029
- "reason": "Install app-owned account settings invites section scaffold.",
4030
- "category": "users-web",
4031
- "id": "users-web-component-account-settings-invites"
4032
- },
4033
- {
4034
- "from": "templates/src/pages/console/settings.vue",
4035
- "toSurface": "console",
4036
- "toSurfacePath": "settings.vue",
4037
- "reason": "Install console settings shell route scaffold for users-web console UI.",
4038
- "category": "users-web",
4039
- "id": "users-web-page-console-settings-shell"
4040
- },
4041
- {
4042
- "from": "templates/src/pages/console/settings/index.vue",
4043
- "toSurface": "console",
4044
- "toSurfacePath": "settings/index.vue",
4045
- "reason": "Install console settings index stub scaffold for app-owned landing or redirect behavior.",
4046
- "category": "users-web",
4047
- "id": "users-web-page-console-settings"
4048
4149
  }
4049
4150
  ],
4050
4151
  "text": [
@@ -4058,16 +4159,6 @@
4058
4159
  "category": "users-web",
4059
4160
  "id": "users-web-surface-config-account"
4060
4161
  },
4061
- {
4062
- "op": "append-text",
4063
- "file": "src/placement.js",
4064
- "position": "bottom",
4065
- "skipIfContains": "id: \"users.profile.menu.surface-switch\"",
4066
- "value": "\naddPlacement({\n id: \"users.profile.menu.surface-switch\",\n target: \"auth-profile-menu:primary-menu\",\n surfaces: [\"*\"],\n order: 100,\n componentToken: \"users.web.profile.menu.surface-switch-item\",\n when: ({ auth }) => Boolean(auth?.authenticated)\n});\n",
4067
- "reason": "Append users-web profile surface switch placement into app-owned placement registry.",
4068
- "category": "users-web",
4069
- "id": "users-web-profile-surface-switch-placement"
4070
- },
4071
4162
  {
4072
4163
  "op": "append-text",
4073
4164
  "file": "src/placement.js",
@@ -4078,22 +4169,12 @@
4078
4169
  "category": "users-web",
4079
4170
  "id": "users-web-profile-settings-placement"
4080
4171
  },
4081
- {
4082
- "op": "append-text",
4083
- "file": "src/placement.js",
4084
- "position": "bottom",
4085
- "skipIfContains": "id: \"users.console.menu.settings\"",
4086
- "value": "\naddPlacement({\n id: \"users.console.menu.settings\",\n target: \"shell-layout:primary-menu\",\n surfaces: [\"console\"],\n order: 100,\n componentToken: \"local.main.ui.menu-link-item\",\n props: {\n label: \"Settings\",\n to: \"/console/settings\",\n icon: \"mdi-cog-outline\"\n },\n when: ({ auth }) => Boolean(auth?.authenticated)\n});\n",
4087
- "reason": "Append users-web console settings menu placement into app-owned placement registry.",
4088
- "category": "users-web",
4089
- "id": "users-web-console-settings-placement"
4090
- },
4091
4172
  {
4092
4173
  "op": "append-text",
4093
4174
  "file": "src/placement.js",
4094
4175
  "position": "bottom",
4095
4176
  "skipIfContains": "id: \"users.home.tools.widget\"",
4096
- "value": "\naddPlacement({\n id: \"users.home.tools.widget\",\n target: \"shell-layout:top-right\",\n surfaces: [\"home\"],\n order: 900,\n componentToken: \"users.web.home.tools.widget\",\n when: ({ auth }) => Boolean(auth?.authenticated)\n});\n\naddPlacement({\n id: \"users.home.menu.settings\",\n target: \"home-tools:primary-menu\",\n surfaces: [\"home\"],\n order: 100,\n componentToken: \"local.main.ui.surface-aware-menu-link-item\",\n props: {\n label: \"Settings\",\n surface: \"home\",\n workspaceSuffix: \"/settings\",\n nonWorkspaceSuffix: \"/settings\"\n },\n when: ({ auth }) => Boolean(auth?.authenticated)\n});\n",
4177
+ "value": "\naddPlacement({\n id: \"users.home.tools.widget\",\n target: \"shell-layout:top-right\",\n surfaces: [\"home\"],\n order: 900,\n componentToken: \"users.web.home.tools.widget\",\n when: ({ auth }) => Boolean(auth?.authenticated)\n});\n\naddPlacement({\n id: \"users.home.menu.settings\",\n target: \"home-tools:primary-menu\",\n surfaces: [\"home\"],\n order: 100,\n componentToken: \"local.main.ui.surface-aware-menu-link-item\",\n props: {\n label: \"Settings\",\n surface: \"home\",\n scopedSuffix: \"/settings\",\n unscopedSuffix: \"/settings\"\n },\n when: ({ auth }) => Boolean(auth?.authenticated)\n});\n",
4097
4178
  "reason": "Append users-web home tools widget and settings menu placements into app-owned placement registry.",
4098
4179
  "category": "users-web",
4099
4180
  "id": "users-web-home-tools-placement"
@@ -4104,11 +4185,11 @@
4104
4185
  },
4105
4186
  {
4106
4187
  "packageId": "@jskit-ai/workspaces-core",
4107
- "version": "0.1.13",
4188
+ "version": "0.1.15",
4108
4189
  "descriptor": {
4109
4190
  "packageVersion": 1,
4110
4191
  "packageId": "@jskit-ai/workspaces-core",
4111
- "version": "0.1.13",
4192
+ "version": "0.1.15",
4112
4193
  "kind": "runtime",
4113
4194
  "description": "Workspace tenancy runtime plus HTTP routes, role catalog, and workspace config scaffolding.",
4114
4195
  "dependsOn": [
@@ -4217,7 +4298,7 @@
4217
4298
  "mutations": {
4218
4299
  "dependencies": {
4219
4300
  "runtime": {
4220
- "@jskit-ai/users-core": "0.1.47"
4301
+ "@jskit-ai/users-core": "0.1.49"
4221
4302
  },
4222
4303
  "dev": {}
4223
4304
  },
@@ -4407,11 +4488,11 @@
4407
4488
  },
4408
4489
  {
4409
4490
  "packageId": "@jskit-ai/workspaces-web",
4410
- "version": "0.1.13",
4491
+ "version": "0.1.15",
4411
4492
  "descriptor": {
4412
4493
  "packageVersion": 1,
4413
4494
  "packageId": "@jskit-ai/workspaces-web",
4414
- "version": "0.1.13",
4495
+ "version": "0.1.15",
4415
4496
  "kind": "runtime",
4416
4497
  "description": "Workspace web module: workspace selector, tools widget, workspace surfaces, and members/settings UI.",
4417
4498
  "dependsOn": [
@@ -4443,19 +4524,30 @@
4443
4524
  "metadata": {
4444
4525
  "apiSummary": {
4445
4526
  "surfaces": [
4527
+ {
4528
+ "subpath": "./client",
4529
+ "summary": "Exports workspaces-web client provider registration surface."
4530
+ },
4446
4531
  {
4447
4532
  "subpath": "./client/providers/WorkspacesWebClientProvider",
4448
4533
  "summary": "Exports workspaces-web client provider class."
4534
+ },
4535
+ {
4536
+ "subpath": "./client/composables/useWorkspaceRouteContext",
4537
+ "summary": "Exports workspace route context composable."
4449
4538
  }
4450
4539
  ],
4451
4540
  "containerTokens": {
4452
4541
  "server": [],
4453
4542
  "client": [
4454
- "users.web.workspace.selector",
4455
- "users.web.workspace.tools.widget",
4456
- "users.web.workspace-settings.menu-item",
4457
- "users.web.workspace-members.menu-item",
4458
- "users.web.members-admin.element"
4543
+ "workspaces.web.profile.menu.surface-switch-item",
4544
+ "workspaces.web.workspace.selector",
4545
+ "workspaces.web.workspace.tools.widget",
4546
+ "workspaces.web.workspace-settings.menu-item",
4547
+ "workspaces.web.workspace-members.menu-item",
4548
+ "workspaces.web.members-admin.element",
4549
+ "workspaces.web.bootstrap-placement.runtime",
4550
+ "workspaces.web.account-settings.section.invites"
4459
4551
  ]
4460
4552
  }
4461
4553
  },
@@ -4473,18 +4565,29 @@
4473
4565
  ],
4474
4566
  "contributions": [
4475
4567
  {
4476
- "id": "users.workspace.selector",
4568
+ "id": "workspaces.profile.menu.surface-switch",
4569
+ "target": "auth-profile-menu:primary-menu",
4570
+ "surfaces": [
4571
+ "*"
4572
+ ],
4573
+ "order": 100,
4574
+ "componentToken": "workspaces.web.profile.menu.surface-switch-item",
4575
+ "when": "auth.authenticated === true",
4576
+ "source": "mutations.text#workspaces-web-profile-surface-switch-placement"
4577
+ },
4578
+ {
4579
+ "id": "workspaces.workspace.selector",
4477
4580
  "target": "shell-layout:top-left",
4478
4581
  "surfaces": [
4479
4582
  "*"
4480
4583
  ],
4481
4584
  "order": 200,
4482
- "componentToken": "users.web.workspace.selector",
4585
+ "componentToken": "workspaces.web.workspace.selector",
4483
4586
  "when": "auth.authenticated === true",
4484
- "source": "mutations.text#users-web-placement-block"
4587
+ "source": "mutations.text#workspaces-web-placement-block"
4485
4588
  },
4486
4589
  {
4487
- "id": "users.account.invites.cue",
4590
+ "id": "workspaces.account.invites.cue",
4488
4591
  "target": "shell-layout:top-right",
4489
4592
  "surfaces": [
4490
4593
  "*"
@@ -4492,37 +4595,37 @@
4492
4595
  "order": 850,
4493
4596
  "componentToken": "local.main.account.pending-invites.cue",
4494
4597
  "when": "auth.authenticated === true",
4495
- "source": "mutations.text#users-web-placement-block"
4598
+ "source": "mutations.text#workspaces-web-placement-block"
4496
4599
  },
4497
4600
  {
4498
- "id": "users.workspace.tools.widget",
4601
+ "id": "workspaces.workspace.tools.widget",
4499
4602
  "target": "shell-layout:top-right",
4500
4603
  "surfaces": [
4501
4604
  "admin"
4502
4605
  ],
4503
4606
  "order": 900,
4504
- "componentToken": "users.web.workspace.tools.widget",
4505
- "source": "mutations.text#users-web-placement-block"
4607
+ "componentToken": "workspaces.web.workspace.tools.widget",
4608
+ "source": "mutations.text#workspaces-web-placement-block"
4506
4609
  },
4507
4610
  {
4508
- "id": "users.workspace.menu.workspace-settings",
4611
+ "id": "workspaces.workspace.menu.workspace-settings",
4509
4612
  "target": "workspace-tools:primary-menu",
4510
4613
  "surfaces": [
4511
4614
  "admin"
4512
4615
  ],
4513
4616
  "order": 100,
4514
- "componentToken": "users.web.workspace-settings.menu-item",
4515
- "source": "mutations.text#users-web-placement-block"
4617
+ "componentToken": "workspaces.web.workspace-settings.menu-item",
4618
+ "source": "mutations.text#workspaces-web-placement-block"
4516
4619
  },
4517
4620
  {
4518
- "id": "users.workspace.menu.members",
4621
+ "id": "workspaces.workspace.menu.members",
4519
4622
  "target": "workspace-tools:primary-menu",
4520
4623
  "surfaces": [
4521
4624
  "admin"
4522
4625
  ],
4523
4626
  "order": 200,
4524
- "componentToken": "users.web.workspace-members.menu-item",
4525
- "source": "mutations.text#users-web-placement-block"
4627
+ "componentToken": "workspaces.web.workspace-members.menu-item",
4628
+ "source": "mutations.text#workspaces-web-placement-block"
4526
4629
  }
4527
4630
  ]
4528
4631
  }
@@ -4531,8 +4634,9 @@
4531
4634
  "mutations": {
4532
4635
  "dependencies": {
4533
4636
  "runtime": {
4534
- "@jskit-ai/workspaces-core": "0.1.13",
4535
- "@jskit-ai/users-web": "0.1.52"
4637
+ "@jskit-ai/workspaces-core": "0.1.15",
4638
+ "@jskit-ai/users-web": "0.1.54",
4639
+ "vuetify": "^4.0.0"
4536
4640
  },
4537
4641
  "dev": {}
4538
4642
  },
@@ -4692,11 +4796,28 @@
4692
4796
  "op": "append-text",
4693
4797
  "file": "src/placement.js",
4694
4798
  "position": "bottom",
4695
- "skipIfContains": "id: \"users.workspace.selector\"",
4696
- "value": "\naddPlacement({\n id: \"users.workspace.selector\",\n target: \"shell-layout:top-left\",\n surfaces: [\"*\"],\n order: 200,\n componentToken: \"users.web.workspace.selector\",\n props: {\n allowOnNonWorkspaceSurface: true,\n targetSurfaceId: \"app\"\n },\n when: ({ auth }) => {\n return Boolean(auth?.authenticated);\n }\n});\n\naddPlacement({\n id: \"users.account.invites.cue\",\n target: \"shell-layout:top-right\",\n surfaces: [\"*\"],\n order: 850,\n componentToken: \"local.main.account.pending-invites.cue\",\n when: ({ auth }) => Boolean(auth?.authenticated)\n});\n\naddPlacement({\n id: \"users.workspace.tools.widget\",\n target: \"shell-layout:top-right\",\n surfaces: [\"admin\"],\n order: 900,\n componentToken: \"users.web.workspace.tools.widget\"\n});\n\naddPlacement({\n id: \"users.workspace.menu.workspace-settings\",\n target: \"workspace-tools:primary-menu\",\n surfaces: [\"admin\"],\n order: 100,\n componentToken: \"users.web.workspace-settings.menu-item\"\n});\n\naddPlacement({\n id: \"users.workspace.menu.members\",\n target: \"workspace-tools:primary-menu\",\n surfaces: [\"admin\"],\n order: 200,\n componentToken: \"users.web.workspace-members.menu-item\"\n});\n",
4799
+ "skipIfContains": "id: \"workspaces.profile.menu.surface-switch\"",
4800
+ "value": "\naddPlacement({\n id: \"workspaces.profile.menu.surface-switch\",\n target: \"auth-profile-menu:primary-menu\",\n surfaces: [\"*\"],\n order: 100,\n componentToken: \"workspaces.web.profile.menu.surface-switch-item\",\n when: ({ auth }) => Boolean(auth?.authenticated)\n});\n",
4801
+ "reason": "Append workspaces-web profile surface switch placement into app-owned placement registry.",
4802
+ "category": "workspaces-web",
4803
+ "id": "workspaces-web-profile-surface-switch-placement",
4804
+ "when": {
4805
+ "config": "tenancyMode",
4806
+ "in": [
4807
+ "personal",
4808
+ "workspaces"
4809
+ ]
4810
+ }
4811
+ },
4812
+ {
4813
+ "op": "append-text",
4814
+ "file": "src/placement.js",
4815
+ "position": "bottom",
4816
+ "skipIfContains": "id: \"workspaces.workspace.selector\"",
4817
+ "value": "\naddPlacement({\n id: \"workspaces.workspace.selector\",\n target: \"shell-layout:top-left\",\n surfaces: [\"*\"],\n order: 200,\n componentToken: \"workspaces.web.workspace.selector\",\n props: {\n allowOnNonWorkspaceSurface: true,\n targetSurfaceId: \"app\"\n },\n when: ({ auth }) => {\n return Boolean(auth?.authenticated);\n }\n});\n\naddPlacement({\n id: \"workspaces.account.invites.cue\",\n target: \"shell-layout:top-right\",\n surfaces: [\"*\"],\n order: 850,\n componentToken: \"local.main.account.pending-invites.cue\",\n when: ({ auth }) => Boolean(auth?.authenticated)\n});\n\naddPlacement({\n id: \"workspaces.workspace.tools.widget\",\n target: \"shell-layout:top-right\",\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: \"workspace-tools:primary-menu\",\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: \"workspace-tools:primary-menu\",\n surfaces: [\"admin\"],\n order: 200,\n componentToken: \"workspaces.web.workspace-members.menu-item\"\n});\n",
4697
4818
  "reason": "Append workspace placement entries into app-owned placement registry.",
4698
4819
  "category": "workspaces-web",
4699
- "id": "users-web-placement-block",
4820
+ "id": "workspaces-web-placement-block",
4700
4821
  "when": {
4701
4822
  "config": "tenancyMode",
4702
4823
  "in": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jskit-ai/jskit-catalog",
3
- "version": "0.1.45",
3
+ "version": "0.1.47",
4
4
  "description": "Published metadata catalog for JSKIT package descriptors.",
5
5
  "type": "module",
6
6
  "files": [