@jskit-ai/jskit-catalog 0.2.31 → 0.2.33

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.
@@ -5,55 +5,55 @@
5
5
  },
6
6
  "release": {
7
7
  "packages": {
8
- "@jskit-ai/agent": "0.1.1",
9
- "@jskit-ai/agent-docs": "0.1.279",
10
- "@jskit-ai/agent-runtime": "0.1.2",
11
- "@jskit-ai/architecture-inspector": "0.1.8",
12
- "@jskit-ai/assistant-core": "0.2.24",
13
- "@jskit-ai/assistant-runtime": "0.2.26",
14
- "@jskit-ai/assistant-voice": "0.2.26",
15
- "@jskit-ai/assistant-voice-sherpa": "0.1.73",
16
- "@jskit-ai/auth-core": "0.2.10",
17
- "@jskit-ai/auth-provider-local-core": "0.2.13",
18
- "@jskit-ai/auth-provider-local-db-core": "0.1.154",
19
- "@jskit-ai/auth-provider-oidc-core": "0.2.17",
20
- "@jskit-ai/auth-provider-supabase-core": "0.2.12",
21
- "@jskit-ai/auth-web": "0.2.15",
22
- "@jskit-ai/config-eslint": "0.1.245",
23
- "@jskit-ai/connector-google-calendar": "0.2.11",
24
- "@jskit-ai/connectors-catalog": "0.2.11",
25
- "@jskit-ai/connectors-core": "0.2.11",
26
- "@jskit-ai/connectors-web": "0.2.11",
27
- "@jskit-ai/console-core": "0.2.12",
28
- "@jskit-ai/console-web": "0.1.237",
29
- "@jskit-ai/crud-core": "0.2.11",
30
- "@jskit-ai/database-runtime": "0.1.259",
31
- "@jskit-ai/database-runtime-mysql": "0.1.257",
32
- "@jskit-ai/database-runtime-postgres": "0.1.256",
33
- "@jskit-ai/http-runtime": "0.2.10",
34
- "@jskit-ai/http-web": "0.2.18",
35
- "@jskit-ai/jskit-catalog": "0.2.31",
36
- "@jskit-ai/json-rest-api-core": "0.2.11",
37
- "@jskit-ai/kernel": "0.2.10",
38
- "@jskit-ai/material-web": "0.1.2",
39
- "@jskit-ai/mobile-capacitor": "0.2.13",
40
- "@jskit-ai/oidc-issuer-core": "0.1.18",
41
- "@jskit-ai/payments-core": "0.2.1",
42
- "@jskit-ai/payments-web": "0.2.10",
43
- "@jskit-ai/realtime": "0.2.16",
44
- "@jskit-ai/release": "0.1.9",
45
- "@jskit-ai/resource-core": "0.1.201",
46
- "@jskit-ai/resource-crud-core": "0.1.201",
47
- "@jskit-ai/rewarded-core": "0.2.12",
48
- "@jskit-ai/rewarded-web": "0.2.15",
49
- "@jskit-ai/shell-web": "0.2.13",
50
- "@jskit-ai/storage-runtime": "0.1.256",
51
- "@jskit-ai/uploads-image-web": "0.2.10",
52
- "@jskit-ai/uploads-runtime": "0.2.10",
53
- "@jskit-ai/users-core": "0.2.12",
54
- "@jskit-ai/users-web": "0.2.20",
55
- "@jskit-ai/workspaces-core": "0.2.12",
56
- "@jskit-ai/workspaces-web": "0.2.20"
8
+ "@jskit-ai/agent": "0.1.2",
9
+ "@jskit-ai/agent-docs": "0.1.281",
10
+ "@jskit-ai/agent-runtime": "0.1.3",
11
+ "@jskit-ai/architecture-inspector": "0.1.10",
12
+ "@jskit-ai/assistant-core": "0.2.26",
13
+ "@jskit-ai/assistant-runtime": "0.2.28",
14
+ "@jskit-ai/assistant-voice": "0.2.28",
15
+ "@jskit-ai/assistant-voice-sherpa": "0.1.75",
16
+ "@jskit-ai/auth-core": "0.2.12",
17
+ "@jskit-ai/auth-provider-local-core": "0.2.15",
18
+ "@jskit-ai/auth-provider-local-db-core": "0.1.156",
19
+ "@jskit-ai/auth-provider-oidc-core": "0.2.19",
20
+ "@jskit-ai/auth-provider-supabase-core": "0.2.14",
21
+ "@jskit-ai/auth-web": "0.2.17",
22
+ "@jskit-ai/config-eslint": "0.1.246",
23
+ "@jskit-ai/connector-google-calendar": "0.2.13",
24
+ "@jskit-ai/connectors-catalog": "0.2.13",
25
+ "@jskit-ai/connectors-core": "0.2.13",
26
+ "@jskit-ai/connectors-web": "0.2.13",
27
+ "@jskit-ai/console-core": "0.2.14",
28
+ "@jskit-ai/console-web": "0.1.239",
29
+ "@jskit-ai/crud-core": "0.2.13",
30
+ "@jskit-ai/database-runtime": "0.1.261",
31
+ "@jskit-ai/database-runtime-mysql": "0.1.259",
32
+ "@jskit-ai/database-runtime-postgres": "0.1.258",
33
+ "@jskit-ai/http-runtime": "0.2.12",
34
+ "@jskit-ai/http-web": "0.2.20",
35
+ "@jskit-ai/jskit-catalog": "0.2.33",
36
+ "@jskit-ai/json-rest-api-core": "0.2.13",
37
+ "@jskit-ai/kernel": "0.2.12",
38
+ "@jskit-ai/material-web": "0.1.3",
39
+ "@jskit-ai/mobile-capacitor": "0.2.15",
40
+ "@jskit-ai/oidc-issuer-core": "0.1.20",
41
+ "@jskit-ai/payments-core": "0.2.2",
42
+ "@jskit-ai/payments-web": "0.2.12",
43
+ "@jskit-ai/realtime": "0.2.18",
44
+ "@jskit-ai/release": "0.1.10",
45
+ "@jskit-ai/resource-core": "0.1.203",
46
+ "@jskit-ai/resource-crud-core": "0.1.203",
47
+ "@jskit-ai/rewarded-core": "0.2.14",
48
+ "@jskit-ai/rewarded-web": "0.2.17",
49
+ "@jskit-ai/shell-web": "0.2.15",
50
+ "@jskit-ai/storage-runtime": "0.1.258",
51
+ "@jskit-ai/uploads-image-web": "0.2.12",
52
+ "@jskit-ai/uploads-runtime": "0.2.12",
53
+ "@jskit-ai/users-core": "0.2.14",
54
+ "@jskit-ai/users-web": "0.2.22",
55
+ "@jskit-ai/workspaces-core": "0.2.14",
56
+ "@jskit-ai/workspaces-web": "0.2.22"
57
57
  },
58
58
  "singletonPackages": [
59
59
  "@jskit-ai/assistant-runtime",
@@ -73,7 +73,7 @@
73
73
  "packages": [
74
74
  {
75
75
  "packageId": "@jskit-ai/agent",
76
- "version": "0.1.1",
76
+ "version": "0.1.2",
77
77
  "description": "A working agent loop on the AI SDK: reasoning on every step, retries, tools, room inside a long turn, checks on every reply and summaries for a 1M-token window. No tables.",
78
78
  "jskit": {
79
79
  "kind": "runtime",
@@ -112,7 +112,7 @@
112
112
  },
113
113
  {
114
114
  "packageId": "@jskit-ai/agent-runtime",
115
- "version": "0.1.2",
115
+ "version": "0.1.3",
116
116
  "description": "Opt-in parts of the agent: its own tables (saved runs, goals, summaries, commands) and coding tools (files, commands in gVisor or a local process, to-do list, notes, goals, asking the person). PostgreSQL.",
117
117
  "jskit": {
118
118
  "kind": "runtime",
@@ -172,14 +172,14 @@
172
172
  },
173
173
  "packageJson": {
174
174
  "dependencies": {
175
- "@jskit-ai/agent": "0.1.1",
175
+ "@jskit-ai/agent": "0.1.2",
176
176
  "zod": "^4.6.7"
177
177
  }
178
178
  }
179
179
  },
180
180
  {
181
181
  "packageId": "@jskit-ai/assistant-core",
182
- "version": "0.2.24",
182
+ "version": "0.2.26",
183
183
  "description": "Reusable assistant client/server/shared primitives without surface-specific routes or settings ownership.",
184
184
  "jskit": {
185
185
  "kind": "runtime",
@@ -345,9 +345,9 @@
345
345
  "@ai-sdk/perplexity": "^4.0.43",
346
346
  "@ai-sdk/togetherai": "^3.0.49",
347
347
  "@ai-sdk/xai": "^4.0.58",
348
- "@jskit-ai/agent": "0.1.1",
349
- "@jskit-ai/resource-core": "0.1.201",
350
- "@jskit-ai/resource-crud-core": "0.1.201",
348
+ "@jskit-ai/agent": "0.1.2",
349
+ "@jskit-ai/resource-core": "0.1.203",
350
+ "@jskit-ai/resource-crud-core": "0.1.203",
351
351
  "@openrouter/ai-sdk-provider": "^3.0.0",
352
352
  "ai": "^7.0.152",
353
353
  "json-rest-schema": "^1.0.17",
@@ -355,8 +355,8 @@
355
355
  "ws": "^8.20.1"
356
356
  },
357
357
  "peerDependencies": {
358
- "@jskit-ai/http-runtime": "0.2.10",
359
- "@jskit-ai/kernel": "0.2.10",
358
+ "@jskit-ai/http-runtime": "0.2.12",
359
+ "@jskit-ai/kernel": "0.2.12",
360
360
  "vue": "^3.5.13",
361
361
  "vuetify": "^4.3.0"
362
362
  }
@@ -364,7 +364,7 @@
364
364
  },
365
365
  {
366
366
  "packageId": "@jskit-ai/assistant-runtime",
367
- "version": "0.2.26",
367
+ "version": "0.2.28",
368
368
  "description": "Capability-based assistant runtime with per-surface chat, transcripts, settings, and action tools.",
369
369
  "jskit": {
370
370
  "kind": "runtime",
@@ -425,6 +425,10 @@
425
425
  "subpath": "./client",
426
426
  "summary": "Exports assistant runtime client elements and composables."
427
427
  },
428
+ {
429
+ "subpath": "./client/providers/AssistantClientProvider",
430
+ "summary": "Exports the assistant client provider, which the client bootstrap loads without the elements."
431
+ },
428
432
  {
429
433
  "subpath": "./shared",
430
434
  "summary": "Exports assistant runtime shared config helpers."
@@ -435,7 +439,7 @@
435
439
  },
436
440
  {
437
441
  "subpath": "./server",
438
- "summary": "Provides conversation routes, authorized shared realtime subscriptions, explicit Fastify hosting shorthand, optional database integration and the per-surface assistant tool catalogue."
442
+ "summary": "Provides conversation routes, authorized shared realtime subscriptions, explicit Fastify hosting shorthand, optional database integration, the per-surface assistant tool catalogue and the person-context prompt a host composes into its conversations' instructions."
439
443
  },
440
444
  {
441
445
  "subpath": "./server/types",
@@ -458,25 +462,25 @@
458
462
  },
459
463
  "packageJson": {
460
464
  "dependencies": {
461
- "@jskit-ai/assistant-core": "0.2.24",
465
+ "@jskit-ai/assistant-core": "0.2.26",
462
466
  "json-rest-schema": "^1.0.17"
463
467
  },
464
468
  "peerDependencies": {
465
- "@jskit-ai/http-runtime": "0.2.10",
466
- "@jskit-ai/http-web": "0.2.18",
467
- "@jskit-ai/kernel": "0.2.10",
468
- "@jskit-ai/realtime": "0.2.16",
469
- "@jskit-ai/shell-web": "0.2.13",
469
+ "@jskit-ai/http-runtime": "0.2.12",
470
+ "@jskit-ai/http-web": "0.2.20",
471
+ "@jskit-ai/kernel": "0.2.12",
472
+ "@jskit-ai/realtime": "0.2.18",
473
+ "@jskit-ai/shell-web": "0.2.15",
470
474
  "@tanstack/vue-query": "^5.90.5",
471
475
  "vue": "^3.5.13",
472
476
  "vuetify": "^4.0.0",
473
- "@jskit-ai/database-runtime": "0.1.259"
477
+ "@jskit-ai/database-runtime": "0.1.261"
474
478
  }
475
479
  }
476
480
  },
477
481
  {
478
482
  "packageId": "@jskit-ai/assistant-voice",
479
- "version": "0.2.26",
483
+ "version": "0.2.28",
480
484
  "description": "Duplex voice conversations with application-owned targets, authorization and speech services.",
481
485
  "jskit": {
482
486
  "kind": "runtime",
@@ -518,11 +522,11 @@
518
522
  },
519
523
  "packageJson": {
520
524
  "dependencies": {
521
- "@jskit-ai/assistant-core": "0.2.24",
525
+ "@jskit-ai/assistant-core": "0.2.26",
522
526
  "ws": "^8.20.1"
523
527
  },
524
528
  "peerDependencies": {
525
- "@jskit-ai/kernel": "0.2.10",
529
+ "@jskit-ai/kernel": "0.2.12",
526
530
  "vue": "^3.5.13",
527
531
  "vuetify": "^4.3.0"
528
532
  }
@@ -530,7 +534,7 @@
530
534
  },
531
535
  {
532
536
  "packageId": "@jskit-ai/assistant-voice-sherpa",
533
- "version": "0.1.73",
537
+ "version": "0.1.75",
534
538
  "description": "Optional native Sherpa speech engine and explicit model preparation for assistant voice.",
535
539
  "jskit": {
536
540
  "kind": "runtime",
@@ -568,14 +572,14 @@
568
572
  },
569
573
  "packageJson": {
570
574
  "dependencies": {
571
- "@jskit-ai/assistant-voice": "0.2.26",
575
+ "@jskit-ai/assistant-voice": "0.2.28",
572
576
  "sherpa-onnx-node": "1.13.6"
573
577
  }
574
578
  }
575
579
  },
576
580
  {
577
581
  "packageId": "@jskit-ai/auth-core",
578
- "version": "0.2.10",
582
+ "version": "0.2.12",
579
583
  "jskit": {
580
584
  "kind": "runtime",
581
585
  "capabilities": {
@@ -658,13 +662,13 @@
658
662
  "json-rest-schema": "^1.0.17"
659
663
  },
660
664
  "peerDependencies": {
661
- "@jskit-ai/kernel": "0.2.10"
665
+ "@jskit-ai/kernel": "0.2.12"
662
666
  }
663
667
  }
664
668
  },
665
669
  {
666
670
  "packageId": "@jskit-ai/auth-provider-local-core",
667
- "version": "0.2.13",
671
+ "version": "0.2.15",
668
672
  "description": "Local auth provider with a file backend default, no database requirement, and optional Google, Microsoft and GitHub sign-in.",
669
673
  "jskit": {
670
674
  "kind": "runtime",
@@ -722,14 +726,14 @@
722
726
  "openid-client": "6.8.8"
723
727
  },
724
728
  "peerDependencies": {
725
- "@jskit-ai/auth-core": "0.2.10",
726
- "@jskit-ai/kernel": "0.2.10"
729
+ "@jskit-ai/auth-core": "0.2.12",
730
+ "@jskit-ai/kernel": "0.2.12"
727
731
  }
728
732
  }
729
733
  },
730
734
  {
731
735
  "packageId": "@jskit-ai/auth-provider-local-db-core",
732
- "version": "0.1.154",
736
+ "version": "0.1.156",
733
737
  "description": "Database-backed local auth storage backend for JSKIT local auth.",
734
738
  "jskit": {
735
739
  "kind": "runtime",
@@ -804,17 +808,17 @@
804
808
  },
805
809
  "packageJson": {
806
810
  "dependencies": {
807
- "@jskit-ai/auth-provider-local-core": "0.2.13",
808
- "@jskit-ai/database-runtime": "0.1.259"
811
+ "@jskit-ai/auth-provider-local-core": "0.2.15",
812
+ "@jskit-ai/database-runtime": "0.1.261"
809
813
  },
810
814
  "peerDependencies": {
811
- "@jskit-ai/kernel": "0.2.10"
815
+ "@jskit-ai/kernel": "0.2.12"
812
816
  }
813
817
  }
814
818
  },
815
819
  {
816
820
  "packageId": "@jskit-ai/auth-provider-oidc-core",
817
- "version": "0.2.17",
821
+ "version": "0.2.19",
818
822
  "description": "Sign in through any OpenID Connect issuer: self-registration or a static client, app-owned sessions, and back-channel logout.",
819
823
  "jskit": {
820
824
  "kind": "runtime",
@@ -888,14 +892,14 @@
888
892
  "openid-client": "6.8.8"
889
893
  },
890
894
  "peerDependencies": {
891
- "@jskit-ai/auth-core": "0.2.10",
892
- "@jskit-ai/kernel": "0.2.10"
895
+ "@jskit-ai/auth-core": "0.2.12",
896
+ "@jskit-ai/kernel": "0.2.12"
893
897
  }
894
898
  }
895
899
  },
896
900
  {
897
901
  "packageId": "@jskit-ai/auth-provider-supabase-core",
898
- "version": "0.2.12",
902
+ "version": "0.2.14",
899
903
  "jskit": {
900
904
  "kind": "runtime",
901
905
  "capabilities": {
@@ -946,14 +950,14 @@
946
950
  "ws": "^8.21.1"
947
951
  },
948
952
  "peerDependencies": {
949
- "@jskit-ai/auth-core": "0.2.10",
950
- "@jskit-ai/kernel": "0.2.10"
953
+ "@jskit-ai/auth-core": "0.2.12",
954
+ "@jskit-ai/kernel": "0.2.12"
951
955
  }
952
956
  }
953
957
  },
954
958
  {
955
959
  "packageId": "@jskit-ai/auth-web",
956
- "version": "0.2.15",
960
+ "version": "0.2.17",
957
961
  "description": "Auth web module: Fastify auth routes plus web login/sign-out scaffolds.",
958
962
  "jskit": {
959
963
  "kind": "runtime",
@@ -1005,7 +1009,7 @@
1005
1009
  },
1006
1010
  {
1007
1011
  "subpath": "./test/playwright",
1008
- "summary": "Exports the localhost-only Playwright helper for creating a dev-auth session in the tested browser context."
1012
+ "summary": "Exports the localhost-only Playwright helpers that create a dev-auth session in the tested browser context or in an API request context, such as a browser test worker's sign-in."
1009
1013
  },
1010
1014
  {
1011
1015
  "subpath": "./server/managedPreviewIdentity",
@@ -1225,10 +1229,10 @@
1225
1229
  },
1226
1230
  "packageJson": {
1227
1231
  "peerDependencies": {
1228
- "@jskit-ai/auth-core": "0.2.10",
1229
- "@jskit-ai/http-runtime": "0.2.10",
1230
- "@jskit-ai/kernel": "0.2.10",
1231
- "@jskit-ai/shell-web": "0.2.13",
1232
+ "@jskit-ai/auth-core": "0.2.12",
1233
+ "@jskit-ai/http-runtime": "0.2.12",
1234
+ "@jskit-ai/kernel": "0.2.12",
1235
+ "@jskit-ai/shell-web": "0.2.15",
1232
1236
  "@tanstack/vue-query": "^5.90.5",
1233
1237
  "pinia": "^4.0.3",
1234
1238
  "vue": "^3.5.44",
@@ -1239,7 +1243,7 @@
1239
1243
  },
1240
1244
  {
1241
1245
  "packageId": "@jskit-ai/connector-google-calendar",
1242
- "version": "0.2.11",
1246
+ "version": "0.2.13",
1243
1247
  "description": "Google Calendar account configuration and event operations for JSKIT connectors.",
1244
1248
  "jskit": {
1245
1249
  "kind": "runtime",
@@ -1258,17 +1262,17 @@
1258
1262
  },
1259
1263
  "packageJson": {
1260
1264
  "dependencies": {
1261
- "@jskit-ai/connectors-core": "0.2.11",
1265
+ "@jskit-ai/connectors-core": "0.2.13",
1262
1266
  "json-rest-schema": "^1.0.17"
1263
1267
  },
1264
1268
  "peerDependencies": {
1265
- "@jskit-ai/kernel": "0.2.10"
1269
+ "@jskit-ai/kernel": "0.2.12"
1266
1270
  }
1267
1271
  }
1268
1272
  },
1269
1273
  {
1270
1274
  "packageId": "@jskit-ai/connectors-catalog",
1271
- "version": "0.2.11",
1275
+ "version": "0.2.13",
1272
1276
  "description": "Provider definitions and focused API operations for JSKIT connectors.",
1273
1277
  "jskit": {
1274
1278
  "kind": "runtime",
@@ -1291,20 +1295,20 @@
1291
1295
  "@aws-sdk/client-redshift-data": "3.1128.0",
1292
1296
  "@aws-sdk/client-s3": "3.1128.0",
1293
1297
  "@aws-sdk/s3-request-presigner": "3.1128.0",
1294
- "@jskit-ai/connectors-core": "0.2.11",
1298
+ "@jskit-ai/connectors-core": "0.2.13",
1295
1299
  "@modelcontextprotocol/sdk": "1.32.1",
1296
1300
  "@smithy/fetch-http-handler": "5.8.0",
1297
1301
  "jose": "^6.1.3",
1298
1302
  "json-rest-schema": "^1.0.17"
1299
1303
  },
1300
1304
  "peerDependencies": {
1301
- "@jskit-ai/kernel": "0.2.10"
1305
+ "@jskit-ai/kernel": "0.2.12"
1302
1306
  }
1303
1307
  }
1304
1308
  },
1305
1309
  {
1306
1310
  "packageId": "@jskit-ai/connectors-core",
1307
- "version": "0.2.11",
1311
+ "version": "0.2.13",
1308
1312
  "description": "Portable integration configuration and server-side account connection runtime.",
1309
1313
  "jskit": {
1310
1314
  "kind": "runtime",
@@ -1348,14 +1352,14 @@
1348
1352
  "proper-lockfile": "4.1.2"
1349
1353
  },
1350
1354
  "peerDependencies": {
1351
- "@jskit-ai/http-runtime": "0.2.10",
1352
- "@jskit-ai/kernel": "0.2.10"
1355
+ "@jskit-ai/http-runtime": "0.2.12",
1356
+ "@jskit-ai/kernel": "0.2.12"
1353
1357
  }
1354
1358
  }
1355
1359
  },
1356
1360
  {
1357
1361
  "packageId": "@jskit-ai/connectors-web",
1358
- "version": "0.2.11",
1362
+ "version": "0.2.13",
1359
1363
  "description": "Shared Vue fields for portable application integration configuration.",
1360
1364
  "jskit": {
1361
1365
  "kind": "runtime",
@@ -1374,10 +1378,10 @@
1374
1378
  },
1375
1379
  "packageJson": {
1376
1380
  "dependencies": {
1377
- "@jskit-ai/connectors-core": "0.2.11"
1381
+ "@jskit-ai/connectors-core": "0.2.13"
1378
1382
  },
1379
1383
  "peerDependencies": {
1380
- "@jskit-ai/kernel": "0.2.10",
1384
+ "@jskit-ai/kernel": "0.2.12",
1381
1385
  "vue": "^3.5.13",
1382
1386
  "vuetify": "^4.0.0"
1383
1387
  }
@@ -1385,7 +1389,7 @@
1385
1389
  },
1386
1390
  {
1387
1391
  "packageId": "@jskit-ai/console-core",
1388
- "version": "0.2.12",
1392
+ "version": "0.2.14",
1389
1393
  "description": "Console runtime: console settings schema, bootstrap flags, actions, and HTTP routes.",
1390
1394
  "jskit": {
1391
1395
  "kind": "runtime",
@@ -1466,21 +1470,21 @@
1466
1470
  },
1467
1471
  "packageJson": {
1468
1472
  "dependencies": {
1469
- "@jskit-ai/database-runtime": "0.1.259",
1470
- "@jskit-ai/resource-crud-core": "0.1.201",
1471
- "@jskit-ai/users-core": "0.2.12",
1473
+ "@jskit-ai/database-runtime": "0.1.261",
1474
+ "@jskit-ai/resource-crud-core": "0.1.203",
1475
+ "@jskit-ai/users-core": "0.2.14",
1472
1476
  "json-rest-schema": "^1.0.17"
1473
1477
  },
1474
1478
  "peerDependencies": {
1475
- "@jskit-ai/auth-core": "0.2.10",
1476
- "@jskit-ai/http-runtime": "0.2.10",
1477
- "@jskit-ai/kernel": "0.2.10"
1479
+ "@jskit-ai/auth-core": "0.2.12",
1480
+ "@jskit-ai/http-runtime": "0.2.12",
1481
+ "@jskit-ai/kernel": "0.2.12"
1478
1482
  }
1479
1483
  }
1480
1484
  },
1481
1485
  {
1482
1486
  "packageId": "@jskit-ai/console-web",
1483
- "version": "0.1.237",
1487
+ "version": "0.1.239",
1484
1488
  "description": "Authenticated console surface scaffold and surface policy wiring.",
1485
1489
  "jskit": {
1486
1490
  "kind": "runtime",
@@ -1582,17 +1586,17 @@
1582
1586
  },
1583
1587
  "packageJson": {
1584
1588
  "dependencies": {
1585
- "@jskit-ai/console-core": "0.2.12"
1589
+ "@jskit-ai/console-core": "0.2.14"
1586
1590
  },
1587
1591
  "peerDependencies": {
1588
- "@jskit-ai/auth-web": "0.2.15",
1589
- "@jskit-ai/shell-web": "0.2.13"
1592
+ "@jskit-ai/auth-web": "0.2.17",
1593
+ "@jskit-ai/shell-web": "0.2.15"
1590
1594
  }
1591
1595
  }
1592
1596
  },
1593
1597
  {
1594
1598
  "packageId": "@jskit-ai/crud-core",
1595
- "version": "0.2.11",
1599
+ "version": "0.2.13",
1596
1600
  "description": "Shared server-side CRUD service, repository, route, and query helpers.",
1597
1601
  "jskit": {
1598
1602
  "kind": "runtime",
@@ -1611,21 +1615,21 @@
1611
1615
  },
1612
1616
  "packageJson": {
1613
1617
  "dependencies": {
1614
- "@jskit-ai/database-runtime": "0.1.259",
1615
- "@jskit-ai/json-rest-api-core": "0.2.11",
1616
- "@jskit-ai/resource-crud-core": "0.1.201",
1618
+ "@jskit-ai/database-runtime": "0.1.261",
1619
+ "@jskit-ai/json-rest-api-core": "0.2.13",
1620
+ "@jskit-ai/resource-crud-core": "0.1.203",
1617
1621
  "json-rest-schema": "^1.0.17",
1618
- "json-rest-api": "2.1.0"
1622
+ "json-rest-api": "2.4.0"
1619
1623
  },
1620
1624
  "peerDependencies": {
1621
- "@jskit-ai/http-runtime": "0.2.10",
1622
- "@jskit-ai/kernel": "0.2.10"
1625
+ "@jskit-ai/http-runtime": "0.2.12",
1626
+ "@jskit-ai/kernel": "0.2.12"
1623
1627
  }
1624
1628
  }
1625
1629
  },
1626
1630
  {
1627
1631
  "packageId": "@jskit-ai/database-runtime",
1628
- "version": "0.1.259",
1632
+ "version": "0.1.261",
1629
1633
  "jskit": {
1630
1634
  "kind": "runtime",
1631
1635
  "capabilities": {
@@ -1669,6 +1673,10 @@
1669
1673
  "subpath": "./server/foreignKeyMigrations",
1670
1674
  "summary": "Adds a single-column foreign key only when it is missing, refusing rows without a parent, for constraints migrations on fresh and already-migrated databases."
1671
1675
  },
1676
+ {
1677
+ "subpath": "./server/testDatabases",
1678
+ "summary": "Gives each test file or browser worker running at once its own disposable copy of TEST_DB_NAME or BROWSER_TEST_DB_NAME, restored from a schema snapshot keyed by the migrations' names and contents (MySQL, MariaDB and PostgreSQL), and counts the statements a piece of work sends, for query-count guards."
1679
+ },
1672
1680
  {
1673
1681
  "subpath": "./shared",
1674
1682
  "summary": "Exports shared repository helpers (transactions, record ids, JSON columns, visibility, duplicate-entry detection and date/time serialization)."
@@ -1686,13 +1694,13 @@
1686
1694
  "knex": "^3.1.0"
1687
1695
  },
1688
1696
  "peerDependencies": {
1689
- "@jskit-ai/kernel": "0.2.10"
1697
+ "@jskit-ai/kernel": "0.2.12"
1690
1698
  }
1691
1699
  }
1692
1700
  },
1693
1701
  {
1694
1702
  "packageId": "@jskit-ai/database-runtime-mysql",
1695
- "version": "0.1.257",
1703
+ "version": "0.1.259",
1696
1704
  "jskit": {
1697
1705
  "kind": "runtime",
1698
1706
  "capabilities": {
@@ -1735,17 +1743,17 @@
1735
1743
  },
1736
1744
  "packageJson": {
1737
1745
  "dependencies": {
1738
- "@jskit-ai/database-runtime": "0.1.259",
1746
+ "@jskit-ai/database-runtime": "0.1.261",
1739
1747
  "mysql2": "^3.11.2"
1740
1748
  },
1741
1749
  "peerDependencies": {
1742
- "@jskit-ai/kernel": "0.2.10"
1750
+ "@jskit-ai/kernel": "0.2.12"
1743
1751
  }
1744
1752
  }
1745
1753
  },
1746
1754
  {
1747
1755
  "packageId": "@jskit-ai/database-runtime-postgres",
1748
- "version": "0.1.256",
1756
+ "version": "0.1.258",
1749
1757
  "jskit": {
1750
1758
  "kind": "runtime",
1751
1759
  "capabilities": {
@@ -1788,17 +1796,17 @@
1788
1796
  },
1789
1797
  "packageJson": {
1790
1798
  "dependencies": {
1791
- "@jskit-ai/database-runtime": "0.1.259",
1799
+ "@jskit-ai/database-runtime": "0.1.261",
1792
1800
  "pg": "^8.13.1"
1793
1801
  },
1794
1802
  "peerDependencies": {
1795
- "@jskit-ai/kernel": "0.2.10"
1803
+ "@jskit-ai/kernel": "0.2.12"
1796
1804
  }
1797
1805
  }
1798
1806
  },
1799
1807
  {
1800
1808
  "packageId": "@jskit-ai/http-runtime",
1801
- "version": "0.2.10",
1809
+ "version": "0.2.12",
1802
1810
  "jskit": {
1803
1811
  "kind": "runtime",
1804
1812
  "capabilities": {
@@ -1836,13 +1844,13 @@
1836
1844
  "json-rest-schema": "^1.0.17"
1837
1845
  },
1838
1846
  "peerDependencies": {
1839
- "@jskit-ai/kernel": "0.2.10"
1847
+ "@jskit-ai/kernel": "0.2.12"
1840
1848
  }
1841
1849
  }
1842
1850
  },
1843
1851
  {
1844
1852
  "packageId": "@jskit-ai/http-web",
1845
- "version": "0.2.18",
1853
+ "version": "0.2.20",
1846
1854
  "description": "Neutral Vue request, command, resource, and CRUD UI runtime for JSKIT web applications.",
1847
1855
  "jskit": {
1848
1856
  "kind": "runtime",
@@ -1916,13 +1924,13 @@
1916
1924
  },
1917
1925
  "packageJson": {
1918
1926
  "dependencies": {
1919
- "@jskit-ai/resource-crud-core": "0.1.201"
1927
+ "@jskit-ai/resource-crud-core": "0.1.203"
1920
1928
  },
1921
1929
  "peerDependencies": {
1922
- "@jskit-ai/http-runtime": "0.2.10",
1923
- "@jskit-ai/kernel": "0.2.10",
1924
- "@jskit-ai/realtime": "0.2.16",
1925
- "@jskit-ai/shell-web": "0.2.13",
1930
+ "@jskit-ai/http-runtime": "0.2.12",
1931
+ "@jskit-ai/kernel": "0.2.12",
1932
+ "@jskit-ai/realtime": "0.2.18",
1933
+ "@jskit-ai/shell-web": "0.2.15",
1926
1934
  "@tanstack/vue-query": "^5.90.5",
1927
1935
  "vue": "^3.5.13",
1928
1936
  "vue-router": "^5.0.4",
@@ -1932,7 +1940,7 @@
1932
1940
  },
1933
1941
  {
1934
1942
  "packageId": "@jskit-ai/json-rest-api-core",
1935
- "version": "0.2.11",
1943
+ "version": "0.2.13",
1936
1944
  "description": "Shared internal json-rest-api host runtime with autofilter, query-projection, and row-policy support.",
1937
1945
  "jskit": {
1938
1946
  "kind": "runtime",
@@ -1975,18 +1983,18 @@
1975
1983
  },
1976
1984
  "packageJson": {
1977
1985
  "dependencies": {
1978
- "@jskit-ai/database-runtime": "0.1.259",
1979
- "@jskit-ai/resource-crud-core": "0.1.201",
1980
- "json-rest-api": "2.1.0"
1986
+ "@jskit-ai/database-runtime": "0.1.261",
1987
+ "@jskit-ai/resource-crud-core": "0.1.203",
1988
+ "json-rest-api": "2.4.0"
1981
1989
  },
1982
1990
  "peerDependencies": {
1983
- "@jskit-ai/kernel": "0.2.10"
1991
+ "@jskit-ai/kernel": "0.2.12"
1984
1992
  }
1985
1993
  }
1986
1994
  },
1987
1995
  {
1988
1996
  "packageId": "@jskit-ai/material-web",
1989
- "version": "0.1.2",
1997
+ "version": "0.1.3",
1990
1998
  "description": "Exact Material 3 for JSKIT Vuetify apps: seed-generated light and dark schemes, Material Symbols Rounded icon aliases, Roboto Flex and Material 3 component defaults.",
1991
1999
  "jskit": {
1992
2000
  "kind": "runtime",
@@ -2015,7 +2023,7 @@
2015
2023
  },
2016
2024
  {
2017
2025
  "packageId": "@jskit-ai/mobile-capacitor",
2018
- "version": "0.2.13",
2026
+ "version": "0.2.15",
2019
2027
  "description": "Thin Capacitor client integration for JSKIT mobile-shell launch routing and auth callback completion.",
2020
2028
  "jskit": {
2021
2029
  "kind": "runtime",
@@ -2066,14 +2074,14 @@
2066
2074
  "@capacitor/core": "^8.5.3"
2067
2075
  },
2068
2076
  "peerDependencies": {
2069
- "@jskit-ai/kernel": "0.2.10",
2070
- "@jskit-ai/shell-web": "0.2.13"
2077
+ "@jskit-ai/kernel": "0.2.12",
2078
+ "@jskit-ai/shell-web": "0.2.15"
2071
2079
  }
2072
2080
  }
2073
2081
  },
2074
2082
  {
2075
2083
  "packageId": "@jskit-ai/oidc-issuer-core",
2076
- "version": "0.1.18",
2084
+ "version": "0.1.20",
2077
2085
  "description": "OpenID Connect accounts hub: one sign-in for all of an owner's apps, with approval of every production app.",
2078
2086
  "jskit": {
2079
2087
  "kind": "runtime",
@@ -2166,20 +2174,20 @@
2166
2174
  },
2167
2175
  "packageJson": {
2168
2176
  "dependencies": {
2169
- "@jskit-ai/database-runtime": "0.1.259",
2177
+ "@jskit-ai/database-runtime": "0.1.261",
2170
2178
  "jose": "6.2.12",
2171
2179
  "knex": "^3.1.0",
2172
2180
  "nodemailer": "10.2.1",
2173
2181
  "oidc-provider": "9.12.2"
2174
2182
  },
2175
2183
  "peerDependencies": {
2176
- "@jskit-ai/kernel": "0.2.10"
2184
+ "@jskit-ai/kernel": "0.2.12"
2177
2185
  }
2178
2186
  }
2179
2187
  },
2180
2188
  {
2181
2189
  "packageId": "@jskit-ai/payments-core",
2182
- "version": "0.2.1",
2190
+ "version": "0.2.2",
2183
2191
  "description": "Application-owned payment configuration, subscription access and transactional usage credits.",
2184
2192
  "jskit": {
2185
2193
  "kind": "runtime",
@@ -2231,7 +2239,7 @@
2231
2239
  },
2232
2240
  {
2233
2241
  "packageId": "@jskit-ai/payments-web",
2234
- "version": "0.2.10",
2242
+ "version": "0.2.12",
2235
2243
  "description": "Application-owned billing views for JSKIT Vue applications.",
2236
2244
  "jskit": {
2237
2245
  "kind": "runtime",
@@ -2250,7 +2258,7 @@
2250
2258
  },
2251
2259
  "packageJson": {
2252
2260
  "peerDependencies": {
2253
- "@jskit-ai/kernel": "0.2.10",
2261
+ "@jskit-ai/kernel": "0.2.12",
2254
2262
  "vue": "^3.5.13",
2255
2263
  "vuetify": "^4.0.0"
2256
2264
  }
@@ -2258,7 +2266,7 @@
2258
2266
  },
2259
2267
  {
2260
2268
  "packageId": "@jskit-ai/realtime",
2261
- "version": "0.2.16",
2269
+ "version": "0.2.18",
2262
2270
  "description": "Thin, generic realtime runtime wrappers for socket.io server and client.",
2263
2271
  "jskit": {
2264
2272
  "kind": "runtime",
@@ -2386,14 +2394,14 @@
2386
2394
  "socket.io-client": "^4.8.3"
2387
2395
  },
2388
2396
  "peerDependencies": {
2389
- "@jskit-ai/kernel": "0.2.10",
2397
+ "@jskit-ai/kernel": "0.2.12",
2390
2398
  "vue": "^3.5.13"
2391
2399
  }
2392
2400
  }
2393
2401
  },
2394
2402
  {
2395
2403
  "packageId": "@jskit-ai/resource-core",
2396
- "version": "0.1.201",
2404
+ "version": "0.1.203",
2397
2405
  "description": "Generic resource-definition helpers and schema-definition normalization.",
2398
2406
  "jskit": {
2399
2407
  "kind": "runtime",
@@ -2414,13 +2422,13 @@
2414
2422
  },
2415
2423
  "packageJson": {
2416
2424
  "peerDependencies": {
2417
- "@jskit-ai/kernel": "0.2.10"
2425
+ "@jskit-ai/kernel": "0.2.12"
2418
2426
  }
2419
2427
  }
2420
2428
  },
2421
2429
  {
2422
2430
  "packageId": "@jskit-ai/resource-crud-core",
2423
- "version": "0.1.201",
2431
+ "version": "0.1.203",
2424
2432
  "description": "Shared CRUD resource, field, lookup, filter, and namespace contracts.",
2425
2433
  "jskit": {
2426
2434
  "kind": "runtime",
@@ -2441,16 +2449,16 @@
2441
2449
  },
2442
2450
  "packageJson": {
2443
2451
  "dependencies": {
2444
- "@jskit-ai/resource-core": "0.1.201"
2452
+ "@jskit-ai/resource-core": "0.1.203"
2445
2453
  },
2446
2454
  "peerDependencies": {
2447
- "@jskit-ai/kernel": "0.2.10"
2455
+ "@jskit-ai/kernel": "0.2.12"
2448
2456
  }
2449
2457
  }
2450
2458
  },
2451
2459
  {
2452
2460
  "packageId": "@jskit-ai/rewarded-core",
2453
- "version": "0.2.12",
2461
+ "version": "0.2.14",
2454
2462
  "description": "Rewarded workflow runtime plus internal CRUD providers for rules, provider configs, watch sessions, and unlock receipts.",
2455
2463
  "jskit": {
2456
2464
  "kind": "runtime",
@@ -2565,24 +2573,24 @@
2565
2573
  },
2566
2574
  "packageJson": {
2567
2575
  "dependencies": {
2568
- "@jskit-ai/crud-core": "0.2.11",
2569
- "@jskit-ai/database-runtime": "0.1.259",
2570
- "@jskit-ai/json-rest-api-core": "0.2.11",
2571
- "@jskit-ai/resource-crud-core": "0.1.201",
2572
- "@jskit-ai/users-core": "0.2.12",
2573
- "@jskit-ai/workspaces-core": "0.2.12",
2576
+ "@jskit-ai/crud-core": "0.2.13",
2577
+ "@jskit-ai/database-runtime": "0.1.261",
2578
+ "@jskit-ai/json-rest-api-core": "0.2.13",
2579
+ "@jskit-ai/resource-crud-core": "0.1.203",
2580
+ "@jskit-ai/users-core": "0.2.14",
2581
+ "@jskit-ai/workspaces-core": "0.2.14",
2574
2582
  "json-rest-schema": "^1.0.17"
2575
2583
  },
2576
2584
  "peerDependencies": {
2577
- "@jskit-ai/auth-core": "0.2.10",
2578
- "@jskit-ai/http-runtime": "0.2.10",
2579
- "@jskit-ai/kernel": "0.2.10"
2585
+ "@jskit-ai/auth-core": "0.2.12",
2586
+ "@jskit-ai/http-runtime": "0.2.12",
2587
+ "@jskit-ai/kernel": "0.2.12"
2580
2588
  }
2581
2589
  }
2582
2590
  },
2583
2591
  {
2584
2592
  "packageId": "@jskit-ai/rewarded-web",
2585
- "version": "0.2.15",
2593
+ "version": "0.2.17",
2586
2594
  "description": "Rewarded gate client workflow with explicitly composed application delivery.",
2587
2595
  "jskit": {
2588
2596
  "kind": "runtime",
@@ -2631,19 +2639,19 @@
2631
2639
  },
2632
2640
  "packageJson": {
2633
2641
  "dependencies": {
2634
- "@jskit-ai/rewarded-core": "0.2.12"
2642
+ "@jskit-ai/rewarded-core": "0.2.14"
2635
2643
  },
2636
2644
  "peerDependencies": {
2637
- "@jskit-ai/http-runtime": "0.2.10",
2638
- "@jskit-ai/kernel": "0.2.10",
2639
- "@jskit-ai/shell-web": "0.2.13",
2645
+ "@jskit-ai/http-runtime": "0.2.12",
2646
+ "@jskit-ai/kernel": "0.2.12",
2647
+ "@jskit-ai/shell-web": "0.2.15",
2640
2648
  "vue": "^3.5.13"
2641
2649
  }
2642
2650
  }
2643
2651
  },
2644
2652
  {
2645
2653
  "packageId": "@jskit-ai/shell-web",
2646
- "version": "0.2.13",
2654
+ "version": "0.2.15",
2647
2655
  "description": "Web shell layout runtime with outlet-based placement contributions.",
2648
2656
  "jskit": {
2649
2657
  "kind": "runtime",
@@ -2682,6 +2690,7 @@
2682
2690
  "@jskit-ai/shell-web/client/navigation/documentNavigation",
2683
2691
  "@jskit-ai/shell-web/client/composables/useShellAppBar",
2684
2692
  "@jskit-ai/shell-web/client/composables/useShellLayoutState",
2693
+ "@jskit-ai/shell-web/client/composables/useShellPageClose",
2685
2694
  "@jskit-ai/shell-web/client/composables/useShellPageTitle",
2686
2695
  "@jskit-ai/shell-web/client/composables/useShellWindowSizeClass",
2687
2696
  "@jskit-ai/shell-web/client/types"
@@ -2999,10 +3008,10 @@
2999
3008
  },
3000
3009
  "packageJson": {
3001
3010
  "dependencies": {
3002
- "@jskit-ai/architecture-inspector": "0.1.8"
3011
+ "@jskit-ai/architecture-inspector": "0.1.10"
3003
3012
  },
3004
3013
  "peerDependencies": {
3005
- "@jskit-ai/kernel": "0.2.10",
3014
+ "@jskit-ai/kernel": "0.2.12",
3006
3015
  "pinia": "^4.0.3",
3007
3016
  "vue": "^3.5.44",
3008
3017
  "vue-router": "^5.3.1",
@@ -3012,7 +3021,7 @@
3012
3021
  },
3013
3022
  {
3014
3023
  "packageId": "@jskit-ai/storage-runtime",
3015
- "version": "0.1.256",
3024
+ "version": "0.1.258",
3016
3025
  "jskit": {
3017
3026
  "kind": "runtime",
3018
3027
  "capabilities": {
@@ -3061,13 +3070,13 @@
3061
3070
  "unstorage": "^1.17.5"
3062
3071
  },
3063
3072
  "peerDependencies": {
3064
- "@jskit-ai/kernel": "0.2.10"
3073
+ "@jskit-ai/kernel": "0.2.12"
3065
3074
  }
3066
3075
  }
3067
3076
  },
3068
3077
  {
3069
3078
  "packageId": "@jskit-ai/uploads-image-web",
3070
- "version": "0.2.10",
3079
+ "version": "0.2.12",
3071
3080
  "description": "Reusable client-side image upload runtime with pre-upload image editing.",
3072
3081
  "jskit": {
3073
3082
  "kind": "runtime",
@@ -3129,7 +3138,7 @@
3129
3138
  },
3130
3139
  "packageJson": {
3131
3140
  "dependencies": {
3132
- "@jskit-ai/uploads-runtime": "0.2.10",
3141
+ "@jskit-ai/uploads-runtime": "0.2.12",
3133
3142
  "@uppy/compressor": "^3.1.0",
3134
3143
  "@uppy/core": "^5.2.0",
3135
3144
  "@uppy/dashboard": "^5.1.1",
@@ -3137,14 +3146,14 @@
3137
3146
  "@uppy/xhr-upload": "^5.1.1"
3138
3147
  },
3139
3148
  "peerDependencies": {
3140
- "@jskit-ai/kernel": "0.2.10",
3149
+ "@jskit-ai/kernel": "0.2.12",
3141
3150
  "vue": "^3.5.13"
3142
3151
  }
3143
3152
  }
3144
3153
  },
3145
3154
  {
3146
3155
  "packageId": "@jskit-ai/uploads-runtime",
3147
- "version": "0.2.10",
3156
+ "version": "0.2.12",
3148
3157
  "description": "Reusable upload runtime primitives for multipart parsing, policy validation, and blob storage.",
3149
3158
  "jskit": {
3150
3159
  "kind": "runtime",
@@ -3213,13 +3222,13 @@
3213
3222
  "@fastify/multipart": "^10.1.1"
3214
3223
  },
3215
3224
  "peerDependencies": {
3216
- "@jskit-ai/kernel": "0.2.10"
3225
+ "@jskit-ai/kernel": "0.2.12"
3217
3226
  }
3218
3227
  }
3219
3228
  },
3220
3229
  {
3221
3230
  "packageId": "@jskit-ai/users-core",
3222
- "version": "0.2.12",
3231
+ "version": "0.2.14",
3223
3232
  "description": "Users/account runtime plus HTTP routes for account features.",
3224
3233
  "jskit": {
3225
3234
  "kind": "runtime",
@@ -3387,24 +3396,24 @@
3387
3396
  },
3388
3397
  "packageJson": {
3389
3398
  "dependencies": {
3390
- "@jskit-ai/database-runtime": "0.1.259",
3391
- "@jskit-ai/json-rest-api-core": "0.2.11",
3392
- "@jskit-ai/resource-core": "0.1.201",
3393
- "@jskit-ai/resource-crud-core": "0.1.201",
3394
- "@jskit-ai/storage-runtime": "0.1.256",
3395
- "@jskit-ai/uploads-runtime": "0.2.10",
3399
+ "@jskit-ai/database-runtime": "0.1.261",
3400
+ "@jskit-ai/json-rest-api-core": "0.2.13",
3401
+ "@jskit-ai/resource-core": "0.1.203",
3402
+ "@jskit-ai/resource-crud-core": "0.1.203",
3403
+ "@jskit-ai/storage-runtime": "0.1.258",
3404
+ "@jskit-ai/uploads-runtime": "0.2.12",
3396
3405
  "json-rest-schema": "^1.0.17"
3397
3406
  },
3398
3407
  "peerDependencies": {
3399
- "@jskit-ai/auth-core": "0.2.10",
3400
- "@jskit-ai/http-runtime": "0.2.10",
3401
- "@jskit-ai/kernel": "0.2.10"
3408
+ "@jskit-ai/auth-core": "0.2.12",
3409
+ "@jskit-ai/http-runtime": "0.2.12",
3410
+ "@jskit-ai/kernel": "0.2.12"
3402
3411
  }
3403
3412
  }
3404
3413
  },
3405
3414
  {
3406
3415
  "packageId": "@jskit-ai/users-web",
3407
- "version": "0.2.20",
3416
+ "version": "0.2.22",
3408
3417
  "description": "Users web module with account, profile, and user-specific shell UI.",
3409
3418
  "jskit": {
3410
3419
  "kind": "runtime",
@@ -3609,15 +3618,15 @@
3609
3618
  },
3610
3619
  "packageJson": {
3611
3620
  "dependencies": {
3612
- "@jskit-ai/uploads-image-web": "0.2.10",
3613
- "@jskit-ai/users-core": "0.2.12"
3621
+ "@jskit-ai/uploads-image-web": "0.2.12",
3622
+ "@jskit-ai/users-core": "0.2.14"
3614
3623
  },
3615
3624
  "peerDependencies": {
3616
- "@jskit-ai/auth-web": "0.2.15",
3617
- "@jskit-ai/http-runtime": "0.2.10",
3618
- "@jskit-ai/http-web": "0.2.18",
3619
- "@jskit-ai/kernel": "0.2.10",
3620
- "@jskit-ai/shell-web": "0.2.13",
3625
+ "@jskit-ai/auth-web": "0.2.17",
3626
+ "@jskit-ai/http-runtime": "0.2.12",
3627
+ "@jskit-ai/http-web": "0.2.20",
3628
+ "@jskit-ai/kernel": "0.2.12",
3629
+ "@jskit-ai/shell-web": "0.2.15",
3621
3630
  "@tanstack/vue-query": "^5.90.5",
3622
3631
  "vue": "^3.5.13",
3623
3632
  "vue-router": "^5.0.4",
@@ -3627,7 +3636,7 @@
3627
3636
  },
3628
3637
  {
3629
3638
  "packageId": "@jskit-ai/workspaces-core",
3630
- "version": "0.2.12",
3639
+ "version": "0.2.14",
3631
3640
  "description": "Workspace tenancy runtime plus HTTP routes, role catalog, and workspace config scaffolding.",
3632
3641
  "jskit": {
3633
3642
  "kind": "runtime",
@@ -3798,23 +3807,23 @@
3798
3807
  },
3799
3808
  "packageJson": {
3800
3809
  "dependencies": {
3801
- "@jskit-ai/database-runtime": "0.1.259",
3802
- "@jskit-ai/json-rest-api-core": "0.2.11",
3803
- "@jskit-ai/resource-core": "0.1.201",
3804
- "@jskit-ai/resource-crud-core": "0.1.201",
3805
- "@jskit-ai/users-core": "0.2.12",
3810
+ "@jskit-ai/database-runtime": "0.1.261",
3811
+ "@jskit-ai/json-rest-api-core": "0.2.13",
3812
+ "@jskit-ai/resource-core": "0.1.203",
3813
+ "@jskit-ai/resource-crud-core": "0.1.203",
3814
+ "@jskit-ai/users-core": "0.2.14",
3806
3815
  "json-rest-schema": "^1.0.17"
3807
3816
  },
3808
3817
  "peerDependencies": {
3809
- "@jskit-ai/auth-core": "0.2.10",
3810
- "@jskit-ai/http-runtime": "0.2.10",
3811
- "@jskit-ai/kernel": "0.2.10"
3818
+ "@jskit-ai/auth-core": "0.2.12",
3819
+ "@jskit-ai/http-runtime": "0.2.12",
3820
+ "@jskit-ai/kernel": "0.2.12"
3812
3821
  }
3813
3822
  }
3814
3823
  },
3815
3824
  {
3816
3825
  "packageId": "@jskit-ai/workspaces-web",
3817
- "version": "0.2.20",
3826
+ "version": "0.2.22",
3818
3827
  "description": "Workspace web module: workspace selector, tools widget, workspace surfaces, members UI, and settings hosts.",
3819
3828
  "jskit": {
3820
3829
  "kind": "runtime",
@@ -4062,15 +4071,15 @@
4062
4071
  },
4063
4072
  "packageJson": {
4064
4073
  "dependencies": {
4065
- "@jskit-ai/users-core": "0.2.12",
4066
- "@jskit-ai/workspaces-core": "0.2.12"
4074
+ "@jskit-ai/users-core": "0.2.14",
4075
+ "@jskit-ai/workspaces-core": "0.2.14"
4067
4076
  },
4068
4077
  "peerDependencies": {
4069
- "@jskit-ai/auth-web": "0.2.15",
4070
- "@jskit-ai/http-web": "0.2.18",
4071
- "@jskit-ai/kernel": "0.2.10",
4072
- "@jskit-ai/shell-web": "0.2.13",
4073
- "@jskit-ai/users-web": "0.2.20",
4078
+ "@jskit-ai/auth-web": "0.2.17",
4079
+ "@jskit-ai/http-web": "0.2.20",
4080
+ "@jskit-ai/kernel": "0.2.12",
4081
+ "@jskit-ai/shell-web": "0.2.15",
4082
+ "@jskit-ai/users-web": "0.2.22",
4074
4083
  "@tanstack/vue-query": "^5.90.5",
4075
4084
  "vue": "^3.5.13",
4076
4085
  "vue-router": "^5.0.4",
@@ -4102,7 +4111,7 @@
4102
4111
  "@jskit-ai/shell-web"
4103
4112
  ],
4104
4113
  "packageId": "@jskit-ai/assistant-runtime",
4105
- "packageVersion": "0.2.26",
4114
+ "packageVersion": "0.2.28",
4106
4115
  "documentPath": "patterns/assistant-surface/PATTERN.md",
4107
4116
  "examplePath": "patterns/assistant-surface/example",
4108
4117
  "files": [
@@ -4134,7 +4143,7 @@
4134
4143
  "@jskit-ai/oidc-issuer-core"
4135
4144
  ],
4136
4145
  "packageId": "@jskit-ai/oidc-issuer-core",
4137
- "packageVersion": "0.1.18",
4146
+ "packageVersion": "0.1.20",
4138
4147
  "documentPath": "patterns/accounts-hub/PATTERN.md",
4139
4148
  "examplePath": "patterns/accounts-hub/example",
4140
4149
  "files": [
@@ -4164,10 +4173,11 @@
4164
4173
  "@jskit-ai/shell-web"
4165
4174
  ],
4166
4175
  "packageId": "@jskit-ai/auth-web",
4167
- "packageVersion": "0.2.15",
4176
+ "packageVersion": "0.2.17",
4168
4177
  "documentPath": "patterns/auth-surface/PATTERN.md",
4169
4178
  "examplePath": "patterns/auth-surface/example",
4170
4179
  "files": [
4180
+ "src/components/AppBrand.vue",
4171
4181
  "src/pages/auth/login.vue",
4172
4182
  "src/pages/auth/reset-password.vue",
4173
4183
  "src/pages/auth/signout.vue",
@@ -4202,7 +4212,7 @@
4202
4212
  "@jskit-ai/auth-web"
4203
4213
  ],
4204
4214
  "packageId": "@jskit-ai/auth-provider-oidc-core",
4205
- "packageVersion": "0.2.17",
4215
+ "packageVersion": "0.2.19",
4206
4216
  "documentPath": "patterns/oidc-sign-in/PATTERN.md",
4207
4217
  "examplePath": "patterns/oidc-sign-in/example",
4208
4218
  "files": [
@@ -4225,7 +4235,7 @@
4225
4235
  "@jskit-ai/auth-provider-supabase-core"
4226
4236
  ],
4227
4237
  "packageId": "@jskit-ai/auth-provider-supabase-core",
4228
- "packageVersion": "0.2.12",
4238
+ "packageVersion": "0.2.14",
4229
4239
  "documentPath": "patterns/supabase-auth/PATTERN.md",
4230
4240
  "examplePath": "patterns/supabase-auth/example",
4231
4241
  "files": [
@@ -4254,7 +4264,7 @@
4254
4264
  "@jskit-ai/connectors-core"
4255
4265
  ],
4256
4266
  "packageId": "@jskit-ai/connectors-catalog",
4257
- "packageVersion": "0.2.11",
4267
+ "packageVersion": "0.2.13",
4258
4268
  "documentPath": "patterns/ai-connections/PATTERN.md",
4259
4269
  "examplePath": "patterns/ai-connections/example",
4260
4270
  "files": [
@@ -4289,7 +4299,7 @@
4289
4299
  "@jskit-ai/connectors-core"
4290
4300
  ],
4291
4301
  "packageId": "@jskit-ai/connectors-catalog",
4292
- "packageVersion": "0.2.11",
4302
+ "packageVersion": "0.2.13",
4293
4303
  "documentPath": "patterns/api-key-connection/PATTERN.md",
4294
4304
  "examplePath": "patterns/api-key-connection/example",
4295
4305
  "files": [
@@ -4316,7 +4326,7 @@
4316
4326
  "@jskit-ai/connectors-core"
4317
4327
  ],
4318
4328
  "packageId": "@jskit-ai/connectors-catalog",
4319
- "packageVersion": "0.2.11",
4329
+ "packageVersion": "0.2.13",
4320
4330
  "documentPath": "patterns/assistant-mcp/PATTERN.md",
4321
4331
  "examplePath": "patterns/assistant-mcp/example",
4322
4332
  "files": [
@@ -4349,7 +4359,7 @@
4349
4359
  "@jskit-ai/connectors-core"
4350
4360
  ],
4351
4361
  "packageId": "@jskit-ai/connectors-catalog",
4352
- "packageVersion": "0.2.11",
4362
+ "packageVersion": "0.2.13",
4353
4363
  "documentPath": "patterns/assistant-mcp-oauth/PATTERN.md",
4354
4364
  "examplePath": "patterns/assistant-mcp-oauth/example",
4355
4365
  "files": [
@@ -4377,7 +4387,7 @@
4377
4387
  "@jskit-ai/connectors-core"
4378
4388
  ],
4379
4389
  "packageId": "@jskit-ai/connectors-catalog",
4380
- "packageVersion": "0.2.11",
4390
+ "packageVersion": "0.2.13",
4381
4391
  "documentPath": "patterns/aws-storage-queries/PATTERN.md",
4382
4392
  "examplePath": "patterns/aws-storage-queries/example",
4383
4393
  "files": [
@@ -4408,7 +4418,7 @@
4408
4418
  "@jskit-ai/database-runtime-mysql"
4409
4419
  ],
4410
4420
  "packageId": "@jskit-ai/connector-google-calendar",
4411
- "packageVersion": "0.2.11",
4421
+ "packageVersion": "0.2.13",
4412
4422
  "documentPath": "patterns/calendar-cli/PATTERN.md",
4413
4423
  "examplePath": "patterns/calendar-cli/example",
4414
4424
  "files": [
@@ -4438,7 +4448,7 @@
4438
4448
  "@jskit-ai/connectors-core"
4439
4449
  ],
4440
4450
  "packageId": "@jskit-ai/connectors-catalog",
4441
- "packageVersion": "0.2.11",
4451
+ "packageVersion": "0.2.13",
4442
4452
  "documentPath": "patterns/event-delivery/PATTERN.md",
4443
4453
  "examplePath": "patterns/event-delivery/example",
4444
4454
  "files": [
@@ -4467,7 +4477,7 @@
4467
4477
  "@jskit-ai/connectors-core"
4468
4478
  ],
4469
4479
  "packageId": "@jskit-ai/connectors-catalog",
4470
- "packageVersion": "0.2.11",
4480
+ "packageVersion": "0.2.13",
4471
4481
  "documentPath": "patterns/firebase-messaging/PATTERN.md",
4472
4482
  "examplePath": "patterns/firebase-messaging/example",
4473
4483
  "files": [
@@ -4492,7 +4502,7 @@
4492
4502
  "@jskit-ai/connectors-core"
4493
4503
  ],
4494
4504
  "packageId": "@jskit-ai/connectors-catalog",
4495
- "packageVersion": "0.2.11",
4505
+ "packageVersion": "0.2.13",
4496
4506
  "documentPath": "patterns/google-ads-search/PATTERN.md",
4497
4507
  "examplePath": "patterns/google-ads-search/example",
4498
4508
  "files": [
@@ -4543,7 +4553,7 @@
4543
4553
  "@jskit-ai/connectors-core"
4544
4554
  ],
4545
4555
  "packageId": "@jskit-ai/connectors-catalog",
4546
- "packageVersion": "0.2.11",
4556
+ "packageVersion": "0.2.13",
4547
4557
  "documentPath": "patterns/oauth-connection/PATTERN.md",
4548
4558
  "examplePath": "patterns/oauth-connection/example",
4549
4559
  "files": [
@@ -4566,7 +4576,7 @@
4566
4576
  "@jskit-ai/connectors-core"
4567
4577
  ],
4568
4578
  "packageId": "@jskit-ai/connectors-catalog",
4569
- "packageVersion": "0.2.11",
4579
+ "packageVersion": "0.2.13",
4570
4580
  "documentPath": "patterns/paddle-catalogue/PATTERN.md",
4571
4581
  "examplePath": "patterns/paddle-catalogue/example",
4572
4582
  "files": [
@@ -4591,7 +4601,7 @@
4591
4601
  "@jskit-ai/connectors-core"
4592
4602
  ],
4593
4603
  "packageId": "@jskit-ai/connectors-catalog",
4594
- "packageVersion": "0.2.11",
4604
+ "packageVersion": "0.2.13",
4595
4605
  "documentPath": "patterns/public-image/PATTERN.md",
4596
4606
  "examplePath": "patterns/public-image/example",
4597
4607
  "files": [
@@ -4620,7 +4630,7 @@
4620
4630
  "@jskit-ai/connectors-core"
4621
4631
  ],
4622
4632
  "packageId": "@jskit-ai/connectors-catalog",
4623
- "packageVersion": "0.2.11",
4633
+ "packageVersion": "0.2.13",
4624
4634
  "documentPath": "patterns/redshift-queries/PATTERN.md",
4625
4635
  "examplePath": "patterns/redshift-queries/example",
4626
4636
  "files": [
@@ -4647,7 +4657,7 @@
4647
4657
  "@jskit-ai/connectors-core"
4648
4658
  ],
4649
4659
  "packageId": "@jskit-ai/connectors-catalog",
4650
- "packageVersion": "0.2.11",
4660
+ "packageVersion": "0.2.13",
4651
4661
  "documentPath": "patterns/source-scanning/PATTERN.md",
4652
4662
  "examplePath": "patterns/source-scanning/example",
4653
4663
  "files": [
@@ -4673,7 +4683,7 @@
4673
4683
  "@jskit-ai/shell-web"
4674
4684
  ],
4675
4685
  "packageId": "@jskit-ai/console-web",
4676
- "packageVersion": "0.1.237",
4686
+ "packageVersion": "0.1.239",
4677
4687
  "documentPath": "patterns/console-surface/PATTERN.md",
4678
4688
  "examplePath": "patterns/console-surface/example",
4679
4689
  "files": [
@@ -4706,7 +4716,7 @@
4706
4716
  "@jskit-ai/resource-crud-core"
4707
4717
  ],
4708
4718
  "packageId": "@jskit-ai/http-web",
4709
- "packageVersion": "0.2.18",
4719
+ "packageVersion": "0.2.20",
4710
4720
  "documentPath": "patterns/crud-screen-set/PATTERN.md",
4711
4721
  "examplePath": "patterns/crud-screen-set/example",
4712
4722
  "files": [
@@ -4740,7 +4750,7 @@
4740
4750
  "@jskit-ai/resource-crud-core"
4741
4751
  ],
4742
4752
  "packageId": "@jskit-ai/crud-core",
4743
- "packageVersion": "0.2.11",
4753
+ "packageVersion": "0.2.13",
4744
4754
  "documentPath": "patterns/json-api-resource-package/PATTERN.md",
4745
4755
  "examplePath": "patterns/json-api-resource-package/example",
4746
4756
  "files": [
@@ -4768,7 +4778,7 @@
4768
4778
  "@jskit-ai/resource-crud-core"
4769
4779
  ],
4770
4780
  "packageId": "@jskit-ai/resource-crud-core",
4771
- "packageVersion": "0.1.201",
4781
+ "packageVersion": "0.1.203",
4772
4782
  "documentPath": "patterns/resource-contract/PATTERN.md",
4773
4783
  "examplePath": "patterns/resource-contract/example",
4774
4784
  "files": [
@@ -4791,7 +4801,7 @@
4791
4801
  "@jskit-ai/database-runtime-mysql"
4792
4802
  ],
4793
4803
  "packageId": "@jskit-ai/database-runtime-mysql",
4794
- "packageVersion": "0.1.257",
4804
+ "packageVersion": "0.1.259",
4795
4805
  "documentPath": "patterns/mysql-application/PATTERN.md",
4796
4806
  "examplePath": "patterns/mysql-application/example",
4797
4807
  "files": [
@@ -4800,7 +4810,7 @@
4800
4810
  "knexfile.js",
4801
4811
  "package.json",
4802
4812
  "scripts/prepare-database.js",
4803
- "tests/browser/database.js"
4813
+ "tests/e2e/databases.js"
4804
4814
  ]
4805
4815
  },
4806
4816
  {
@@ -4819,7 +4829,7 @@
4819
4829
  "@jskit-ai/database-runtime-postgres"
4820
4830
  ],
4821
4831
  "packageId": "@jskit-ai/database-runtime-postgres",
4822
- "packageVersion": "0.1.256",
4832
+ "packageVersion": "0.1.258",
4823
4833
  "documentPath": "patterns/postgres-application/PATTERN.md",
4824
4834
  "examplePath": "patterns/postgres-application/example",
4825
4835
  "files": [
@@ -4827,7 +4837,8 @@
4827
4837
  ".github/workflows/verify.yml",
4828
4838
  "knexfile.js",
4829
4839
  "package.json",
4830
- "scripts/prepare-database.js"
4840
+ "scripts/prepare-database.js",
4841
+ "tests/e2e/databases.js"
4831
4842
  ]
4832
4843
  },
4833
4844
  {
@@ -4850,7 +4861,7 @@
4850
4861
  "@jskit-ai/mobile-capacitor"
4851
4862
  ],
4852
4863
  "packageId": "@jskit-ai/mobile-capacitor",
4853
- "packageVersion": "0.2.13",
4864
+ "packageVersion": "0.2.15",
4854
4865
  "documentPath": "patterns/android-application/PATTERN.md",
4855
4866
  "examplePath": "patterns/android-application/example",
4856
4867
  "files": [
@@ -4874,7 +4885,7 @@
4874
4885
  "@jskit-ai/shell-web"
4875
4886
  ],
4876
4887
  "packageId": "@jskit-ai/realtime",
4877
- "packageVersion": "0.2.16",
4888
+ "packageVersion": "0.2.18",
4878
4889
  "documentPath": "patterns/realtime-application/PATTERN.md",
4879
4890
  "examplePath": "patterns/realtime-application/example",
4880
4891
  "files": [
@@ -4898,7 +4909,7 @@
4898
4909
  "@jskit-ai/rewarded-web"
4899
4910
  ],
4900
4911
  "packageId": "@jskit-ai/rewarded-web",
4901
- "packageVersion": "0.2.15",
4912
+ "packageVersion": "0.2.17",
4902
4913
  "documentPath": "patterns/google-rewarded/PATTERN.md",
4903
4914
  "examplePath": "patterns/google-rewarded/example",
4904
4915
  "files": [
@@ -4925,7 +4936,7 @@
4925
4936
  "@jskit-ai/shell-web"
4926
4937
  ],
4927
4938
  "packageId": "@jskit-ai/shell-web",
4928
- "packageVersion": "0.2.13",
4939
+ "packageVersion": "0.2.15",
4929
4940
  "documentPath": "patterns/application-shell/PATTERN.md",
4930
4941
  "examplePath": "patterns/application-shell/example",
4931
4942
  "files": [
@@ -4935,6 +4946,7 @@
4935
4946
  "expected-existing/src/views/NotFound.vue",
4936
4947
  "src/App.vue",
4937
4948
  "src/components/menus/MenuLinkItem.vue",
4949
+ "src/components/menus/SectionTabLinkItem.vue",
4938
4950
  "src/components/menus/SurfaceAwareMenuLinkItem.vue",
4939
4951
  "src/components/menus/TabLinkItem.vue",
4940
4952
  "src/components/ShellLayout.vue",
@@ -4970,7 +4982,7 @@
4970
4982
  "@jskit-ai/shell-web"
4971
4983
  ],
4972
4984
  "packageId": "@jskit-ai/shell-web",
4973
- "packageVersion": "0.2.13",
4985
+ "packageVersion": "0.2.15",
4974
4986
  "documentPath": "patterns/page-and-placement/PATTERN.md",
4975
4987
  "examplePath": "patterns/page-and-placement/example",
4976
4988
  "files": [
@@ -5006,7 +5018,7 @@
5006
5018
  "@jskit-ai/users-web"
5007
5019
  ],
5008
5020
  "packageId": "@jskit-ai/users-web",
5009
- "packageVersion": "0.2.20",
5021
+ "packageVersion": "0.2.22",
5010
5022
  "documentPath": "patterns/account-settings/PATTERN.md",
5011
5023
  "examplePath": "patterns/account-settings/example",
5012
5024
  "files": [
@@ -5014,6 +5026,7 @@
5014
5026
  "src/components/account/settings/AccountSettingsPreferencesSection.vue",
5015
5027
  "src/components/account/settings/AccountSettingsProfileSection.vue",
5016
5028
  "src/components/account/settings/AccountSettingsSignInMethodsSection.vue",
5029
+ "src/pages/account/[section].vue",
5017
5030
  "src/pages/account/index.vue",
5018
5031
  "src/pages/account.vue"
5019
5032
  ]
@@ -5038,7 +5051,7 @@
5038
5051
  "@jskit-ai/users-core"
5039
5052
  ],
5040
5053
  "packageId": "@jskit-ai/users-core",
5041
- "packageVersion": "0.2.12",
5054
+ "packageVersion": "0.2.14",
5042
5055
  "documentPath": "patterns/user-administration-server/PATTERN.md",
5043
5056
  "examplePath": "patterns/user-administration-server/example",
5044
5057
  "files": [
@@ -5073,7 +5086,7 @@
5073
5086
  "@jskit-ai/workspaces-core"
5074
5087
  ],
5075
5088
  "packageId": "@jskit-ai/workspaces-core",
5076
- "packageVersion": "0.2.12",
5089
+ "packageVersion": "0.2.14",
5077
5090
  "documentPath": "patterns/workspace-server/PATTERN.md",
5078
5091
  "examplePath": "patterns/workspace-server/example",
5079
5092
  "files": [
@@ -5103,7 +5116,7 @@
5103
5116
  "@jskit-ai/workspaces-web"
5104
5117
  ],
5105
5118
  "packageId": "@jskit-ai/workspaces-web",
5106
- "packageVersion": "0.2.20",
5119
+ "packageVersion": "0.2.22",
5107
5120
  "documentPath": "patterns/workspace-surfaces/PATTERN.md",
5108
5121
  "examplePath": "patterns/workspace-surfaces/example",
5109
5122
  "files": [