@jskit-ai/agent-docs 0.1.131 → 0.1.132

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 (170) hide show
  1. package/guide/agent/app-extras/assistant.md +29 -605
  2. package/guide/agent/app-extras/mobile-capacitor.md +29 -362
  3. package/guide/agent/app-extras/realtime.md +29 -277
  4. package/guide/agent/app-setup/a-more-interesting-shell.md +44 -815
  5. package/guide/agent/app-setup/authentication.md +43 -1073
  6. package/guide/agent/app-setup/console.md +26 -298
  7. package/guide/agent/app-setup/database-layer.md +110 -790
  8. package/guide/agent/app-setup/initial-scaffolding.md +50 -784
  9. package/guide/agent/app-setup/multi-homing.md +39 -712
  10. package/guide/agent/app-setup/quickstart.md +43 -179
  11. package/guide/agent/app-setup/users.md +34 -353
  12. package/guide/agent/index.md +16 -23
  13. package/package.json +2 -2
  14. package/patterns/INDEX.md +7 -7
  15. package/patterns/child-cruds.md +3 -3
  16. package/patterns/client-requests.md +6 -6
  17. package/patterns/crud-authoring.md +94 -0
  18. package/patterns/crud-links.md +1 -1
  19. package/patterns/feature-package/PATTERN.md +108 -0
  20. package/patterns/feature-package/example/booking-engine/package.json +48 -0
  21. package/patterns/feature-package/example/booking-engine/src/server/BookingEngineProvider.js +33 -0
  22. package/patterns/feature-package/example/booking-engine/src/server/actions.js +26 -0
  23. package/patterns/feature-package/example/booking-engine/src/server/inputSchemas.js +19 -0
  24. package/patterns/feature-package/example/variations/AvailabilityEngineProvider.js +31 -0
  25. package/patterns/feature-package/example/variations/InvoiceRollupProvider.js +36 -0
  26. package/patterns/feature-package/example/variations/customKnexRepository.js +34 -0
  27. package/patterns/feature-package/example/variations/orchestratorService.js +23 -0
  28. package/patterns/filters.md +8 -8
  29. package/patterns/live-actions.md +5 -18
  30. package/patterns/minimal-foundation/PATTERN.md +98 -0
  31. package/patterns/minimal-foundation/example/.nvmrc +1 -0
  32. package/patterns/minimal-foundation/example/AGENTS.md +17 -0
  33. package/patterns/minimal-foundation/example/Procfile +2 -0
  34. package/patterns/minimal-foundation/example/app.json +14 -0
  35. package/patterns/minimal-foundation/example/bin/develop.js +71 -0
  36. package/patterns/minimal-foundation/example/bin/server.js +8 -0
  37. package/patterns/minimal-foundation/example/config/public.js +40 -0
  38. package/patterns/minimal-foundation/example/config/server.js +1 -0
  39. package/patterns/minimal-foundation/example/config/surfaceAccessPolicies.js +3 -0
  40. package/patterns/minimal-foundation/example/eslint.config.mjs +19 -0
  41. package/patterns/minimal-foundation/example/favicon.svg +7 -0
  42. package/patterns/minimal-foundation/example/gitignore +9 -0
  43. package/patterns/minimal-foundation/example/index.html +13 -0
  44. package/patterns/minimal-foundation/example/jsconfig.json +8 -0
  45. package/patterns/minimal-foundation/example/package.json +57 -0
  46. package/patterns/minimal-foundation/example/packages/main/package.json +42 -0
  47. package/patterns/minimal-foundation/example/packages/main/src/shared/index.js +10 -0
  48. package/patterns/minimal-foundation/example/packages/main/src/shared/schemas/index.js +22 -0
  49. package/patterns/minimal-foundation/example/playwright.config.mjs +31 -0
  50. package/patterns/minimal-foundation/example/server/lib/runtimeEnv.js +45 -0
  51. package/patterns/minimal-foundation/example/server/lib/surfaceRuntime.js +10 -0
  52. package/patterns/minimal-foundation/example/server.js +195 -0
  53. package/patterns/minimal-foundation/example/src/App.vue +13 -0
  54. package/patterns/minimal-foundation/example/src/main.js +85 -0
  55. package/patterns/minimal-foundation/example/src/pages/home/index.vue +48 -0
  56. package/patterns/minimal-foundation/example/src/pages/home.vue +13 -0
  57. package/patterns/minimal-foundation/example/src/views/NotFound.vue +13 -0
  58. package/patterns/minimal-foundation/example/tests/client/smoke.vitest.js +7 -0
  59. package/patterns/minimal-foundation/example/tests/e2e/base-shell.spec.ts +23 -0
  60. package/patterns/minimal-foundation/example/tests/server/smoke.test.js +16 -0
  61. package/patterns/minimal-foundation/example/vite.config.mjs +81 -0
  62. package/patterns/page-scaffolding.md +20 -17
  63. package/patterns/placements.md +17 -15
  64. package/patterns/row-policies.md +4 -5
  65. package/patterns/server-search.md +3 -3
  66. package/patterns/shell-foundation/PATTERN.md +104 -0
  67. package/patterns/shell-foundation/example/.nvmrc +1 -0
  68. package/patterns/shell-foundation/example/AGENTS.md +17 -0
  69. package/patterns/shell-foundation/example/Procfile +2 -0
  70. package/patterns/shell-foundation/example/app.json +14 -0
  71. package/patterns/shell-foundation/example/bin/develop.js +71 -0
  72. package/patterns/shell-foundation/example/bin/server.js +8 -0
  73. package/patterns/shell-foundation/example/config/public.js +40 -0
  74. package/patterns/shell-foundation/example/config/server.js +1 -0
  75. package/patterns/shell-foundation/example/config/surfaceAccessPolicies.js +3 -0
  76. package/patterns/shell-foundation/example/eslint.config.mjs +19 -0
  77. package/patterns/shell-foundation/example/favicon.svg +7 -0
  78. package/patterns/shell-foundation/example/gitignore +9 -0
  79. package/patterns/shell-foundation/example/index.html +13 -0
  80. package/patterns/shell-foundation/example/jsconfig.json +8 -0
  81. package/patterns/shell-foundation/example/package.json +59 -0
  82. package/patterns/shell-foundation/example/packages/main/package.json +56 -0
  83. package/patterns/shell-foundation/example/packages/main/src/client/index.js +9 -0
  84. package/patterns/shell-foundation/example/packages/main/src/client/providers/MainClientProvider.js +18 -0
  85. package/patterns/shell-foundation/example/packages/main/src/shared/index.js +10 -0
  86. package/patterns/shell-foundation/example/packages/main/src/shared/schemas/index.js +22 -0
  87. package/patterns/shell-foundation/example/playwright.config.mjs +31 -0
  88. package/patterns/shell-foundation/example/server/lib/runtimeEnv.js +45 -0
  89. package/patterns/shell-foundation/example/server/lib/surfaceRuntime.js +10 -0
  90. package/patterns/shell-foundation/example/server.js +195 -0
  91. package/patterns/shell-foundation/example/src/App.vue +11 -0
  92. package/patterns/shell-foundation/example/src/components/ShellLayout.vue +12 -0
  93. package/patterns/shell-foundation/example/src/components/menus/MenuLinkItem.vue +30 -0
  94. package/patterns/shell-foundation/example/src/components/menus/SurfaceAwareMenuLinkItem.vue +42 -0
  95. package/patterns/shell-foundation/example/src/components/menus/TabLinkItem.vue +42 -0
  96. package/patterns/shell-foundation/example/src/error.js +19 -0
  97. package/patterns/shell-foundation/example/src/main.js +85 -0
  98. package/patterns/shell-foundation/example/src/pages/home/index.vue +116 -0
  99. package/patterns/shell-foundation/example/src/pages/home/settings/general/index.vue +40 -0
  100. package/patterns/shell-foundation/example/src/pages/home/settings/index.vue +7 -0
  101. package/patterns/shell-foundation/example/src/pages/home/settings.vue +109 -0
  102. package/patterns/shell-foundation/example/src/pages/home.vue +20 -0
  103. package/patterns/shell-foundation/example/src/placement.js +56 -0
  104. package/patterns/shell-foundation/example/src/placementTopology.js +149 -0
  105. package/patterns/shell-foundation/example/src/views/NotFound.vue +13 -0
  106. package/patterns/shell-foundation/example/tests/client/smoke.vitest.js +7 -0
  107. package/patterns/shell-foundation/example/tests/e2e/adaptive-shell.spec.ts +10 -0
  108. package/patterns/shell-foundation/example/tests/e2e/base-shell.spec.ts +23 -0
  109. package/patterns/shell-foundation/example/tests/server/smoke.test.js +16 -0
  110. package/patterns/shell-foundation/example/vite.config.mjs +81 -0
  111. package/patterns/ui-contract.md +56 -0
  112. package/patterns/ui-testing.md +10 -12
  113. package/reference/autogen/KERNEL_MAP.md +29 -107
  114. package/reference/autogen/PATTERN_INDEX.md +230 -0
  115. package/reference/autogen/README.md +4 -8
  116. package/reference/autogen/packages/agent-docs.md +259 -0
  117. package/reference/autogen/packages/assistant-core.md +3 -3
  118. package/reference/autogen/packages/assistant-runtime.md +32 -17
  119. package/reference/autogen/packages/auth-core.md +31 -33
  120. package/reference/autogen/packages/auth-provider-local-core.md +4 -12
  121. package/reference/autogen/packages/auth-provider-local-db-core.md +4 -4
  122. package/reference/autogen/packages/auth-provider-supabase-core.md +14 -18
  123. package/reference/autogen/packages/auth-web.md +42 -22
  124. package/reference/autogen/packages/console-core.md +8 -25
  125. package/reference/autogen/packages/console-web.md +5 -5
  126. package/reference/autogen/packages/crud-core.md +61 -17
  127. package/reference/autogen/packages/database-runtime-mysql.md +12 -2
  128. package/reference/autogen/packages/database-runtime-postgres.md +12 -2
  129. package/reference/autogen/packages/database-runtime.md +26 -25
  130. package/reference/autogen/packages/google-rewarded-core.md +19 -104
  131. package/reference/autogen/packages/http-runtime.md +4 -8
  132. package/reference/autogen/packages/http-web.md +32 -0
  133. package/reference/autogen/packages/json-rest-api-core.md +4 -6
  134. package/reference/autogen/packages/kernel.md +109 -390
  135. package/reference/autogen/packages/mobile-capacitor.md +2 -13
  136. package/reference/autogen/packages/realtime.md +29 -26
  137. package/reference/autogen/packages/resource-crud-core.md +6 -0
  138. package/reference/autogen/packages/shell-web.md +69 -54
  139. package/reference/autogen/packages/storage-runtime.md +3 -3
  140. package/reference/autogen/packages/uploads-image-web.md +0 -1
  141. package/reference/autogen/packages/uploads-runtime.md +3 -3
  142. package/reference/autogen/packages/users-core.md +45 -90
  143. package/reference/autogen/packages/users-web.md +5 -7
  144. package/reference/autogen/packages/workspaces-core.md +53 -74
  145. package/reference/autogen/packages/workspaces-web.md +15 -16
  146. package/reference/autogen/tooling/jskit-catalog.md +34 -0
  147. package/reference/autogen/tooling/testUtils.md +4 -4
  148. package/skills/jskit/SKILL.md +34 -29
  149. package/skills/jskit/references/app-operations.md +68 -53
  150. package/skills/jskit/references/crud-operations.md +58 -106
  151. package/skills/jskit/references/material-3.md +1 -1
  152. package/skills/jskit/references/ui-operations.md +41 -44
  153. package/templates/app/AGENTS.md +7 -3
  154. package/guide/agent/app-setup/upgrade-beta-1-to-final.md +0 -252
  155. package/guide/agent/app-setup/working-with-the-jskit-cli.md +0 -325
  156. package/guide/agent/generators/advanced-cruds.md +0 -1935
  157. package/guide/agent/generators/crud-generators.md +0 -948
  158. package/guide/agent/generators/intro.md +0 -65
  159. package/guide/agent/generators/row-policies.md +0 -537
  160. package/guide/agent/generators/ui-generators.md +0 -690
  161. package/patterns/crud-scaffolding.md +0 -198
  162. package/patterns/generated-ui-contract-tracking.md +0 -66
  163. package/reference/autogen/packages/assistant.md +0 -68
  164. package/reference/autogen/packages/crud-server-generator.md +0 -215
  165. package/reference/autogen/packages/crud-ui-generator.md +0 -192
  166. package/reference/autogen/packages/feature-server-generator.md +0 -65
  167. package/reference/autogen/packages/ui-generator.md +0 -127
  168. package/reference/autogen/tooling/create-app.md +0 -317
  169. package/reference/autogen/tooling/jskit-cli.md +0 -933
  170. package/reference/autogen/tooling/test-support.md +0 -27
@@ -17,15 +17,16 @@ Use this on demand; do not load the full index at startup.
17
17
  ### `src/client/index.js`
18
18
  Exports
19
19
  - `MobileCapacitorClientProvider`
20
+ - `MobileCapacitorRuntimeProvider`
20
21
  - `createMobileCapacitorRuntime`
21
22
  - `createGlobalCapacitorAppAdapter`
22
23
  - `createNoopCapacitorAppAdapter`
23
24
  - `resolveCapacitorAppPlugin`
24
- - `clientProviders`
25
25
 
26
26
  ### `src/client/providers/MobileCapacitorClientProvider.js`
27
27
  Exports
28
28
  - `MobileCapacitorClientProvider`
29
+ - `MobileCapacitorRuntimeProvider`
29
30
  - `installCapacitorAwareGlobalFetch({ adapter = null, apiBaseUrl = "", globalObject = globalThis } = {})`
30
31
 
31
32
  ### `src/client/runtime/apiRequestClient.js`
@@ -56,15 +57,3 @@ Local functions
56
57
  Exports
57
58
  - `createCapacitorAwareOAuthLaunchClient({ adapter = null, browserPlugin = Browser, location = null, apiBaseUrl = "" } = {})`
58
59
  - `resolveCapacitorLaunchUrl(url = "", apiBaseUrl = "")`
59
-
60
- ### `src/server/buildTemplateContext.js`
61
- Exports
62
- - `buildTemplateContext({ appRoot } = {})`
63
- - `prepareInstallHook({ appRoot, appPackageJson = {}, io, dryRun = false, helpers = {} } = {})`
64
- - `finalizeInstallHook({ appRoot, io, dryRun = false, skipManagedFinalize = false, helpers = {} } = {})`
65
- Local functions
66
- - `requireNonEmptyText(value, label = "value")`
67
- - `requireUrl(value, label = "value", { allowHttp = true, allowHttps = true } = {})`
68
- - `buildCapacitorServerBlock(mobileConfig = {})`
69
- - `buildAppLinkDomainsValue(appLinkDomains = [])`
70
- - `directoryContainsAnyFiles(directoryPath = "")`
@@ -30,51 +30,48 @@ Local functions
30
30
  - `resolveEnabled(value)`
31
31
  - `resolveEventName(value)`
32
32
 
33
- ### `src/client/listeners.js`
34
- Exports
35
- - `normalizeRealtimeClientListener(entry)`
36
- - `registerRealtimeClientListener(app, token, factory)`
37
- - `resolveRealtimeClientListeners(scope)`
38
- Local functions
39
- - `normalizeListenerEntries(value)`
40
-
41
33
  ### `src/client/RealtimeClientProvider.js`
42
34
  Exports
43
35
  - `RealtimeClientProvider`
36
+ - `resolveRealtimeClientConfig({ env = {}, mobile = null } = {})`
44
37
  Local functions
45
- - `isCapacitorRuntimeAvailable(app)`
46
- - `resolveRealtimeClientConfig(app)`
38
+ - `createRealtimeClient({ config, loggerInput } = {})`
47
39
 
48
40
  ### `src/client/runtime.js`
49
41
  Exports
50
42
  - `createSocketIoClient({ url = "", options = {}, connect = connectSocketIoClient } = {})`
51
43
  - `disconnectSocketIoClient(socket)`
52
44
 
53
- ### `src/server/RealtimeServiceProvider.js`
45
+ ### `src/server/realtimeAudience.js`
54
46
  Exports
55
- - `RealtimeServiceProvider`
47
+ - `registerSocketAudienceBootstrap({ io, logger, authService = null, workspaces = null })`
48
+ - `resolveAudienceTargets(audience, event, { database = null, logger })`
56
49
  Local functions
57
50
  - `normalizeArray(value)`
58
51
  - `roomForUser(userId)`
59
52
  - `roomForWorkspace(workspaceId)`
60
53
  - `roomForWorkspaceUser(workspaceId, userId)`
61
- - `parseCookieHeader(value = "")`
62
- - `createProviderLogger(scope, { debugEnabled = false } = {})`
63
- - `parseDebugFlag(value, fallback = null)`
64
- - `resolveRealtimeServerDebugEnabled(scope)`
65
- - `buildRealtimeDispatchIndex(registrations = [])`
66
- - `mergeRealtimePayload(event, payloadPatch)`
67
54
  - `resolveScopeWorkspaceId(scope = {})`
68
55
  - `resolveScopeUserId(scope = {})`
69
- - `applyAudiencePreset(preset, { event, rooms, flags, logger } = {})`
70
- - `addAudienceRoomsFromObject(selection, { event, rooms, flags, logger } = {})`
71
- - `collectUserIdsFromQueryRows(rows = [])`
72
- - `resolveAudienceQueryRooms(userQuery, { scope, event, logger } = {})`
73
- - `resolveAudienceTargets(dispatcher, event, { scope, logger } = {})`
56
+ - `applyAudiencePreset(preset, { event, rooms, flags, logger })`
57
+ - `addAudienceRooms(selection, state)`
58
+ - `collectUserIds(rows)`
59
+ - `parseCookieHeader(value = "")`
74
60
  - `resolveSocketActorId(authService, socket)`
75
- - `resolveActorWorkspaceIds(workspaceMembershipsRepository, actorId)`
76
- - `resolveOptionalScopeBinding(scope, token = "")`
77
- - `registerRealtimeSocketAudienceBootstrap(scope, io, logger)`
61
+
62
+ ### `src/server/realtimeDelivery.js`
63
+ Exports
64
+ - `createRealtimeDelivery({ io, database = null, logger })`
65
+ Local functions
66
+ - `publicRealtimePayload(event)`
67
+
68
+ ### `src/server/RealtimeProvider.js`
69
+ Exports
70
+ - `RealtimeProvider`
71
+ Local functions
72
+ - `parseDebugFlag(value, fallback = null)`
73
+ - `debugEnabled(config, env)`
74
+ - `createRealtimeCapability({ io })`
78
75
 
79
76
  ### `src/server/runtime.js`
80
77
  Exports
@@ -89,3 +86,9 @@ Exports
89
86
  Local functions
90
87
  - `resolveHttpServer({ httpServer = null, fastify = null } = {})`
91
88
  - `buildSocketIoRedisAdapterKey(redisNamespace = "")`
89
+
90
+ ### patterns
91
+
92
+ ### `patterns/realtime-application/example/src/placement.js`
93
+ Exports
94
+ - `getPlacements()`
@@ -137,3 +137,9 @@ Local functions
137
137
  - `createDefaultCrudOperations(resource = {})`
138
138
  - `mergeCrudOperationDefinition(baseDefinition, overrideDefinition)`
139
139
  - `mergeCrudOperations(defaultOperations = {}, overrides = {})`
140
+
141
+ ### patterns
142
+
143
+ ### `patterns/resource-contract/example/bookResource.js`
144
+ Exports
145
+ - `bookResource`
@@ -31,18 +31,13 @@ Exports
31
31
 
32
32
  ### `src/client/bootstrap/bootstrapPayloadHandlerRegistry.js`
33
33
  Exports
34
- - `BOOTSTRAP_PAYLOAD_HANDLER_TAG`
35
- - `registerBootstrapPayloadHandler(app, token, factory)`
36
- - `resolveBootstrapPayloadHandlers(scope)`
37
- Local functions
38
- - `assertTaggableApp(app, context = "bootstrap payload handler registry")`
34
+ - `createBootstrapPayloadHandlerRegistry()`
39
35
  - `normalizeBootstrapPayloadHandler(entry)`
40
36
 
41
37
  ### `src/client/bootstrap/index.js`
42
38
  Exports
43
- - `BOOTSTRAP_PAYLOAD_HANDLER_TAG`
44
- - `registerBootstrapPayloadHandler`
45
- - `resolveBootstrapPayloadHandlers`
39
+ - `createBootstrapPayloadHandlerRegistry`
40
+ - `normalizeBootstrapPayloadHandler`
46
41
  - `resolveBootstrapErrorStatusCode`
47
42
 
48
43
  ### `src/client/components/ShellErrorHost.vue`
@@ -227,10 +222,8 @@ Exports
227
222
  - `isRecoverableRequestError`
228
223
  - `requestRecoveryMessage`
229
224
  - `useShellRequestRecoveryRuntime`
230
- - `BOOTSTRAP_PAYLOAD_HANDLER_TAG`
231
- - `registerBootstrapPayloadHandler`
232
- - `resolveBootstrapPayloadHandlers`
233
- - `clientProviders`
225
+ - `createBootstrapPayloadHandlerRegistry`
226
+ - `normalizeBootstrapPayloadHandler`
234
227
 
235
228
  ### `src/client/lib/menuIcons.js`
236
229
  Exports
@@ -305,7 +298,7 @@ Exports
305
298
 
306
299
  ### `src/client/placement/runtime.js`
307
300
  Exports
308
- - `createWebPlacementRuntime({ app, logger = null } = {})`
301
+ - `createWebPlacementRuntime({ components, contextContributors = [], logger = null } = {})`
309
302
  Local functions
310
303
  - `ensureArray(value)`
311
304
  - `NOOP()`
@@ -317,8 +310,8 @@ Local functions
317
310
  - `matchesSurface(placementSurfaces, requestedSurface)`
318
311
  - `resolveTopologyPlacement(topologyEntries = [], placement = {}, requestedSurface = WEB_PLACEMENT_SURFACE_ANY)`
319
312
  - `resolveRenderablePlacement({ placement = {}, topologyEntries = [], requestedSurface = WEB_PLACEMENT_SURFACE_ANY, requestedTarget = "", requestedLayoutClass = "compact" } = {})`
320
- - `resolveContextContributors(app, baseContext = {}, logger)`
321
- - `resolvePlacementComponent(app, placement, logger, missingTokens, invalidComponentTokens, failedTokens)`
313
+ - `resolveContextContributors(contributors, baseContext = {}, logger)`
314
+ - `resolvePlacementComponent(components, placement, logger, missingTokens, invalidComponentTokens, failedTokens)`
322
315
  - `shouldIncludePlacement(placement, placementContext, logger)`
323
316
 
324
317
  ### `src/client/placement/surfaceContext.js`
@@ -371,10 +364,10 @@ Local functions
371
364
  - `loadAppErrorConfig(logger, errorRuntime, asyncModuleRecoveryRuntime = null)`
372
365
  - `applyAppErrorConfig(errorRuntime, errorConfig = {})`
373
366
  - `isPullRefreshQuery(query = null)`
374
- - `createShellRefreshRuntime({ app, logger = null } = {})`
367
+ - `createShellRefreshRuntime({ bootstrapRuntime = null, queryClient = null, errorRuntime = null, logger = null } = {})`
375
368
  - `installVueErrorBridge(vueApp, errorRuntime, logger)`
376
- - `installRouterErrorBridge(app, errorRuntime, logger)`
377
- - `createShellAsyncModuleRecoveryRuntime({ app, logger = null } = {})`
369
+ - `installRouterErrorBridge(router, errorRuntime, logger)`
370
+ - `createShellAsyncModuleRecoveryRuntime({ router = null, errorRuntime = null, logger = null } = {})`
378
371
 
379
372
  ### `src/client/requestRecovery/index.js`
380
373
  Exports
@@ -391,7 +384,7 @@ Exports
391
384
 
392
385
  ### `src/client/requestRecovery/runtime.js`
393
386
  Exports
394
- - `createShellRequestRecoveryRuntime({ app, logger = null } = {})`
387
+ - `createShellRequestRecoveryRuntime({ queryClient = null, errorRuntime = null, logger = null } = {})`
395
388
  - `isRecoverableRequestError(error = null)`
396
389
  - `requestRecoveryMessage(error = null, { label = "Request", message = "" } = {})`
397
390
  Local functions
@@ -413,11 +406,11 @@ Local functions
413
406
  - `recoverableQueryError(query = null)`
414
407
  - `createQueryRetry(queryClient, query = null)`
415
408
  - `resolveQueryHash(query = null)`
416
- - `installRecoverableQueryObserver({ app, runtime, logger } = {})`
409
+ - `installRecoverableQueryObserver({ queryClient, runtime, logger } = {})`
417
410
 
418
411
  ### `src/client/runtime/bootstrapRuntime.js`
419
412
  Exports
420
- - `createShellBootstrapRuntime({ app, logger = null, fetchImplementation = globalThis.fetch, bootstrapPath = DEFAULT_BOOTSTRAP_PATH } = {})`
413
+ - `createShellBootstrapRuntime({ handlers, placementRuntime, requestRecoveryRuntime = null, router = null, logger, fetchImplementation = globalThis.fetch, bootstrapPath = DEFAULT_BOOTSTRAP_PATH } = {})`
421
414
  Local functions
422
415
  - `normalizeObject(value)`
423
416
  - `buildBootstrapUrl({ path = DEFAULT_BOOTSTRAP_PATH, query = {} } = {})`
@@ -475,102 +468,124 @@ Exports
475
468
  Local functions
476
469
  - `normalizeText(value = "")`
477
470
 
478
- ### `src/server/support/localLinkItemScaffolds.js`
471
+ ### fixtures
472
+
473
+ ### `fixtures/adaptive-shell/src/App.vue`
474
+ Exports
475
+ - None
476
+
477
+ ### `fixtures/adaptive-shell/src/main.js`
479
478
  Exports
480
- - `LOCAL_LINK_ITEM_COMPONENT_DEFINITIONS`
481
- - `LOCAL_LINK_ITEM_COMPONENT_TOKENS`
482
- - `findLocalLinkItemDefinition(componentToken = "")`
483
- - `readLocalLinkItemComponentSource(componentTokenOrDefinition = "")`
484
- - `resolveLocalLinkItemTemplateAbsolutePath(componentTokenOrDefinition = "")`
479
+ - None
485
480
  Local functions
486
- - `createLocalLinkItemDefinition({ token = "", componentFile = "", componentName = "", templateFile = "" } = {})`
487
- - `resolveLocalLinkItemDefinition(componentTokenOrDefinition = "")`
481
+ - `createSurfacePlacement(surface, order, label, suffix)`
482
+ - `createSurfacePlacements(surface)`
483
+
484
+ ### `fixtures/adaptive-shell/src/ScreenPage.vue`
485
+ Exports
486
+ - None
487
+
488
+ ### `fixtures/adaptive-shell/vite.config.mjs`
489
+ Exports
490
+ - None
488
491
 
489
- ### templates
492
+ ### patterns
490
493
 
491
- ### `templates/expected-existing/src/App.vue`
494
+ ### `patterns/application-shell/example/expected-existing/src/App.vue`
492
495
  Exports
493
496
  - None
494
497
 
495
- ### `templates/expected-existing/src/pages/home.vue`
498
+ ### `patterns/application-shell/example/expected-existing/src/pages/home.vue`
496
499
  Exports
497
500
  - None
498
501
 
499
- ### `templates/expected-existing/src/pages/home/index.vue`
502
+ ### `patterns/application-shell/example/expected-existing/src/pages/home/index.vue`
500
503
  Exports
501
504
  - None
502
505
 
503
- ### `templates/src/App.vue`
506
+ ### `patterns/application-shell/example/src/App.vue`
504
507
  Exports
505
508
  - None
506
509
 
507
- ### `templates/src/components/menus/MenuLinkItem.vue`
510
+ ### `patterns/application-shell/example/src/components/menus/MenuLinkItem.vue`
508
511
  Exports
509
512
  - None
510
513
 
511
- ### `templates/src/components/menus/SurfaceAwareMenuLinkItem.vue`
514
+ ### `patterns/application-shell/example/src/components/menus/SurfaceAwareMenuLinkItem.vue`
512
515
  Exports
513
516
  - None
514
517
 
515
- ### `templates/src/components/menus/TabLinkItem.vue`
518
+ ### `patterns/application-shell/example/src/components/menus/TabLinkItem.vue`
516
519
  Exports
517
520
  - None
518
521
 
519
- ### `templates/src/components/ShellLayout.vue`
522
+ ### `patterns/application-shell/example/src/components/ShellLayout.vue`
520
523
  Exports
521
524
  - `default`
522
525
 
523
- ### `templates/src/error.js`
526
+ ### `patterns/application-shell/example/src/error.js`
524
527
  Exports
525
528
  - None
526
529
 
527
- ### `templates/src/pages/home.vue`
530
+ ### `patterns/application-shell/example/src/pages/home.vue`
528
531
  Exports
529
532
  - None
530
533
 
531
- ### `templates/src/pages/home/index.vue`
534
+ ### `patterns/application-shell/example/src/pages/home/index.vue`
532
535
  Exports
533
536
  - None
534
537
 
535
- ### `templates/src/pages/home/settings.vue`
538
+ ### `patterns/application-shell/example/src/pages/home/settings.vue`
536
539
  Exports
537
540
  - None
538
541
 
539
- ### `templates/src/pages/home/settings/general/index.vue`
542
+ ### `patterns/application-shell/example/src/pages/home/settings/general/index.vue`
540
543
  Exports
541
544
  - None
542
545
 
543
- ### `templates/src/pages/home/settings/index.vue`
546
+ ### `patterns/application-shell/example/src/pages/home/settings/index.vue`
544
547
  Exports
545
548
  - None
546
549
 
547
- ### `templates/src/placement.js`
550
+ ### `patterns/application-shell/example/src/placement.js`
548
551
  Exports
549
552
  - `addPlacement`
550
553
  - `getPlacements()`
551
554
 
552
- ### `templates/src/placementTopology.js`
555
+ ### `patterns/application-shell/example/src/placementTopology.js`
553
556
  Exports
554
557
  - `addPlacementTopology(value = {})`
555
558
  - `default`
556
559
 
557
- ### fixtures
560
+ ### `patterns/page-and-placement/example/packages/main/src/client/providers/MainClientProvider.js`
561
+ Exports
562
+ - `MainClientProvider`
558
563
 
559
- ### `fixtures/adaptive-shell/src/App.vue`
564
+ ### `patterns/page-and-placement/example/src/components/SyncStatusElement.vue`
560
565
  Exports
561
566
  - None
562
567
 
563
- ### `fixtures/adaptive-shell/src/main.js`
568
+ ### `patterns/page-and-placement/example/src/pages/home/reports.vue`
564
569
  Exports
565
570
  - None
566
- Local functions
567
- - `createSurfacePlacement(surface, order, label, suffix)`
568
- - `createSurfacePlacements(surface)`
569
571
 
570
- ### `fixtures/adaptive-shell/src/ScreenPage.vue`
572
+ ### `patterns/page-and-placement/example/src/pages/home/reports/activity.vue`
571
573
  Exports
572
574
  - None
573
575
 
574
- ### `fixtures/adaptive-shell/vite.config.mjs`
576
+ ### `patterns/page-and-placement/example/src/pages/home/reports/index.vue`
575
577
  Exports
576
578
  - None
579
+
580
+ ### `patterns/page-and-placement/example/src/pages/home/reports/overview.vue`
581
+ Exports
582
+ - None
583
+
584
+ ### `patterns/page-and-placement/example/src/placement.js`
585
+ Exports
586
+ - `getPlacements()`
587
+
588
+ ### `patterns/page-and-placement/example/src/placementTopology.js`
589
+ Exports
590
+ - `addPlacementTopology(value = {})`
591
+ - `default`
@@ -18,9 +18,9 @@ Use this on demand; do not load the full index at startup.
18
18
  Exports
19
19
  - None
20
20
 
21
- ### `src/server/providers/StorageRuntimeServiceProvider.js`
21
+ ### `src/server/providers/StorageProvider.js`
22
22
  Exports
23
- - `StorageRuntimeServiceProvider`
23
+ - `StorageProvider`
24
24
 
25
25
  ### `src/server/storageBinding.js`
26
26
  Exports
@@ -28,6 +28,6 @@ Exports
28
28
  - `STORAGE_FS_BASE_PATH_ENV_KEY`
29
29
  - `DEFAULT_STORAGE_DRIVER`
30
30
  - `normalizeStorageDriver(value)`
31
- - `createStorageBinding(scope, { rootDir = process.cwd() } = {})`
31
+ - `createStorageBinding({ env = {}, rootDir = process.cwd() } = {})`
32
32
  Local functions
33
33
  - `resolveFsBasePath(fsBasePath, { rootDir } = {})`
@@ -39,7 +39,6 @@ Local functions
39
39
  Exports
40
40
  - `createImageUploadRuntime`
41
41
  - `createManagedImageAssetRuntime`
42
- - `clientProviders`
43
42
 
44
43
  ### `src/client/styles/index.js`
45
44
  Exports
@@ -30,7 +30,7 @@ Local functions
30
30
 
31
31
  ### `src/server/multipart/registerMultipartSupport.js`
32
32
  Exports
33
- - `registerMultipartSupport(app)`
33
+ - `registerMultipartSupport(fastify)`
34
34
 
35
35
  ### `src/server/policy/uploadPolicy.js`
36
36
  Exports
@@ -39,9 +39,9 @@ Exports
39
39
  - `readUploadBuffer(stream, { maxBytes = DEFAULT_IMAGE_UPLOAD_POLICY.maxUploadBytes, fieldName = "file", label = "File" } = {})`
40
40
  - `validateUploadMimeType(mimeType, policy = DEFAULT_IMAGE_UPLOAD_POLICY, { fieldName = "file", label = "File" } = {})`
41
41
 
42
- ### `src/server/providers/UploadsRuntimeServiceProvider.js`
42
+ ### `src/server/providers/UploadsProvider.js`
43
43
  Exports
44
- - `UploadsRuntimeServiceProvider`
44
+ - `UploadsProvider`
45
45
 
46
46
  ### `src/server/storage/createUploadStorageService.js`
47
47
  Exports
@@ -16,7 +16,8 @@ Use this on demand; do not load the full index at startup.
16
16
 
17
17
  ### `src/server/accountNotifications/accountNotificationsActions.js`
18
18
  Exports
19
- - `accountNotificationsActions`
19
+ - `accountNotificationsActionSpecifications`
20
+ - `buildAccountNotificationsActions({ accountNotificationsService } = {})`
20
21
 
21
22
  ### `src/server/accountNotifications/accountNotificationsService.js`
22
23
  Exports
@@ -24,15 +25,12 @@ Exports
24
25
 
25
26
  ### `src/server/accountNotifications/bootAccountNotificationsRoutes.js`
26
27
  Exports
27
- - `bootAccountNotificationsRoutes(app)`
28
-
29
- ### `src/server/accountNotifications/registerAccountNotifications.js`
30
- Exports
31
- - `registerAccountNotifications(app)`
28
+ - `registerAccountNotificationsRoutes(router)`
32
29
 
33
30
  ### `src/server/accountPreferences/accountPreferencesActions.js`
34
31
  Exports
35
- - `accountPreferencesActions`
32
+ - `accountPreferencesActionSpecifications`
33
+ - `buildAccountPreferencesActions({ accountPreferencesService } = {})`
36
34
 
37
35
  ### `src/server/accountPreferences/accountPreferencesService.js`
38
36
  Exports
@@ -40,15 +38,12 @@ Exports
40
38
 
41
39
  ### `src/server/accountPreferences/bootAccountPreferencesRoutes.js`
42
40
  Exports
43
- - `bootAccountPreferencesRoutes(app)`
44
-
45
- ### `src/server/accountPreferences/registerAccountPreferences.js`
46
- Exports
47
- - `registerAccountPreferences(app)`
41
+ - `registerAccountPreferencesRoutes(router)`
48
42
 
49
43
  ### `src/server/accountProfile/accountProfileActions.js`
50
44
  Exports
51
- - `accountProfileActions`
45
+ - `accountProfileActionSpecifications`
46
+ - `buildAccountProfileActions({ accountProfileService } = {})`
52
47
 
53
48
  ### `src/server/accountProfile/accountProfileService.js`
54
49
  Exports
@@ -71,15 +66,12 @@ Local functions
71
66
 
72
67
  ### `src/server/accountProfile/bootAccountProfileRoutes.js`
73
68
  Exports
74
- - `bootAccountProfileRoutes(app)`
75
-
76
- ### `src/server/accountProfile/registerAccountProfile.js`
77
- Exports
78
- - `registerAccountProfile(app)`
69
+ - `registerAccountProfileRoutes(router, { accountProfileService, authService, uploads } = {})`
79
70
 
80
71
  ### `src/server/accountSecurity/accountSecurityActions.js`
81
72
  Exports
82
- - `accountSecurityActions`
73
+ - `accountSecurityActionSpecifications`
74
+ - `buildAccountSecurityActions({ accountSecurityService } = {})`
83
75
 
84
76
  ### `src/server/accountSecurity/accountSecurityService.js`
85
77
  Exports
@@ -87,11 +79,7 @@ Exports
87
79
 
88
80
  ### `src/server/accountSecurity/bootAccountSecurityRoutes.js`
89
81
  Exports
90
- - `bootAccountSecurityRoutes(app)`
91
-
92
- ### `src/server/accountSecurity/registerAccountSecurity.js`
93
- Exports
94
- - `registerAccountSecurity(app)`
82
+ - `registerAccountSecurityRoutes(router, { authService } = {})`
95
83
 
96
84
  ### `src/server/common/formatters/accountAvatarFormatter.js`
97
85
  Exports
@@ -114,14 +102,6 @@ Local functions
114
102
  - `resolveAuthProfileSettings(authService)`
115
103
  - `formatUserSettingsSection(fieldKeys, settings = {})`
116
104
 
117
- ### `src/server/common/registerCommonRepositories.js`
118
- Exports
119
- - `registerCommonRepositories(app)`
120
-
121
- ### `src/server/common/registerSharedApi.js`
122
- Exports
123
- - `registerSharedApi(app, usersCoreApi)`
124
-
125
105
  ### `src/server/common/repositories/repositoryUtils.js`
126
106
  Exports
127
107
  - `toIsoString`
@@ -165,7 +145,7 @@ Exports
165
145
 
166
146
  ### `src/server/common/services/authProfileSyncService.js`
167
147
  Exports
168
- - `createService({ userProfilesRepository, lifecycleContributors = [], userSettingsRepository = null } = {})`
148
+ - `createService({ userProfilesRepository, resolveLifecycleContributors = () => [], userSettingsRepository = null } = {})`
169
149
  Local functions
170
150
  - `buildNormalizedIdentityKey(identityLike)`
171
151
  - `buildNormalizedIdentityProfile(profileLike)`
@@ -189,41 +169,38 @@ Exports
189
169
  Exports
190
170
  - `ACCOUNT_SETTINGS_AND_BOOTSTRAP_EVENTS`
191
171
  Local functions
192
- - `resolveActorScopedEntityId({ options } = {})`
172
+ - `resolveActorScopedEntityId({ context } = {})`
193
173
 
194
174
  ### `src/server/common/support/resolveActionUser.js`
195
175
  Exports
196
176
  - `resolveActionUser(context, input)`
197
177
 
198
- ### `src/server/profileSyncLifecycleContributorRegistry.js`
178
+ ### `src/server/usersBootstrapContributor.js`
199
179
  Exports
200
- - `PROFILE_SYNC_LIFECYCLE_CONTRIBUTOR_TAG`
201
- - `registerProfileSyncLifecycleContributor(app, token, factory)`
202
- - `resolveProfileSyncLifecycleContributors(scope)`
180
+ - `createUsersBootstrapContributor({ userProfilesRepository, userSettingsRepository, authService } = {})`
203
181
  Local functions
204
- - `normalizeProfileSyncLifecycleContributor(entry)`
182
+ - `getOAuthProviderCatalogPayload(authService)`
183
+ - `createAnonymousBootstrapPayload({ surfaceAccess = {} })`
184
+ - `mapUserSettingsBootstrap(settings = {})`
205
185
 
206
- ### `src/server/registerUsersBootstrap.js`
186
+ ### `src/server/usersExtensions.js`
207
187
  Exports
208
- - `registerUsersBootstrap(app)`
188
+ - `createUsersExtensions()`
189
+ Local functions
190
+ - `normalizeContributor(value)`
209
191
 
210
- ### `src/server/registerUsersCore.js`
192
+ ### `src/server/UsersExtensionsProvider.js`
211
193
  Exports
212
- - `registerUsersCore(app)`
194
+ - `UsersExtensionsProvider`
213
195
 
214
- ### `src/server/usersBootstrapContributor.js`
196
+ ### `src/server/UsersFeature.js`
215
197
  Exports
216
- - `createUsersBootstrapContributor({ userProfilesRepository, userSettingsRepository, appConfig = {}, authService } = {})`
217
- Local functions
218
- - `getOAuthProviderCatalogPayload(authService)`
219
- - `resolveBooleanConfigValue(value, fallback)`
220
- - `resolveAppState(appConfig = {})`
221
- - `createAnonymousBootstrapPayload({ appState, surfaceAccess = {} })`
222
- - `mapUserSettingsBootstrap(settings = {})`
198
+ - `UsersFeature`
199
+ - `createUsersRuntime({ authService, identity, storage } = {})`
223
200
 
224
- ### `src/server/UsersCoreServiceProvider.js`
201
+ ### `src/server/UsersIdentityProvider.js`
225
202
  Exports
226
- - `UsersCoreServiceProvider`
203
+ - `UsersIdentityProvider`
227
204
 
228
205
  ### `src/shared/index.js`
229
206
  Exports
@@ -264,17 +241,17 @@ Local functions
264
241
  Exports
265
242
  - `DEFAULT_USER_SETTINGS`
266
243
 
267
- ### templates
244
+ ### migrations
268
245
 
269
- ### `templates/migrations/users_core_generic_initial.cjs`
246
+ ### `migrations/users_core_generic_initial.cjs`
270
247
  Exports
271
248
  - None
272
249
 
273
- ### `templates/migrations/users_core_profile_updated_at.cjs`
250
+ ### `migrations/users_core_profile_updated_at.cjs`
274
251
  Exports
275
252
  - None
276
253
 
277
- ### `templates/migrations/users_core_profile_username.cjs`
254
+ ### `migrations/users_core_profile_username.cjs`
278
255
  Exports
279
256
  - None
280
257
  Local functions
@@ -283,50 +260,28 @@ Local functions
283
260
  - `buildUsernameCandidate(baseUsername, suffix)`
284
261
  - `resolveUniqueUsername(baseUsername, usedUsernames)`
285
262
 
286
- ### `templates/packages/users-workspace/src/server/actions.js`
287
- Exports
288
- - `createActions({ surface } = {})`
289
- Local functions
290
- - `buildListQuery(input = {})`
263
+ ### patterns
291
264
 
292
- ### `templates/packages/users-workspace/src/server/registerRoutes.js`
265
+ ### `patterns/user-administration-server/example/packages/users-workspace/src/server/UsersWorkspaceFeature.js`
293
266
  Exports
294
- - `registerRoutes(app, { routeOwnershipFilter = "public", routeSurface = "", routeSurfaceRequiresWorkspace = false, routeRelativePath = "" } = {})`
267
+ - `UsersWorkspaceFeature`
295
268
 
296
- ### `templates/packages/users-workspace/src/server/UsersProvider.js`
269
+ ### `patterns/user-administration-server/example/packages/users-workspace/src/shared/index.js`
297
270
  Exports
298
- - `UsersProvider`
299
- Local functions
300
- - `resolveCrudPolicyFromApp(app)`
301
-
302
- ### `templates/packages/users/src/server/actions.js`
303
- Exports
304
- - `createActions({ surface } = {})`
305
-
306
- ### `templates/packages/users/src/server/registerRoutes.js`
307
- Exports
308
- - `registerRoutes(app, { routeOwnershipFilter = "public", routeSurface = "", routeRelativePath = "" } = {})`
309
-
310
- ### `templates/packages/users/src/server/repository.js`
311
- Exports
312
- - `createRepository({ api, knex } = {})`
271
+ - `resource`
313
272
 
314
- ### `templates/packages/users/src/server/service.js`
273
+ ### `patterns/user-administration-server/example/packages/users-workspace/src/shared/userResource.js`
315
274
  Exports
316
- - `createService({ usersRepository } = {})`
317
- Local functions
318
- - `return404IfNotFound(document = null)`
275
+ - `resource`
319
276
 
320
- ### `templates/packages/users/src/server/UsersProvider.js`
277
+ ### `patterns/user-administration-server/example/packages/users/src/server/UsersFeature.js`
321
278
  Exports
322
- - `UsersProvider`
323
- Local functions
324
- - `resolveCrudPolicyFromApp(app)`
279
+ - `UsersFeature`
325
280
 
326
- ### `templates/packages/users/src/shared/index.js`
281
+ ### `patterns/user-administration-server/example/packages/users/src/shared/index.js`
327
282
  Exports
328
283
  - `resource`
329
284
 
330
- ### `templates/packages/users/src/shared/userResource.js`
285
+ ### `patterns/user-administration-server/example/packages/users/src/shared/userResource.js`
331
286
  Exports
332
287
  - `resource`