@jskit-ai/agent-docs 0.1.15 → 0.1.17

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 (35) hide show
  1. package/guide/agent/app-extras/assistant.md +2 -2
  2. package/guide/agent/app-setup/initial-scaffolding.md +1 -3
  3. package/guide/agent/app-setup/multi-homing.md +21 -0
  4. package/guide/agent/generators/advanced-cruds.md +208 -110
  5. package/guide/agent/generators/crud-generators.md +4 -0
  6. package/guide/agent/index.md +1 -1
  7. package/package.json +1 -1
  8. package/patterns/INDEX.md +1 -1
  9. package/patterns/client-requests.md +3 -0
  10. package/patterns/crud-repository-mapping.md +45 -23
  11. package/patterns/filters.md +8 -8
  12. package/reference/autogen/KERNEL_MAP.md +94 -40
  13. package/reference/autogen/README.md +3 -0
  14. package/reference/autogen/packages/assistant-core.md +0 -12
  15. package/reference/autogen/packages/assistant-runtime.md +11 -3
  16. package/reference/autogen/packages/auth-core.md +34 -23
  17. package/reference/autogen/packages/auth-provider-supabase-core.md +4 -7
  18. package/reference/autogen/packages/auth-web.md +3 -0
  19. package/reference/autogen/packages/console-core.md +6 -29
  20. package/reference/autogen/packages/crud-core.md +35 -28
  21. package/reference/autogen/packages/crud-server-generator.md +28 -50
  22. package/reference/autogen/packages/crud-ui-generator.md +12 -7
  23. package/reference/autogen/packages/http-runtime.md +171 -21
  24. package/reference/autogen/packages/json-rest-api-core.md +54 -0
  25. package/reference/autogen/packages/kernel.md +118 -55
  26. package/reference/autogen/packages/realtime.md +1 -0
  27. package/reference/autogen/packages/resource-core.md +35 -0
  28. package/reference/autogen/packages/resource-crud-core.md +51 -0
  29. package/reference/autogen/packages/shell-web.md +31 -0
  30. package/reference/autogen/packages/users-core.md +34 -77
  31. package/reference/autogen/packages/users-web.md +29 -20
  32. package/reference/autogen/packages/workspaces-core.md +44 -76
  33. package/reference/autogen/packages/workspaces-web.md +1 -3
  34. package/reference/autogen/tooling/jskit-cli.md +5 -4
  35. package/workflow/feature-delivery.md +2 -1
@@ -0,0 +1,54 @@
1
+ # packages/json-rest-api-core
2
+
3
+ Generated by `npm run agent-docs:build`.
4
+ Do not edit manually.
5
+
6
+ Generated inventory for `packages/json-rest-api-core`.
7
+ Use this on demand; do not load the full index at startup.
8
+
9
+ ## Scope
10
+ - Source: `packages/json-rest-api-core/**/*{.js,.mjs,.cjs,.vue}`
11
+ - Excludes: `test/`, `tests/`, `__tests__/`, `*.test.*`, `*.spec.*`, `*.vitest.*`, `node_modules/`, `dist/`, `coverage/`, `docs/`, `LEGACY/`, `.vitepress/cache/`, `.vitepress/dist/`
12
+
13
+ ## Sections
14
+
15
+ ### src
16
+
17
+ ### `src/server/JsonRestApiCoreServiceProvider.js`
18
+ Exports
19
+ - `JsonRestApiCoreServiceProvider`
20
+
21
+ ### `src/server/jsonRestApiHost.js`
22
+ Exports
23
+ - `INTERNAL_JSON_REST_API`
24
+ - `JSON_REST_AUTOFILTER_PRESETS`
25
+ - `addResourceIfMissing(api, scopeName, resourceConfig)`
26
+ - `buildJsonRestQueryParams(resourceType = "", query = {}, { include = undefined } = {})`
27
+ - `createJsonApiInputRecord(resourceType = "", attributes = {}, { id = null, relationships = null } = {})`
28
+ - `createJsonApiRelationship(resourceType = "", id = null)`
29
+ - `createJsonRestResourceScopeOptions(resource = {}, { writeSerializers = {}, normalizeId = null } = {})`
30
+ - `createJsonRestContext(context = null)`
31
+ - `isJsonRestResourceMissingError(error = null)`
32
+ - `returnNullWhenJsonRestResourceMissing(run)`
33
+ - `resolveWorkspaceScopeValue(context = null)`
34
+ - `resolveUserScopeValue(context = null)`
35
+ - `simplifyJsonApiDocument(payload = {})`
36
+ - `createJsonRestApiHost({ knex })`
37
+ - `registerJsonRestApiHost(app)`
38
+ Local functions
39
+ - `isPlainJsonRestObject(value)`
40
+ - `cloneJsonRestResourceValue(value, { writeSerializers = {} } = {})`
41
+ - `normalizeScopeValue(value)`
42
+ - `normalizeJsonRestText(value, { fallback = "" } = {})`
43
+ - `normalizeJsonRestObject(value)`
44
+ - `normalizeJsonRestList(value)`
45
+ - `normalizeJsonApiResourceObject(resource = {})`
46
+ - `buildJsonApiIncludedIndex(payload = {})`
47
+ - `simplifyJsonApiRelationshipData(data, { includedIndex = null, seen = null } = {})`
48
+ - `simplifyJsonApiResourceObject(resource = {}, { includedIndex = null, seen = null } = {})`
49
+
50
+ ### root
51
+
52
+ ### `package.descriptor.mjs`
53
+ Exports
54
+ - None
@@ -21,8 +21,7 @@ Exports
21
21
  - `requireServiceMethod(service, methodName, contributorId, { serviceLabel } = {})`
22
22
  - `resolveRequest(context)`
23
23
  - `hasPermission`
24
- - `EMPTY_INPUT_VALIDATOR`
25
- - `OBJECT_INPUT_VALIDATOR`
24
+ - `emptyInputValidator`
26
25
 
27
26
  ### `shared/actions/actionDefinitions.js`
28
27
  Exports
@@ -36,12 +35,9 @@ Exports
36
35
  - `__testables`
37
36
  Local functions
38
37
  - `normalizeStringArray(value, { fieldName, allowedSet, allowEmpty = false } = {})`
39
- - `normalizeSingleActionValidator(value, fieldName, { required = false } = {})`
40
- - `isActionValidatorShape(value)`
41
- - `normalizeSectionActionValidatorMap(value, fieldName)`
42
- - `mergeNormalizedActionValidators(validators, fieldName)`
43
- - `normalizeActionValidators(value, fieldName, { required = false } = {})`
44
- - `normalizeActionOutputValidator(value, fieldName, { required = false } = {})`
38
+ - `normalizeSingleActionSchema(value, fieldName, { required = false, defaultMode = "" } = {})`
39
+ - `normalizeActionInputDefinition(value, fieldName, { required = false } = {})`
40
+ - `normalizeActionOutputDefinition(value, fieldName, { required = false } = {})`
45
41
  - `normalizeActionPermission(permission, actionId)`
46
42
  - `normalizeAuditConfig(audit, { actionId })`
47
43
  - `normalizeObservabilityConfig(observability)`
@@ -98,12 +94,6 @@ Exports
98
94
  - `__testables`
99
95
  Local functions
100
96
  - `createActionValidationError({ status = 400, message = "Validation failed.", code = "ACTION_VALIDATION_FAILED", details, cause } = {})`
101
- - `normalizeSchemaValidationErrors(schema)`
102
- - `buildSchemaValidatorError({ phase, definition } = {})`
103
- - `normalizeTypeBoxValidationErrors(schema, payload)`
104
- - `normalizeFunctionSchemaResult(result, payload, { phase, definition } = {})`
105
- - `normalizeValidatorPayload(validator, payload, { phase, definition, context })`
106
- - `validateSchemaPayload(schema, payload, { phase, definition })`
107
97
 
108
98
  ### `shared/actions/registry.js`
109
99
  Exports
@@ -199,6 +189,23 @@ Exports
199
189
  Exports
200
190
  - `isContainerToken(value)`
201
191
 
192
+ ### `shared/support/crudFieldContract.js`
193
+ Exports
194
+ - `CRUD_FIELD_STORAGE_COLUMN`
195
+ - `CRUD_FIELD_STORAGE_VIRTUAL`
196
+ - `CRUD_FIELD_WRITE_SERIALIZER_DATETIME_UTC`
197
+ - `CRUD_LOOKUP_FORM_CONTROL_AUTOCOMPLETE`
198
+ - `CRUD_LOOKUP_FORM_CONTROL_SELECT`
199
+ - `checkCrudLookupFormControl(value, { context = "crud field ui.formControl", defaultValue = CRUD_LOOKUP_FORM_CONTROL_AUTOCOMPLETE } = {})`
200
+ - `resolveCrudFieldSchemaProperties(value, { context = "crud resource field definitions" } = {})`
201
+ - `normalizeCrudFieldStorageConfig(fieldDefinition = {}, { context = "crud field storage", fieldKey = "" } = {})`
202
+ - `buildCrudOperationSchemaFields(fields = {}, operationName = "")`
203
+ - `buildCrudFieldContractMap(resource = {}, { context = "crud resource field contract" } = {})`
204
+ - `resolveCrudFieldContractEntry(resource = {}, fieldKey = "", options = {})`
205
+ Local functions
206
+ - `cloneStructuredFieldMetadata(value = {})`
207
+ - `mergeFieldContractEntry(target, source, { context = "crud field contract", fieldKey = "" } = {})`
208
+
202
209
  ### `shared/support/crudListFilters.js`
203
210
  Exports
204
211
  - `CRUD_LIST_FILTER_TYPE_FLAG`
@@ -214,10 +221,41 @@ Exports
214
221
  - `CRUD_LIST_FILTER_PRESENCE_PRESENT`
215
222
  - `CRUD_LIST_FILTER_PRESENCE_MISSING`
216
223
  - `CRUD_LIST_FILTER_PRESENCE_OPTIONS`
224
+ - `CRUD_LIST_FILTER_INVALID_VALUES_REJECT`
225
+ - `CRUD_LIST_FILTER_INVALID_VALUES_DISCARD`
226
+ - `INVALID_CRUD_LIST_FILTER_QUERY_VALUE`
227
+ - `normalizeCrudListFilterInvalidValues(value = "")`
228
+ - `parseCrudListRangeQueryExpression(value = null)`
229
+ - `formatCrudListRangeQueryExpression(startValue = "", endValue = "", { collapseExact = false } = {})`
217
230
  - `defineCrudListFilters(definitions = {})`
231
+ - `createCrudListFilterInitialValue(filter = {})`
232
+ - `isCrudListFilterMultiValue(filter = {})`
233
+ - `isCrudListFilterStructuredValue(filter = {})`
234
+ - `normalizeCrudListFilterUiValue(filter = {}, rawValue)`
235
+ - `areCrudListFilterUiValuesEqual(filter = {}, currentValue, expectedValue)`
236
+ - `hasCrudListFilterUiValue(filter = {}, rawValue)`
237
+ - `listCrudListFilterChipValues(filter = {}, rawValue)`
238
+ - `formatCrudListFilterDefaultChipLabel(filter = {}, rawValue, { resolveAtomicValue = null } = {})`
239
+ - `formatCrudListFilterQueryValue(filter = {}, value)`
240
+ - `parseCrudListFilterQueryValue(filter = {}, value, { invalidValues = CRUD_LIST_FILTER_INVALID_VALUES_REJECT } = {})`
218
241
  - `resolveCrudListFilterQueryKeys(definition = {})`
219
242
  - `resolveCrudListFilterOptionLabel(definition = {}, value = "", { fallback = "" } = {})`
220
243
  Local functions
244
+ - `firstCrudListFilterValue(value)`
245
+ - `isPrimitiveCrudListFilterInput(value)`
246
+ - `isPrimitiveOrPrimitiveArrayCrudListFilterInput(value)`
247
+ - `normalizeDateFilterText(value)`
248
+ - `normalizeCanonicalRecordIdList(value)`
249
+ - `normalizeFiniteFilterNumber(value)`
250
+ - `normalizeAllowedFilterTextValue(value, allowedValues = new Set())`
251
+ - `normalizeAllowedFilterTextValues(value, allowedValues = new Set())`
252
+ - `resolveCrudListFilterAllowedValues(filter = {})`
253
+ - `normalizeCrudListDateRangeUiValue(rawValue)`
254
+ - `normalizeCrudListNumberRangeUiValue(rawValue)`
255
+ - `matchCrudListFilterValues(currentValue, expectedValue)`
256
+ - `rejectInvalidCrudListFilterValue({ invalidValues = CRUD_LIST_FILTER_INVALID_VALUES_REJECT } = {})`
257
+ - `normalizeCrudListDateRangeQueryValue(value)`
258
+ - `normalizeCrudListNumberRangeQueryValue(value)`
221
259
  - `normalizeCrudListFilterType(value = "")`
222
260
  - `normalizeCrudListFilterOption(rawOption = null, { context = "filter option" } = {})`
223
261
  - `normalizeCrudListFilterOptions(rawOptions = [], { context = "filter options" } = {})`
@@ -461,6 +499,10 @@ Local functions
461
499
  - `resolveRouteSurface(route, inheritedSurfaceId = "", { surfaceRuntime, absolutePath = "/" } = {})`
462
500
  - `normalizeRoutesBySurfaceBoundaries(routeList = [], { surfaceRuntime } = {})`
463
501
 
502
+ ### `shared/validators/composeSchemaDefinitions.js`
503
+ Exports
504
+ - `composeSchemaDefinitions(definitions, { mode, context = "schema definitions" } = {})`
505
+
464
506
  ### `shared/validators/createCursorListValidator.js`
465
507
  Exports
466
508
  - `createCursorListValidator(itemValidator)`
@@ -468,8 +510,6 @@ Exports
468
510
  ### `shared/validators/cursorPaginationQueryValidator.js`
469
511
  Exports
470
512
  - `cursorPaginationQueryValidator`
471
- Local functions
472
- - `normalizeCursorPaginationQuery(input = {})`
473
513
 
474
514
  ### `shared/validators/htmlTimeSchemas.js`
475
515
  Exports
@@ -478,25 +518,28 @@ Exports
478
518
 
479
519
  ### `shared/validators/index.js`
480
520
  Exports
521
+ - `createSchema`
481
522
  - `normalizeObjectInput`
523
+ - `composeSchemaDefinitions`
482
524
  - `createCursorListValidator`
483
525
  - `cursorPaginationQueryValidator`
484
526
  - `HTML_TIME_STRING_SCHEMA`
485
527
  - `NULLABLE_HTML_TIME_STRING_SCHEMA`
486
528
  - `mergeObjectSchemas`
487
- - `mergeValidators`
488
- - `nestValidator`
529
+ - `hasJsonRestSchemaDefinition`
530
+ - `normalizeSingleSchemaDefinition`
531
+ - `normalizeSchemaDefinition`
532
+ - `resolveSchemaTransportSchemaDefinition`
533
+ - `resolveStructuredSchemaTransportSchema`
534
+ - `executeJsonRestSchemaDefinition`
535
+ - `buildSchemaValidationError`
536
+ - `validateSchemaPayload`
489
537
  - `RECORD_ID_PATTERN`
490
538
  - `recordIdSchema`
491
539
  - `recordIdInputSchema`
492
540
  - `nullableRecordIdSchema`
493
541
  - `nullableRecordIdInputSchema`
494
- - `recordIdValidator`
495
- - `nullableRecordIdValidator`
496
542
  - `recordIdParamsValidator`
497
- - `positiveIntegerValidator`
498
- - `normalizeSettingsFieldInput`
499
- - `normalizeSettingsFieldOutput`
500
543
  - `normalizeRequiredFieldList`
501
544
  - `deriveRequiredFieldsFromSchema`
502
545
  - `deriveResourceRequiredMetadata`
@@ -505,22 +548,24 @@ Exports
505
548
  Exports
506
549
  - `normalizeObjectInput(value)`
507
550
 
508
- ### `shared/validators/mergeObjectSchemas.js`
509
- Exports
510
- - `mergeObjectSchemas(schemas)`
511
-
512
- ### `shared/validators/mergeValidators.js`
551
+ ### `shared/validators/jsonRestSchemaSupport.js`
513
552
  Exports
514
- - `mergeValidators(validators = [], options = {})`
553
+ - `isJsonRestSchemaInstance(value)`
554
+ - `resolveSchemaDefinitionMode(schemaDefinition = null, { defaultMode = "create", context = "schema definition.mode" } = {})`
555
+ - `resolveSchemaDefinitionTransportSchema(schemaDefinition = null, options = {})`
556
+ - `executeSchemaDefinition(schemaDefinition = null, payload, options = {})`
557
+ - `normalizeJsonRestSchemaFieldErrors(errors = {}, schemaDefinition = null)`
515
558
  Local functions
516
- - `isPromiseLike(value)`
517
- - `createErrorFactory(createError)`
559
+ - `requireJsonRestSchemaInstance(schemaDefinition = null, { context = "schema definition.schema" } = {})`
560
+ - `resolveJsonRestSchemaFieldMessages(schemaDefinition = null, fieldName = "")`
561
+ - `resolveJsonRestSchemaFieldErrorMessage(fieldName, entry, schemaDefinition = null)`
518
562
 
519
- ### `shared/validators/nestValidator.js`
563
+ ### `shared/validators/mergeObjectSchemas.js`
520
564
  Exports
521
- - `nestValidator(key, validator, { required = true } = {})`
565
+ - `mergeObjectSchemas(schemas)`
522
566
  Local functions
523
- - `normalizeValidator(validator)`
567
+ - `cloneSchemaValue(value)`
568
+ - `assertMergeableObjectSchema(schema)`
524
569
 
525
570
  ### `shared/validators/recordIdParamsValidator.js`
526
571
  Exports
@@ -529,10 +574,7 @@ Exports
529
574
  - `recordIdInputSchema`
530
575
  - `nullableRecordIdSchema`
531
576
  - `nullableRecordIdInputSchema`
532
- - `recordIdValidator`
533
- - `nullableRecordIdValidator`
534
577
  - `recordIdParamsValidator`
535
- - `positiveIntegerValidator`
536
578
 
537
579
  ### `shared/validators/resourceRequiredMetadata.js`
538
580
  Exports
@@ -540,10 +582,22 @@ Exports
540
582
  - `deriveRequiredFieldsFromSchema(schema)`
541
583
  - `deriveResourceRequiredMetadata(resourceSchema)`
542
584
 
543
- ### `shared/validators/settingsFieldNormalization.js`
585
+ ### `shared/validators/schemaDefinitions.js`
586
+ Exports
587
+ - `hasJsonRestSchemaDefinition(value)`
588
+ - `normalizeSingleSchemaDefinition(value, { context = "schema definition", defaultMode = "" } = {})`
589
+ - `normalizeSchemaDefinition(value, { context = "schema definition", defaultMode = "" } = {})`
590
+ - `resolveSchemaTransportSchemaDefinition(value, { context = "schema definition", defaultMode = "" } = {})`
591
+ - `resolveStructuredSchemaTransportSchema(value, { context = "schema definition", defaultMode = "" } = {})`
592
+ - `executeJsonRestSchemaDefinition(value, payload, { context = "schema definition", defaultMode = "" } = {})`
593
+ - `normalizeJsonRestSchemaFieldErrors`
594
+ Local functions
595
+ - `isSchemaDefinitionObject(value)`
596
+
597
+ ### `shared/validators/schemaPayloadValidation.js`
544
598
  Exports
545
- - `normalizeSettingsFieldInput(payload = {}, fields = [])`
546
- - `normalizeSettingsFieldOutput(payload = {}, fields = [])`
599
+ - `buildSchemaValidationError({ message = "Schema validation failed.", fieldErrors = null, errors = null, cause, statusCode = null } = {})`
600
+ - `validateSchemaPayload(schemaDefinition, payload, { phase = "input", context = "schema definition", statusCode = null } = {})`
547
601
 
548
602
  ### client
549
603
 
@@ -824,8 +878,17 @@ Exports
824
878
  - `registerRoutes(fastify, { routes = [], app = null, applyRoutePolicy = defaultApplyRoutePolicy, missingHandler = defaultMissingHandler, enableRequestScope = true, requestScopeProperty = "scope", requestActionExecutorProperty = "executeAction", actionExecutorToken = "actionExecutor", requestActionDefaultChannel = "api", requestActionDefaultSurface = "", requestScopeIdPrefix = "http", requestIdResolver = null, middleware = {} } = {})`
825
879
  Local functions
826
880
  - `toFastifyRouteOptions(route)`
881
+ - `normalizeHeaderValue(value)`
882
+ - `normalizeMediaType(value = "")`
883
+ - `routeDefinesRequestBody(route = null)`
884
+ - `shouldEnforceRequestContentType(method = "", transport = null, route = null)`
885
+ - `routeRequiresJsonApiContentTypeParser(route = null)`
886
+ - `enforceRequestContentType({ request = null, route = null, transport = null } = {})`
887
+ - `attachRouteTransport(request, transport = null)`
888
+ - `replyHasHeader(reply, name = "")`
827
889
  - `normalizeRouteInputTransforms(route)`
828
- - `buildRequestInput({ request = null, inputTransforms = null } = {})`
890
+ - `buildRequestInput({ request = null, inputTransforms = null, transportInputTransforms = null } = {})`
891
+ - `wrapReplySend({ reply = null, request = null, route = null, outputTransform = null, transport = null } = {})`
829
892
 
830
893
  ### `server/http/lib/routeSupport.js`
831
894
  Exports
@@ -833,21 +896,22 @@ Exports
833
896
  - `normalizeMiddlewareEntry(entry, { context = "middleware", index = -1, ErrorType = Error, entryLabel = "entry" } = {})`
834
897
  - `normalizeMiddlewareStack(value, { context = "middleware", ErrorType = Error, entryLabel = "entry", includeIndex = true } = {})`
835
898
 
899
+ ### `server/http/lib/routeTransport.js`
900
+ Exports
901
+ - `ROUTE_TRANSPORT_KINDS`
902
+ - `normalizeRouteOutputTransform(value, { context = "route output", ErrorType = Error } = {})`
903
+ - `normalizeRouteTransport(value, { context = "route transport", ErrorType = Error } = {})`
904
+
836
905
  ### `server/http/lib/routeValidator.js`
837
906
  Exports
838
907
  - `defineRouteValidator(definition = {})`
839
908
  - `compileRouteValidator(validator, { context = "route validator" } = {})`
840
909
  - `resolveRouteValidatorOptions({ method = "", path = "", options = {} } = {})`
841
910
  Local functions
842
- - `passThroughInputSection(value)`
843
- - `normalizeOptionalValidatorTransformer(source, normalized, { context = "route validator" } = {})`
844
- - `normalizeSingleRouteValidator(value, { context = "route validator" } = {})`
845
- - `mergeNormalizedRouteValidators(validators, { context = "route validator" } = {})`
846
- - `normalizeRouteValidator(value, { context = "route validator", allowArray = false } = {})`
847
- - `normalizeResponseValidatorEntry(value, { context = "route validator response entry" } = {})`
848
- - `normalizeResponseValidatorDefinition(value, { context = "route validator.response" } = {})`
911
+ - `stripJsonRestTransportExtensions(value)`
912
+ - `normalizeRouteSchemaSection(value, { context = "route section", defaultMode = "patch" } = {})`
913
+ - `normalizeResponseDefinition(value, { context = "route responses" } = {})`
849
914
  - `normalizeAdvancedFastifySchema(value, { context = "route validator" } = {})`
850
- - `normalizeAdvancedJskitInput(value, { context = "route validator" } = {})`
851
915
  - `normalizeRouteValidatorMeta(value, { context = "route validator" } = {})`
852
916
  - `normalizeRouteValidatorDefinition(sourceDefinition, { context = "route validator" } = {})`
853
917
  - `compileNormalizedRouteValidator(normalizedValidator)`
@@ -1036,8 +1100,6 @@ Local functions
1036
1100
  ### `server/runtime/bootBootstrapRoutes.js`
1037
1101
  Exports
1038
1102
  - `bootBootstrapRoutes(app)`
1039
- - `bootstrapQueryValidator`
1040
- - `bootstrapOutputValidator`
1041
1103
 
1042
1104
  ### `server/runtime/canonicalJson.js`
1043
1105
  Exports
@@ -1093,6 +1155,7 @@ Exports
1093
1155
  Exports
1094
1156
  - `resolveLoggerLevel({ configuredLevel = "", nodeEnv = "development", allowedLevels = [] } = {})`
1095
1157
  - `createFastifyLoggerOptions({ configuredLevel = "", nodeEnv = "development", allowedLevels = [], redactPaths = [], redactCensor = "[REDACTED]" } = {})`
1158
+ - `registerJsonApiContentTypeParser(fastify)`
1096
1159
  - `registerRequestLoggingHooks(app, { requestStartedAtSymbol, getPathname, getSurface, observeRequest, enableRequestLogs = true, defaultSurfaceId = "" } = {})`
1097
1160
  - `registerApiErrorHandler(app, { isAppError, onRecordDbError, onCaptureServerError, appErrorLogMessage = "AppError 5xx", unhandledErrorLogMessage = "Unhandled error" } = {})`
1098
1161
  - `ensureApiErrorHandling(app, { fastifyToken = "jskit.fastify", markerToken = "kernel.runtime.apiErrorHandlerRegistered", isAppError: isAppErrorOverride, autoRegister = true, ...handlerOptions } = {})`
@@ -1100,7 +1163,10 @@ Exports
1100
1163
  - `recordDbErrorBestEffort(observabilityService, error)`
1101
1164
  - `runGracefulShutdown({ signal = "", exitProcess = false, exitCode = 0, timeoutMs = 10_000, appInstance = null, stopBackgroundRuntimes = () => {}, closeDatabase = async () => {}, logger = console } = {})`
1102
1165
  Local functions
1166
+ - `createFallbackJsonBodyParser()`
1103
1167
  - `resolveValidationFieldErrors(error)`
1168
+ - `resolveRequestRouteTransport(request)`
1169
+ - `applyRouteTransportErrorResponse(reply, request, error, { statusCode = 500, normalizedErrorCode = "" } = {})`
1104
1170
 
1105
1171
  ### `server/runtime/index.js`
1106
1172
  Exports
@@ -1125,9 +1191,6 @@ Exports
1125
1191
  Local functions
1126
1192
  - `normalizeModuleId(value)`
1127
1193
  - `normalizeSchema(value)`
1128
- - `normalizeIssuePath(issue)`
1129
- - `normalizeIssueMessage(issue)`
1130
- - `normalizeValidationIssues(rawIssues = [])`
1131
1194
  - `formatIssues(issues = [])`
1132
1195
  - `buildInvalidConfigMessage(moduleId, issues = [])`
1133
1196
  - `normalizeCustomValidationIssues(result)`
@@ -1288,7 +1351,7 @@ Local functions
1288
1351
  - `normalizePlacementTargetId(target = {})`
1289
1352
  - `resolveRelativeLinkToFromParent(pageTarget = {}, parentHost = null)`
1290
1353
  - `resolveRelativeLinkToFromNearestIndexOwner(pageTarget = {})`
1291
- - `resolveInferredPageLinkTo({ explicitLinkTo = "", pageTarget = {}, parentHost = null, placementTarget = null } = {})`
1354
+ - `resolveInferredPageLinkTo({ explicitLinkTo = "", pageTarget = {}, parentHost = null, placementTarget = null, suppressImplicitRelativeLinks = false } = {})`
1292
1355
  - `resolveInferredPageLinkComponentToken({ explicitComponentToken = "", parentHost = null, placementTarget = null, defaultComponentToken = DEFAULT_PAGE_LINK_COMPONENT_TOKEN, subpageComponentToken = DEFAULT_SUBPAGE_LINK_COMPONENT_TOKEN } = {})`
1293
1356
  - `renderPageLinkWhenLine(pageTarget = {})`
1294
1357
 
@@ -72,6 +72,7 @@ Local functions
72
72
  - `resolveAudienceTargets(dispatcher, event, { scope, logger } = {})`
73
73
  - `resolveSocketActorId(authService, socket)`
74
74
  - `resolveActorWorkspaceIds(workspaceMembershipsRepository, actorId)`
75
+ - `resolveOptionalScopeBinding(scope, token = "")`
75
76
  - `registerRealtimeSocketAudienceBootstrap(scope, io, logger)`
76
77
 
77
78
  ### `src/server/runtime.js`
@@ -0,0 +1,35 @@
1
+ # packages/resource-core
2
+
3
+ Generated by `npm run agent-docs:build`.
4
+ Do not edit manually.
5
+
6
+ Generated inventory for `packages/resource-core`.
7
+ Use this on demand; do not load the full index at startup.
8
+
9
+ ## Scope
10
+ - Source: `packages/resource-core/**/*{.js,.mjs,.cjs,.vue}`
11
+ - Excludes: `test/`, `tests/`, `__tests__/`, `*.test.*`, `*.spec.*`, `*.vitest.*`, `node_modules/`, `dist/`, `coverage/`, `docs/`, `LEGACY/`, `.vitepress/cache/`, `.vitepress/dist/`
12
+
13
+ ## Sections
14
+
15
+ ### src
16
+
17
+ ### `src/shared/resource.js`
18
+ Exports
19
+ - `createSchemaDefinition(schema, mode = "patch", { context = "schema definition" } = {})`
20
+ - `defineResource(resource = {})`
21
+ - `normalizeSchemaDefinitionLike(value, { context = "schema definition", defaultMode = "patch" } = {})`
22
+ Local functions
23
+ - `isJsonRestSchemaInstance(value)`
24
+ - `isSchemaDefinitionLike(value)`
25
+ - `resolveSchemaDefinitionMode(mode, { context = "schema definition.mode", defaultMode = "patch" } = {})`
26
+ - `resolveDefaultOperationSchemaMode(sectionName, operation = {})`
27
+ - `normalizeOperationDefinition(operationName, operation = null, resourceMessages = null)`
28
+ - `normalizeResourceOperations(operations = null, resourceMessages = null)`
29
+ - `requireResourceNamespace(value, { context = "defineResource resource.namespace" } = {})`
30
+
31
+ ### root
32
+
33
+ ### `package.descriptor.mjs`
34
+ Exports
35
+ - None
@@ -0,0 +1,51 @@
1
+ # packages/resource-crud-core
2
+
3
+ Generated by `npm run agent-docs:build`.
4
+ Do not edit manually.
5
+
6
+ Generated inventory for `packages/resource-crud-core`.
7
+ Use this on demand; do not load the full index at startup.
8
+
9
+ ## Scope
10
+ - Source: `packages/resource-crud-core/**/*{.js,.mjs,.cjs,.vue}`
11
+ - Excludes: `test/`, `tests/`, `__tests__/`, `*.test.*`, `*.spec.*`, `*.vitest.*`, `node_modules/`, `dist/`, `coverage/`, `docs/`, `LEGACY/`, `.vitepress/cache/`, `.vitepress/dist/`
12
+
13
+ ## Sections
14
+
15
+ ### src
16
+
17
+ ### `src/shared/crudNamespaceSupport.js`
18
+ Exports
19
+ - `normalizeCrudNamespace(value = "")`
20
+ - `requireCrudNamespace(namespace, { context = "requireCrudNamespace" } = {})`
21
+ - `resolveCrudRecordChangedEvent(namespace = "")`
22
+
23
+ ### `src/shared/crudResource.js`
24
+ Exports
25
+ - `defineCrudResource(resource = {})`
26
+ Local functions
27
+ - `createCrudRecordIdFieldDefinition()`
28
+ - `resolveCrudLookupContainerKey(resource = {})`
29
+ - `resolveFieldEntries(resource = {}, operationName = "output")`
30
+ - `createDerivedCrudRecordOutputDefinition(resource = {})`
31
+ - `createDerivedCrudBodyDefinition(resource = {}, operationName = "patch")`
32
+ - `createCrudDeleteOutputDefinition()`
33
+ - `requireCrudOperationName(value = "", { context = "crud operation name" } = {})`
34
+ - `requireCrudOperationSpec(operationName = "")`
35
+ - `resolveCrudOperationNames(resource = {})`
36
+ - `resolveFirstPresentValue(source = {}, keys = [])`
37
+ - `resolveExplicitCrudSchemaDefinition(crudConfig = {}, keys = [], { context = "defineCrudResource schema definition", defaultMode = "patch" } = {})`
38
+ - `createCrudListOutputDefinition(resolveRecordOutputDefinition, crudConfig = {})`
39
+ - `createCrudRecordOutputDefinitionResolver(resource = {}, crudConfig = {})`
40
+ - `resolveCrudBodyDefinition(spec, resource = {}, crudConfig = {})`
41
+ - `resolveCrudOutputDefinition(spec, resolveRecordOutputDefinition, crudConfig = {})`
42
+ - `createCrudOperationDefinition(operationName, { namespace = "", resource = {}, crudConfig = {}, resolveRecordOutputDefinition } = {})`
43
+ - `createDefaultCrudOperations(resource = {})`
44
+ - `mergeCrudOperationDefinition(baseDefinition, overrideDefinition)`
45
+ - `mergeCrudOperations(defaultOperations = {}, overrides = {})`
46
+
47
+ ### root
48
+
49
+ ### `package.descriptor.mjs`
50
+ Exports
51
+ - None
@@ -14,6 +14,26 @@ Use this on demand; do not load the full index at startup.
14
14
 
15
15
  ### src
16
16
 
17
+ ### `src/client/bootstrap/bootstrapErrorStatus.js`
18
+ Exports
19
+ - `resolveBootstrapErrorStatusCode(error)`
20
+
21
+ ### `src/client/bootstrap/bootstrapPayloadHandlerRegistry.js`
22
+ Exports
23
+ - `BOOTSTRAP_PAYLOAD_HANDLER_TAG`
24
+ - `registerBootstrapPayloadHandler(app, token, factory)`
25
+ - `resolveBootstrapPayloadHandlers(scope)`
26
+ Local functions
27
+ - `assertTaggableApp(app, context = "bootstrap payload handler registry")`
28
+ - `normalizeBootstrapPayloadHandler(entry)`
29
+
30
+ ### `src/client/bootstrap/index.js`
31
+ Exports
32
+ - `BOOTSTRAP_PAYLOAD_HANDLER_TAG`
33
+ - `registerBootstrapPayloadHandler`
34
+ - `resolveBootstrapPayloadHandlers`
35
+ - `resolveBootstrapErrorStatusCode`
36
+
17
37
  ### `src/client/components/ShellErrorHost.vue`
18
38
  Exports
19
39
  - None
@@ -130,6 +150,9 @@ Exports
130
150
  - `useShellLayoutState`
131
151
  - `useShellLayoutStore`
132
152
  - `useShellErrorPresentationStore`
153
+ - `BOOTSTRAP_PAYLOAD_HANDLER_TAG`
154
+ - `registerBootstrapPayloadHandler`
155
+ - `resolveBootstrapPayloadHandlers`
133
156
  - `clientProviders`
134
157
 
135
158
  ### `src/client/lib/menuIcons.js`
@@ -247,6 +270,14 @@ Local functions
247
270
  - `installVueErrorBridge(vueApp, errorRuntime, logger)`
248
271
  - `installRouterErrorBridge(app, errorRuntime, logger)`
249
272
 
273
+ ### `src/client/runtime/bootstrapRuntime.js`
274
+ Exports
275
+ - `createShellBootstrapRuntime({ app, logger = null, fetchImplementation = globalThis.fetch, bootstrapPath = DEFAULT_BOOTSTRAP_PATH } = {})`
276
+ Local functions
277
+ - `normalizeObject(value)`
278
+ - `buildBootstrapUrl({ path = DEFAULT_BOOTSTRAP_PATH, query = {} } = {})`
279
+ - `normalizeBootstrapResponseError(response, url)`
280
+
250
281
  ### `src/client/stores/useShellErrorPresentationStore.js`
251
282
  Exports
252
283
  - `useShellErrorPresentationStore`