@jskit-ai/agent-docs 0.1.140 → 0.1.141

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.
@@ -89,7 +89,12 @@ is a comma-separated string, and `fields` is keyed by resource type:
89
89
  Sparse primary fields remain sparse in the result. Requested included records
90
90
  use the resource's lookup container and relationship name, for example
91
91
  `items[0].lookups.pet.name`. Invalid array forms such as `include: ["pet"]` or
92
- `fields: ["pet.name"]` are rejected with field-specific shape guidance.
92
+ `fields: ["pet.name"]` are rejected with field-specific shape guidance. A
93
+ relationship name is not a fieldset key: for a `pet` relationship whose
94
+ JSON:API resource type is `pets`, use `fields: { "pets": ["name"] }`, not
95
+ `fields: { "pet": ["name"] }`. Generated contracts enumerate the allowed
96
+ resource-type keys and reject relationship aliases with the corresponding
97
+ resource type in the validation error.
93
98
  Applications do not need an assistant discovery or CRUD transformation bridge.
94
99
 
95
100
  Up to 32 authorized actions remain direct tools. For a larger authorized
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jskit-ai/agent-docs",
3
- "version": "0.1.140",
3
+ "version": "0.1.141",
4
4
  "description": "Distributed JSKIT agent references, prompts, guides, and generated reference maps.",
5
5
  "type": "module",
6
6
  "files": [
@@ -5,7 +5,7 @@
5
5
  "private": true,
6
6
  "type": "module",
7
7
  "dependencies": {
8
- "@jskit-ai/kernel": "0.1.168",
8
+ "@jskit-ai/kernel": "0.1.169",
9
9
  "json-rest-schema": "^1.0.17"
10
10
  },
11
11
  "exports": {
@@ -31,7 +31,7 @@
31
31
  "dependencies": {
32
32
  "@local/main": "file:packages/main",
33
33
  "@fastify/static": "^10.1.3",
34
- "@jskit-ai/kernel": "0.1.168",
34
+ "@jskit-ai/kernel": "0.1.169",
35
35
  "@tanstack/vue-query": "^5.101.0",
36
36
  "fastify": "^5.8.5",
37
37
  "json-rest-schema": "^1.0.17",
@@ -39,12 +39,12 @@
39
39
  "vue": "^3.5.38",
40
40
  "vue-router": "^5.1.0",
41
41
  "vuetify": "^4.1.2",
42
- "@jskit-ai/http-runtime": "0.1.166"
42
+ "@jskit-ai/http-runtime": "0.1.167"
43
43
  },
44
44
  "devDependencies": {
45
- "@jskit-ai/agent-docs": "0.1.140",
46
- "@jskit-ai/config-eslint": "0.1.165",
47
- "@jskit-ai/jskit-catalog": "0.1.193",
45
+ "@jskit-ai/agent-docs": "0.1.141",
46
+ "@jskit-ai/config-eslint": "0.1.166",
47
+ "@jskit-ai/jskit-catalog": "0.1.194",
48
48
  "@playwright/test": "1.61.1",
49
49
  "@vitejs/plugin-vue": "^6.0.7",
50
50
  "eslint": "^10.8.0",
@@ -31,7 +31,7 @@
31
31
  "dependencies": {
32
32
  "@local/main": "file:packages/main",
33
33
  "@fastify/static": "^10.1.3",
34
- "@jskit-ai/kernel": "0.1.168",
34
+ "@jskit-ai/kernel": "0.1.169",
35
35
  "@tanstack/vue-query": "^5.101.0",
36
36
  "fastify": "^5.8.5",
37
37
  "json-rest-schema": "^1.0.17",
@@ -39,14 +39,14 @@
39
39
  "vue": "^3.5.38",
40
40
  "vue-router": "^5.1.0",
41
41
  "vuetify": "^4.1.2",
42
- "@jskit-ai/http-runtime": "0.1.166",
42
+ "@jskit-ai/http-runtime": "0.1.167",
43
43
  "@mdi/js": "^7.4.47",
44
- "@jskit-ai/shell-web": "0.1.172"
44
+ "@jskit-ai/shell-web": "0.1.173"
45
45
  },
46
46
  "devDependencies": {
47
- "@jskit-ai/agent-docs": "0.1.140",
48
- "@jskit-ai/config-eslint": "0.1.165",
49
- "@jskit-ai/jskit-catalog": "0.1.193",
47
+ "@jskit-ai/agent-docs": "0.1.141",
48
+ "@jskit-ai/config-eslint": "0.1.166",
49
+ "@jskit-ai/jskit-catalog": "0.1.194",
50
50
  "@playwright/test": "1.61.1",
51
51
  "@vitejs/plugin-vue": "^6.0.7",
52
52
  "eslint": "^10.8.0",
@@ -9,7 +9,7 @@
9
9
  },
10
10
  "description": "App-local runtime composition and lightweight glue.",
11
11
  "dependencies": {
12
- "@jskit-ai/kernel": "0.1.168"
12
+ "@jskit-ai/kernel": "0.1.169"
13
13
  },
14
14
  "jskit": {
15
15
  "kind": "runtime",
@@ -321,6 +321,7 @@ Exports
321
321
  Local functions
322
322
  - `requireJsonRestSchemaInstance(schemaDefinition = null, { context = "schema definition.schema" } = {})`
323
323
  - `resolveJsonRestSchemaFieldMessages(schemaDefinition = null, fieldName = "")`
324
+ - `resolveJsonRestSchemaParentFieldMessages(schemaDefinition = null, fieldName = "")`
324
325
  - `resolveJsonRestSchemaFieldErrorMessage(fieldName, entry, schemaDefinition = null)`
325
326
 
326
327
  ### `validators/mergeObjectSchemas.js`
@@ -15,7 +15,7 @@ A concrete Fastify, Vue, and JSKIT application foundation for products that do n
15
15
 
16
16
  - Id: `app/minimal-foundation`
17
17
  - Keywords: `app`, `fastify`, `foundation`, `minimal`, `server`, `vite`, `vue`
18
- - Owner: `@jskit-ai/agent-docs@0.1.140`
18
+ - Owner: `@jskit-ai/agent-docs@0.1.141`
19
19
  - Read: `node_modules/@jskit-ai/agent-docs/patterns/minimal-foundation/PATTERN.md`
20
20
  - Examples: `node_modules/@jskit-ai/agent-docs/patterns/minimal-foundation/example/`
21
21
  - Requires: `@jskit-ai/http-runtime`, `@jskit-ai/kernel`
@@ -26,7 +26,7 @@ A concrete JSKIT web application foundation with responsive shell navigation, se
26
26
 
27
27
  - Id: `app/shell-foundation`
28
28
  - Keywords: `app`, `foundation`, `material`, `navigation`, `placements`, `shell`, `vite`, `vue`
29
- - Owner: `@jskit-ai/agent-docs@0.1.140`
29
+ - Owner: `@jskit-ai/agent-docs@0.1.141`
30
30
  - Read: `node_modules/@jskit-ai/agent-docs/patterns/shell-foundation/PATTERN.md`
31
31
  - Examples: `node_modules/@jskit-ai/agent-docs/patterns/shell-foundation/example/`
32
32
  - Requires: `@jskit-ai/http-runtime`, `@jskit-ai/kernel`, `@jskit-ai/shell-web`
@@ -37,7 +37,7 @@ Configure an assistant runtime for one application surface and expose its chat a
37
37
 
38
38
  - Id: `assistant/assistant-surface`
39
39
  - Keywords: `ai`, `assistant`, `chat`, `config`, `environment`, `page`, `placement`, `settings`, `surface`
40
- - Owner: `@jskit-ai/assistant-runtime@0.1.139`
40
+ - Owner: `@jskit-ai/assistant-runtime@0.1.140`
41
41
  - Read: `node_modules/@jskit-ai/assistant-runtime/patterns/assistant-surface/PATTERN.md`
42
42
  - Examples: `node_modules/@jskit-ai/assistant-runtime/patterns/assistant-surface/example/`
43
43
  - Requires: `@jskit-ai/assistant-runtime`, `@jskit-ai/shell-web`
@@ -48,7 +48,7 @@ Compose JSKIT authentication routes, views, profile controls, and public surface
48
48
 
49
49
  - Id: `auth/auth-surface`
50
50
  - Keywords: `account`, `auth`, `login`, `logout`, `password`, `placement`, `profile`, `reset`, `surface`
51
- - Owner: `@jskit-ai/auth-web@0.1.168`
51
+ - Owner: `@jskit-ai/auth-web@0.1.169`
52
52
  - Read: `node_modules/@jskit-ai/auth-web/patterns/auth-surface/PATTERN.md`
53
53
  - Examples: `node_modules/@jskit-ai/auth-web/patterns/auth-surface/example/`
54
54
  - Requires: `@jskit-ai/auth-core`, `@jskit-ai/auth-web`, `@jskit-ai/shell-web`
@@ -59,7 +59,7 @@ Add Supabase authentication through normal npm composition, explicit environment
59
59
 
60
60
  - Id: `auth/supabase-auth`
61
61
  - Keywords: `auth`, `authentication`, `oauth`, `sessions`, `supabase`
62
- - Owner: `@jskit-ai/auth-provider-supabase-core@0.1.165`
62
+ - Owner: `@jskit-ai/auth-provider-supabase-core@0.1.166`
63
63
  - Read: `node_modules/@jskit-ai/auth-provider-supabase-core/patterns/supabase-auth/PATTERN.md`
64
64
  - Examples: `node_modules/@jskit-ai/auth-provider-supabase-core/patterns/supabase-auth/example/`
65
65
  - Requires: `@jskit-ai/auth-provider-supabase-core`
@@ -70,7 +70,7 @@ Add a protected administration surface, settings shell, and semantic navigation
70
70
 
71
71
  - Id: `console/console-surface`
72
72
  - Keywords: `admin`, `console`, `navigation`, `owner`, `placement`, `settings`, `surface`
73
- - Owner: `@jskit-ai/console-web@0.1.136`
73
+ - Owner: `@jskit-ai/console-web@0.1.137`
74
74
  - Read: `node_modules/@jskit-ai/console-web/patterns/console-surface/PATTERN.md`
75
75
  - Examples: `node_modules/@jskit-ai/console-web/patterns/console-surface/example/`
76
76
  - Requires: `@jskit-ai/console-core`, `@jskit-ai/console-web`, `@jskit-ai/shell-web`
@@ -81,7 +81,7 @@ Build a routed CRUD user interface as thin application pages over JSKIT's shared
81
81
 
82
82
  - Id: `crud/crud-screen-set`
83
83
  - Keywords: `actions`, `add`, `crud`, `delete`, `edit`, `filters`, `list`, `material`, `routes`, `view`, `vue`
84
- - Owner: `@jskit-ai/http-web@0.1.13`
84
+ - Owner: `@jskit-ai/http-web@0.1.14`
85
85
  - Read: `node_modules/@jskit-ai/http-web/patterns/crud-screen-set/PATTERN.md`
86
86
  - Examples: `node_modules/@jskit-ai/http-web/patterns/crud-screen-set/example/`
87
87
  - Requires: `@jskit-ai/http-web`, `@jskit-ai/resource-crud-core`
@@ -92,7 +92,7 @@ Build a complete application-owned CRUD server package from a migration, resourc
92
92
 
93
93
  - Id: `crud/json-api-resource-package`
94
94
  - Keywords: `actions`, `crud`, `database`, `json-api`, `migration`, `permissions`, `provider`, `repository`, `routes`, `service`
95
- - Owner: `@jskit-ai/crud-core@0.1.179`
95
+ - Owner: `@jskit-ai/crud-core@0.1.180`
96
96
  - Read: `node_modules/@jskit-ai/crud-core/patterns/json-api-resource-package/PATTERN.md`
97
97
  - Examples: `node_modules/@jskit-ai/crud-core/patterns/json-api-resource-package/example/`
98
98
  - Requires: `@jskit-ai/crud-core`, `@jskit-ai/resource-crud-core`
@@ -103,7 +103,7 @@ Define an authenticated application resource whose records belong to the current
103
103
 
104
104
  - Id: `crud/resource-contract`
105
105
  - Keywords: `authenticated`, `crud`, `database`, `owner-scoped`, `resource`, `user`
106
- - Owner: `@jskit-ai/resource-crud-core@0.1.110`
106
+ - Owner: `@jskit-ai/resource-crud-core@0.1.111`
107
107
  - Read: `node_modules/@jskit-ai/resource-crud-core/patterns/resource-contract/PATTERN.md`
108
108
  - Examples: `node_modules/@jskit-ai/resource-crud-core/patterns/resource-contract/example/`
109
109
  - Requires: `@jskit-ai/resource-crud-core`
@@ -114,7 +114,7 @@ Configure a JSKIT application for MySQL with a fixed driver, ordinary environmen
114
114
 
115
115
  - Id: `database/mysql-application`
116
116
  - Keywords: `database`, `knex`, `mariadb`, `migrations`, `mysql`, `mysql2`
117
- - Owner: `@jskit-ai/database-runtime-mysql@0.1.166`
117
+ - Owner: `@jskit-ai/database-runtime-mysql@0.1.167`
118
118
  - Read: `node_modules/@jskit-ai/database-runtime-mysql/patterns/mysql-application/PATTERN.md`
119
119
  - Examples: `node_modules/@jskit-ai/database-runtime-mysql/patterns/mysql-application/example/`
120
120
  - Requires: `@jskit-ai/database-runtime-mysql`
@@ -125,7 +125,7 @@ Configure a JSKIT application for PostgreSQL with a fixed driver, ordinary envir
125
125
 
126
126
  - Id: `database/postgres-application`
127
127
  - Keywords: `database`, `knex`, `migrations`, `pg`, `postgres`, `postgresql`
128
- - Owner: `@jskit-ai/database-runtime-postgres@0.1.165`
128
+ - Owner: `@jskit-ai/database-runtime-postgres@0.1.166`
129
129
  - Read: `node_modules/@jskit-ai/database-runtime-postgres/patterns/postgres-application/PATTERN.md`
130
130
  - Examples: `node_modules/@jskit-ai/database-runtime-postgres/patterns/postgres-application/example/`
131
131
  - Requires: `@jskit-ai/database-runtime-postgres`
@@ -136,7 +136,7 @@ Wrap a JSKIT web application in a Capacitor Android shell using native Capacitor
136
136
 
137
137
  - Id: `mobile/android-application`
138
138
  - Keywords: `android`, `capacitor`, `device`, `mobile`, `native`, `shell`, `webview`
139
- - Owner: `@jskit-ai/mobile-capacitor@0.1.103`
139
+ - Owner: `@jskit-ai/mobile-capacitor@0.1.104`
140
140
  - Read: `node_modules/@jskit-ai/mobile-capacitor/patterns/android-application/PATTERN.md`
141
141
  - Examples: `node_modules/@jskit-ai/mobile-capacitor/patterns/android-application/example/`
142
142
  - Requires: `@capacitor/android`, `@capacitor/app`, `@capacitor/cli`, `@jskit-ai/mobile-capacitor`
@@ -147,7 +147,7 @@ Add JSKIT realtime events with an optional Redis backplane and an explicit shell
147
147
 
148
148
  - Id: `realtime/realtime-application`
149
149
  - Keywords: `realtime`, `redis`, `socket.io`, `sockets`, `status`, `websocket`
150
- - Owner: `@jskit-ai/realtime@0.1.165`
150
+ - Owner: `@jskit-ai/realtime@0.1.166`
151
151
  - Read: `node_modules/@jskit-ai/realtime/patterns/realtime-application/PATTERN.md`
152
152
  - Examples: `node_modules/@jskit-ai/realtime/patterns/realtime-application/example/`
153
153
  - Requires: `@jskit-ai/realtime`, `@jskit-ai/shell-web`
@@ -158,7 +158,7 @@ Define a server feature through explicit capabilities and first-class actions, a
158
158
 
159
159
  - Id: `server/feature-package`
160
160
  - Keywords: `actions`, `feature`, `json-rest`, `knex`, `orchestration`, `package`, `provider`, `repository`, `routes`, `server`
161
- - Owner: `@jskit-ai/agent-docs@0.1.140`
161
+ - Owner: `@jskit-ai/agent-docs@0.1.141`
162
162
  - Read: `node_modules/@jskit-ai/agent-docs/patterns/feature-package/PATTERN.md`
163
163
  - Examples: `node_modules/@jskit-ai/agent-docs/patterns/feature-package/example/`
164
164
  - Requires: `@jskit-ai/kernel`
@@ -169,7 +169,7 @@ Compose the JSKIT responsive shell, semantic placements, settings navigation, an
169
169
 
170
170
  - Id: `shell/application-shell`
171
171
  - Keywords: `adaptive`, `app`, `layout`, `navigation`, `placement`, `responsive`, `settings`, `shell`
172
- - Owner: `@jskit-ai/shell-web@0.1.172`
172
+ - Owner: `@jskit-ai/shell-web@0.1.173`
173
173
  - Read: `node_modules/@jskit-ai/shell-web/patterns/application-shell/PATTERN.md`
174
174
  - Examples: `node_modules/@jskit-ai/shell-web/patterns/application-shell/example/`
175
175
  - Requires: `@jskit-ai/kernel`, `@jskit-ai/shell-web`
@@ -180,7 +180,7 @@ Add product routes and shell extensions through file routing, semantic placement
180
180
 
181
181
  - Id: `ui/page-and-placement`
182
182
  - Keywords: `component`, `navigation`, `outlet`, `page`, `placement`, `routes`, `section`, `shell`, `subpages`, `vue`
183
- - Owner: `@jskit-ai/shell-web@0.1.172`
183
+ - Owner: `@jskit-ai/shell-web@0.1.173`
184
184
  - Read: `node_modules/@jskit-ai/shell-web/patterns/page-and-placement/PATTERN.md`
185
185
  - Examples: `node_modules/@jskit-ai/shell-web/patterns/page-and-placement/example/`
186
186
  - Requires: `@jskit-ai/kernel`, `@jskit-ai/shell-web`
@@ -191,7 +191,7 @@ Compose an account settings route and profile, preference, and notification sect
191
191
 
192
192
  - Id: `users/account-settings`
193
193
  - Keywords: `account`, `notifications`, `preferences`, `profile`, `settings`, `user`, `vue`
194
- - Owner: `@jskit-ai/users-web@0.1.186`
194
+ - Owner: `@jskit-ai/users-web@0.1.187`
195
195
  - Read: `node_modules/@jskit-ai/users-web/patterns/account-settings/PATTERN.md`
196
196
  - Examples: `node_modules/@jskit-ai/users-web/patterns/account-settings/example/`
197
197
  - Requires: `@jskit-ai/shell-web`, `@jskit-ai/users-core`, `@jskit-ai/users-web`
@@ -202,7 +202,7 @@ Expose user administration and workspace-scoped member operations through app-ow
202
202
 
203
203
  - Id: `users/user-administration-server`
204
204
  - Keywords: `account`, `admin`, `member`, `repository`, `resource`, `routes`, `service`, `user`, `workspace`
205
- - Owner: `@jskit-ai/users-core@0.1.181`
205
+ - Owner: `@jskit-ai/users-core@0.1.182`
206
206
  - Read: `node_modules/@jskit-ai/users-core/patterns/user-administration-server/PATTERN.md`
207
207
  - Examples: `node_modules/@jskit-ai/users-core/patterns/user-administration-server/example/`
208
208
  - Requires: `@jskit-ai/crud-core`, `@jskit-ai/users-core`
@@ -213,7 +213,7 @@ Configure roles, workspace access policy, invitations, and app-owned invitation
213
213
 
214
214
  - Id: `workspaces/workspace-server`
215
215
  - Keywords: `access`, `invite`, `membership`, `multitenancy`, `policy`, `role`, `tenancy`, `workspace`
216
- - Owner: `@jskit-ai/workspaces-core@0.1.146`
216
+ - Owner: `@jskit-ai/workspaces-core@0.1.147`
217
217
  - Read: `node_modules/@jskit-ai/workspaces-core/patterns/workspace-server/PATTERN.md`
218
218
  - Examples: `node_modules/@jskit-ai/workspaces-core/patterns/workspace-server/example/`
219
219
  - Requires: `@jskit-ai/users-core`, `@jskit-ai/workspaces-core`
@@ -224,7 +224,7 @@ Compose workspace selection, invitation, member administration, settings, and re
224
224
 
225
225
  - Id: `workspaces/workspace-surfaces`
226
226
  - Keywords: `admin`, `invite`, `member`, `navigation`, `settings`, `surface`, `switcher`, `workspace`
227
- - Owner: `@jskit-ai/workspaces-web@0.1.147`
227
+ - Owner: `@jskit-ai/workspaces-web@0.1.148`
228
228
  - Read: `node_modules/@jskit-ai/workspaces-web/patterns/workspace-surfaces/PATTERN.md`
229
229
  - Examples: `node_modules/@jskit-ai/workspaces-web/patterns/workspace-surfaces/example/`
230
230
  - Requires: `@jskit-ai/shell-web`, `@jskit-ai/workspaces-core`, `@jskit-ai/workspaces-web`
@@ -80,11 +80,11 @@ Local functions
80
80
  - `isRecord(value)`
81
81
  - `normalizeOptionalCursor(value)`
82
82
  - `resolveAssistantResultValue(result)`
83
- - `resolveSchemaFieldDefinitions(definition = null)`
84
83
  - `createProjectionRecordSchema(recordSchema, { lookupContainerKey = "", relationshipEntries = [] } = {})`
85
84
  - `createProjectionOutputDefinition(output, operation, relationshipEntries, lookupContainerKey)`
86
85
  - `createCrudAssistantTransport(resource, operation, relationshipEntries, lookupContainerKey)`
87
86
  - `transformCrudAssistantResult(operation, result, { input = {}, resource, relationshipEntries = [], lookupContainerKey = "" } = {})`
87
+ - `createCrudAssistantReadDescription({ fieldsetContract, lookupContainerKey = "", namespace = "", operation = "list" } = {})`
88
88
  - `createCrudAssistantExtension(resource, namespace, operation)`
89
89
  - `createActionInput(resource, operation, scopeInputValidator = null, listFilterQueryValidator = null, operationInputs = {})`
90
90
  - `omitInputKeys(input = {}, keys = [])`
@@ -109,6 +109,14 @@ Exports
109
109
  Local functions
110
110
  - `requireDocument(document = null)`
111
111
 
112
+ ### `src/server/jsonApiResourceContract.js`
113
+ Exports
114
+ - `resolveJsonApiFieldsetContract(resource = {})`
115
+ - `resolveJsonApiRelationshipEntries(definition = null)`
116
+ - `resolveSchemaFieldDefinitions(definition = null)`
117
+ Local functions
118
+ - `isRecord(value)`
119
+
112
120
  ### `src/server/listFilters.js`
113
121
  Exports
114
122
  - `CRUD_LIST_FILTER_INVALID_VALUES_REJECT`
@@ -145,14 +153,16 @@ Local functions
145
153
  ### `src/server/listQueryValidators.js`
146
154
  Exports
147
155
  - `createCrudCursorPaginationQueryValidator(list = {})`
156
+ - `createJsonApiFieldsetsQueryValidator({ resource = {} } = {})`
148
157
  - `listSearchQueryValidator`
149
158
  - `lookupIncludeQueryValidator`
150
159
  - `jsonApiFieldsetsQueryValidator`
151
160
  - `resolveCrudParentFilterKeys(resource = {})`
152
161
  - `createCrudParentFilterQueryValidator(resource = {})`
153
- - `createStandardCrudListQueryValidators({ resource = {}, listFilterQueryValidator = null, searchQueryValidator = listSearchQueryValidator, includeQueryValidator = lookupIncludeQueryValidator } = {})`
154
- - `createStandardCrudViewQueryValidators({ includeQueryValidator = lookupIncludeQueryValidator } = {})`
162
+ - `createStandardCrudListQueryValidators({ resource = {}, listFilterQueryValidator = null, searchQueryValidator = listSearchQueryValidator, includeQueryValidator = lookupIncludeQueryValidator, fieldsetsQueryValidator = jsonApiFieldsetsQueryValidator } = {})`
163
+ - `createStandardCrudViewQueryValidators({ includeQueryValidator = lookupIncludeQueryValidator, fieldsetsQueryValidator = jsonApiFieldsetsQueryValidator } = {})`
155
164
  Local functions
165
+ - `createJsonApiFieldsetValueDefinition({ allowedFields = [] } = {})`
156
166
  - `resolveCrudListUsesOrderedCursor(list = {})`
157
167
 
158
168
  ### `src/server/lookupHydration.js`
@@ -294,10 +304,9 @@ Local functions
294
304
  ### `src/server/routeContracts.js`
295
305
  Exports
296
306
  - `createCrudJsonApiRouteContracts({ resource = {}, routeParamsValidator = null, operations = ["list", "view", "create", "update", "delete"], operationInputs = {}, listSearchQueryValidator = defaultListSearchQueryValidator, lookupIncludeQueryValidator = defaultLookupIncludeQueryValidator, listFilterQueryValidator = null } = {})`
297
- - `resolveJsonApiRelationshipEntries(definition = null)`
307
+ - `resolveJsonApiRelationshipEntries`
298
308
  Local functions
299
309
  - `isRecord(value)`
300
- - `resolveSchemaFieldDefinitions(definition = null)`
301
310
  - `readOwnValue(source = {}, key = "")`
302
311
  - `resolveLookupContainer(record = {}, lookupContainerKey = "")`
303
312
  - `resolveRelationshipValueSource(record = {}, entry = {}, { lookupContainerKey = "", preferLookup = false } = {})`
@@ -441,6 +441,7 @@ Exports
441
441
  Local functions
442
442
  - `requireJsonRestSchemaInstance(schemaDefinition = null, { context = "schema definition.schema" } = {})`
443
443
  - `resolveJsonRestSchemaFieldMessages(schemaDefinition = null, fieldName = "")`
444
+ - `resolveJsonRestSchemaParentFieldMessages(schemaDefinition = null, fieldName = "")`
444
445
  - `resolveJsonRestSchemaFieldErrorMessage(fieldName, entry, schemaDefinition = null)`
445
446
 
446
447
  ### `shared/validators/mergeObjectSchemas.js`
@@ -15,7 +15,7 @@ A concrete Fastify, Vue, and JSKIT application foundation for products that do n
15
15
 
16
16
  - Id: `app/minimal-foundation`
17
17
  - Keywords: `app`, `fastify`, `foundation`, `minimal`, `server`, `vite`, `vue`
18
- - Owner: `@jskit-ai/agent-docs@0.1.140`
18
+ - Owner: `@jskit-ai/agent-docs@0.1.141`
19
19
  - Read: `node_modules/@jskit-ai/agent-docs/patterns/minimal-foundation/PATTERN.md`
20
20
  - Examples: `node_modules/@jskit-ai/agent-docs/patterns/minimal-foundation/example/`
21
21
  - Requires: `@jskit-ai/http-runtime`, `@jskit-ai/kernel`
@@ -26,7 +26,7 @@ A concrete JSKIT web application foundation with responsive shell navigation, se
26
26
 
27
27
  - Id: `app/shell-foundation`
28
28
  - Keywords: `app`, `foundation`, `material`, `navigation`, `placements`, `shell`, `vite`, `vue`
29
- - Owner: `@jskit-ai/agent-docs@0.1.140`
29
+ - Owner: `@jskit-ai/agent-docs@0.1.141`
30
30
  - Read: `node_modules/@jskit-ai/agent-docs/patterns/shell-foundation/PATTERN.md`
31
31
  - Examples: `node_modules/@jskit-ai/agent-docs/patterns/shell-foundation/example/`
32
32
  - Requires: `@jskit-ai/http-runtime`, `@jskit-ai/kernel`, `@jskit-ai/shell-web`
@@ -37,7 +37,7 @@ Configure an assistant runtime for one application surface and expose its chat a
37
37
 
38
38
  - Id: `assistant/assistant-surface`
39
39
  - Keywords: `ai`, `assistant`, `chat`, `config`, `environment`, `page`, `placement`, `settings`, `surface`
40
- - Owner: `@jskit-ai/assistant-runtime@0.1.139`
40
+ - Owner: `@jskit-ai/assistant-runtime@0.1.140`
41
41
  - Read: `node_modules/@jskit-ai/assistant-runtime/patterns/assistant-surface/PATTERN.md`
42
42
  - Examples: `node_modules/@jskit-ai/assistant-runtime/patterns/assistant-surface/example/`
43
43
  - Requires: `@jskit-ai/assistant-runtime`, `@jskit-ai/shell-web`
@@ -48,7 +48,7 @@ Compose JSKIT authentication routes, views, profile controls, and public surface
48
48
 
49
49
  - Id: `auth/auth-surface`
50
50
  - Keywords: `account`, `auth`, `login`, `logout`, `password`, `placement`, `profile`, `reset`, `surface`
51
- - Owner: `@jskit-ai/auth-web@0.1.168`
51
+ - Owner: `@jskit-ai/auth-web@0.1.169`
52
52
  - Read: `node_modules/@jskit-ai/auth-web/patterns/auth-surface/PATTERN.md`
53
53
  - Examples: `node_modules/@jskit-ai/auth-web/patterns/auth-surface/example/`
54
54
  - Requires: `@jskit-ai/auth-core`, `@jskit-ai/auth-web`, `@jskit-ai/shell-web`
@@ -59,7 +59,7 @@ Add Supabase authentication through normal npm composition, explicit environment
59
59
 
60
60
  - Id: `auth/supabase-auth`
61
61
  - Keywords: `auth`, `authentication`, `oauth`, `sessions`, `supabase`
62
- - Owner: `@jskit-ai/auth-provider-supabase-core@0.1.165`
62
+ - Owner: `@jskit-ai/auth-provider-supabase-core@0.1.166`
63
63
  - Read: `node_modules/@jskit-ai/auth-provider-supabase-core/patterns/supabase-auth/PATTERN.md`
64
64
  - Examples: `node_modules/@jskit-ai/auth-provider-supabase-core/patterns/supabase-auth/example/`
65
65
  - Requires: `@jskit-ai/auth-provider-supabase-core`
@@ -70,7 +70,7 @@ Add a protected administration surface, settings shell, and semantic navigation
70
70
 
71
71
  - Id: `console/console-surface`
72
72
  - Keywords: `admin`, `console`, `navigation`, `owner`, `placement`, `settings`, `surface`
73
- - Owner: `@jskit-ai/console-web@0.1.136`
73
+ - Owner: `@jskit-ai/console-web@0.1.137`
74
74
  - Read: `node_modules/@jskit-ai/console-web/patterns/console-surface/PATTERN.md`
75
75
  - Examples: `node_modules/@jskit-ai/console-web/patterns/console-surface/example/`
76
76
  - Requires: `@jskit-ai/console-core`, `@jskit-ai/console-web`, `@jskit-ai/shell-web`
@@ -81,7 +81,7 @@ Build a routed CRUD user interface as thin application pages over JSKIT's shared
81
81
 
82
82
  - Id: `crud/crud-screen-set`
83
83
  - Keywords: `actions`, `add`, `crud`, `delete`, `edit`, `filters`, `list`, `material`, `routes`, `view`, `vue`
84
- - Owner: `@jskit-ai/http-web@0.1.13`
84
+ - Owner: `@jskit-ai/http-web@0.1.14`
85
85
  - Read: `node_modules/@jskit-ai/http-web/patterns/crud-screen-set/PATTERN.md`
86
86
  - Examples: `node_modules/@jskit-ai/http-web/patterns/crud-screen-set/example/`
87
87
  - Requires: `@jskit-ai/http-web`, `@jskit-ai/resource-crud-core`
@@ -92,7 +92,7 @@ Build a complete application-owned CRUD server package from a migration, resourc
92
92
 
93
93
  - Id: `crud/json-api-resource-package`
94
94
  - Keywords: `actions`, `crud`, `database`, `json-api`, `migration`, `permissions`, `provider`, `repository`, `routes`, `service`
95
- - Owner: `@jskit-ai/crud-core@0.1.179`
95
+ - Owner: `@jskit-ai/crud-core@0.1.180`
96
96
  - Read: `node_modules/@jskit-ai/crud-core/patterns/json-api-resource-package/PATTERN.md`
97
97
  - Examples: `node_modules/@jskit-ai/crud-core/patterns/json-api-resource-package/example/`
98
98
  - Requires: `@jskit-ai/crud-core`, `@jskit-ai/resource-crud-core`
@@ -103,7 +103,7 @@ Define an authenticated application resource whose records belong to the current
103
103
 
104
104
  - Id: `crud/resource-contract`
105
105
  - Keywords: `authenticated`, `crud`, `database`, `owner-scoped`, `resource`, `user`
106
- - Owner: `@jskit-ai/resource-crud-core@0.1.110`
106
+ - Owner: `@jskit-ai/resource-crud-core@0.1.111`
107
107
  - Read: `node_modules/@jskit-ai/resource-crud-core/patterns/resource-contract/PATTERN.md`
108
108
  - Examples: `node_modules/@jskit-ai/resource-crud-core/patterns/resource-contract/example/`
109
109
  - Requires: `@jskit-ai/resource-crud-core`
@@ -114,7 +114,7 @@ Configure a JSKIT application for MySQL with a fixed driver, ordinary environmen
114
114
 
115
115
  - Id: `database/mysql-application`
116
116
  - Keywords: `database`, `knex`, `mariadb`, `migrations`, `mysql`, `mysql2`
117
- - Owner: `@jskit-ai/database-runtime-mysql@0.1.166`
117
+ - Owner: `@jskit-ai/database-runtime-mysql@0.1.167`
118
118
  - Read: `node_modules/@jskit-ai/database-runtime-mysql/patterns/mysql-application/PATTERN.md`
119
119
  - Examples: `node_modules/@jskit-ai/database-runtime-mysql/patterns/mysql-application/example/`
120
120
  - Requires: `@jskit-ai/database-runtime-mysql`
@@ -125,7 +125,7 @@ Configure a JSKIT application for PostgreSQL with a fixed driver, ordinary envir
125
125
 
126
126
  - Id: `database/postgres-application`
127
127
  - Keywords: `database`, `knex`, `migrations`, `pg`, `postgres`, `postgresql`
128
- - Owner: `@jskit-ai/database-runtime-postgres@0.1.165`
128
+ - Owner: `@jskit-ai/database-runtime-postgres@0.1.166`
129
129
  - Read: `node_modules/@jskit-ai/database-runtime-postgres/patterns/postgres-application/PATTERN.md`
130
130
  - Examples: `node_modules/@jskit-ai/database-runtime-postgres/patterns/postgres-application/example/`
131
131
  - Requires: `@jskit-ai/database-runtime-postgres`
@@ -136,7 +136,7 @@ Wrap a JSKIT web application in a Capacitor Android shell using native Capacitor
136
136
 
137
137
  - Id: `mobile/android-application`
138
138
  - Keywords: `android`, `capacitor`, `device`, `mobile`, `native`, `shell`, `webview`
139
- - Owner: `@jskit-ai/mobile-capacitor@0.1.103`
139
+ - Owner: `@jskit-ai/mobile-capacitor@0.1.104`
140
140
  - Read: `node_modules/@jskit-ai/mobile-capacitor/patterns/android-application/PATTERN.md`
141
141
  - Examples: `node_modules/@jskit-ai/mobile-capacitor/patterns/android-application/example/`
142
142
  - Requires: `@capacitor/android`, `@capacitor/app`, `@capacitor/cli`, `@jskit-ai/mobile-capacitor`
@@ -147,7 +147,7 @@ Add JSKIT realtime events with an optional Redis backplane and an explicit shell
147
147
 
148
148
  - Id: `realtime/realtime-application`
149
149
  - Keywords: `realtime`, `redis`, `socket.io`, `sockets`, `status`, `websocket`
150
- - Owner: `@jskit-ai/realtime@0.1.165`
150
+ - Owner: `@jskit-ai/realtime@0.1.166`
151
151
  - Read: `node_modules/@jskit-ai/realtime/patterns/realtime-application/PATTERN.md`
152
152
  - Examples: `node_modules/@jskit-ai/realtime/patterns/realtime-application/example/`
153
153
  - Requires: `@jskit-ai/realtime`, `@jskit-ai/shell-web`
@@ -158,7 +158,7 @@ Define a server feature through explicit capabilities and first-class actions, a
158
158
 
159
159
  - Id: `server/feature-package`
160
160
  - Keywords: `actions`, `feature`, `json-rest`, `knex`, `orchestration`, `package`, `provider`, `repository`, `routes`, `server`
161
- - Owner: `@jskit-ai/agent-docs@0.1.140`
161
+ - Owner: `@jskit-ai/agent-docs@0.1.141`
162
162
  - Read: `node_modules/@jskit-ai/agent-docs/patterns/feature-package/PATTERN.md`
163
163
  - Examples: `node_modules/@jskit-ai/agent-docs/patterns/feature-package/example/`
164
164
  - Requires: `@jskit-ai/kernel`
@@ -169,7 +169,7 @@ Compose the JSKIT responsive shell, semantic placements, settings navigation, an
169
169
 
170
170
  - Id: `shell/application-shell`
171
171
  - Keywords: `adaptive`, `app`, `layout`, `navigation`, `placement`, `responsive`, `settings`, `shell`
172
- - Owner: `@jskit-ai/shell-web@0.1.172`
172
+ - Owner: `@jskit-ai/shell-web@0.1.173`
173
173
  - Read: `node_modules/@jskit-ai/shell-web/patterns/application-shell/PATTERN.md`
174
174
  - Examples: `node_modules/@jskit-ai/shell-web/patterns/application-shell/example/`
175
175
  - Requires: `@jskit-ai/kernel`, `@jskit-ai/shell-web`
@@ -180,7 +180,7 @@ Add product routes and shell extensions through file routing, semantic placement
180
180
 
181
181
  - Id: `ui/page-and-placement`
182
182
  - Keywords: `component`, `navigation`, `outlet`, `page`, `placement`, `routes`, `section`, `shell`, `subpages`, `vue`
183
- - Owner: `@jskit-ai/shell-web@0.1.172`
183
+ - Owner: `@jskit-ai/shell-web@0.1.173`
184
184
  - Read: `node_modules/@jskit-ai/shell-web/patterns/page-and-placement/PATTERN.md`
185
185
  - Examples: `node_modules/@jskit-ai/shell-web/patterns/page-and-placement/example/`
186
186
  - Requires: `@jskit-ai/kernel`, `@jskit-ai/shell-web`
@@ -191,7 +191,7 @@ Compose an account settings route and profile, preference, and notification sect
191
191
 
192
192
  - Id: `users/account-settings`
193
193
  - Keywords: `account`, `notifications`, `preferences`, `profile`, `settings`, `user`, `vue`
194
- - Owner: `@jskit-ai/users-web@0.1.186`
194
+ - Owner: `@jskit-ai/users-web@0.1.187`
195
195
  - Read: `node_modules/@jskit-ai/users-web/patterns/account-settings/PATTERN.md`
196
196
  - Examples: `node_modules/@jskit-ai/users-web/patterns/account-settings/example/`
197
197
  - Requires: `@jskit-ai/shell-web`, `@jskit-ai/users-core`, `@jskit-ai/users-web`
@@ -202,7 +202,7 @@ Expose user administration and workspace-scoped member operations through app-ow
202
202
 
203
203
  - Id: `users/user-administration-server`
204
204
  - Keywords: `account`, `admin`, `member`, `repository`, `resource`, `routes`, `service`, `user`, `workspace`
205
- - Owner: `@jskit-ai/users-core@0.1.181`
205
+ - Owner: `@jskit-ai/users-core@0.1.182`
206
206
  - Read: `node_modules/@jskit-ai/users-core/patterns/user-administration-server/PATTERN.md`
207
207
  - Examples: `node_modules/@jskit-ai/users-core/patterns/user-administration-server/example/`
208
208
  - Requires: `@jskit-ai/crud-core`, `@jskit-ai/users-core`
@@ -213,7 +213,7 @@ Configure roles, workspace access policy, invitations, and app-owned invitation
213
213
 
214
214
  - Id: `workspaces/workspace-server`
215
215
  - Keywords: `access`, `invite`, `membership`, `multitenancy`, `policy`, `role`, `tenancy`, `workspace`
216
- - Owner: `@jskit-ai/workspaces-core@0.1.146`
216
+ - Owner: `@jskit-ai/workspaces-core@0.1.147`
217
217
  - Read: `node_modules/@jskit-ai/workspaces-core/patterns/workspace-server/PATTERN.md`
218
218
  - Examples: `node_modules/@jskit-ai/workspaces-core/patterns/workspace-server/example/`
219
219
  - Requires: `@jskit-ai/users-core`, `@jskit-ai/workspaces-core`
@@ -224,7 +224,7 @@ Compose workspace selection, invitation, member administration, settings, and re
224
224
 
225
225
  - Id: `workspaces/workspace-surfaces`
226
226
  - Keywords: `admin`, `invite`, `member`, `navigation`, `settings`, `surface`, `switcher`, `workspace`
227
- - Owner: `@jskit-ai/workspaces-web@0.1.147`
227
+ - Owner: `@jskit-ai/workspaces-web@0.1.148`
228
228
  - Read: `node_modules/@jskit-ai/workspaces-web/patterns/workspace-surfaces/PATTERN.md`
229
229
  - Examples: `node_modules/@jskit-ai/workspaces-web/patterns/workspace-surfaces/example/`
230
230
  - Requires: `@jskit-ai/shell-web`, `@jskit-ai/workspaces-core`, `@jskit-ai/workspaces-web`