@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
@@ -26,7 +26,6 @@ Exports
26
26
  ### `src/client/bootstrap/user-bootstrap-handler.js`
27
27
  Exports
28
28
  - `createUsersBootstrapUserHandler()`
29
- - `registerUsersBootstrapPayloadHandlers(app)`
30
29
 
31
30
  ### `src/client/components/AccountSettingsClientElement.vue`
32
31
  Exports
@@ -78,7 +77,6 @@ Exports
78
77
  Exports
79
78
  - `UsersWebClientProvider`
80
79
  - `AccountSettingsClientElement`
81
- - `clientProviders`
82
80
 
83
81
  ### `src/client/lib/bootstrap.js`
84
82
  Exports
@@ -110,20 +108,20 @@ Exports
110
108
  Exports
111
109
  - `HOME_COG_OUTLET`
112
110
 
113
- ### templates
111
+ ### patterns
114
112
 
115
- ### `templates/src/components/account/settings/AccountSettingsNotificationsSection.vue`
113
+ ### `patterns/account-settings/example/src/components/account/settings/AccountSettingsNotificationsSection.vue`
116
114
  Exports
117
115
  - None
118
116
 
119
- ### `templates/src/components/account/settings/AccountSettingsPreferencesSection.vue`
117
+ ### `patterns/account-settings/example/src/components/account/settings/AccountSettingsPreferencesSection.vue`
120
118
  Exports
121
119
  - None
122
120
 
123
- ### `templates/src/components/account/settings/AccountSettingsProfileSection.vue`
121
+ ### `patterns/account-settings/example/src/components/account/settings/AccountSettingsProfileSection.vue`
124
122
  Exports
125
123
  - None
126
124
 
127
- ### `templates/src/pages/account/index.vue`
125
+ ### `patterns/account-settings/example/src/pages/account/index.vue`
128
126
  Exports
129
127
  - None
@@ -16,17 +16,17 @@ Use this on demand; do not load the full index at startup.
16
16
 
17
17
  ### `src/server/common/contributors/workspaceActionContextContributor.js`
18
18
  Exports
19
- - `createWorkspaceActionContextContributor({ workspaceService, workspaceSurfaceIds = [] } = {})`
19
+ - `createWorkspaceActionContextContributor({ workspaceService, workspaceMembershipOptionalSurfaceIds = [], workspaceSurfaceIds = [] } = {})`
20
20
  Local functions
21
21
  - `normalizeWorkspaceSurfaceIds(surfaceIds = [])`
22
22
 
23
23
  ### `src/server/common/contributors/workspaceAuthPolicyContextResolver.js`
24
24
  Exports
25
- - `createWorkspaceAuthPolicyContextResolver({ workspaceService } = {})`
25
+ - `createWorkspaceAuthPolicyContextResolver({ workspaceService, workspaceMembershipOptionalSurfaceIds = [] } = {})`
26
26
 
27
27
  ### `src/server/common/contributors/workspaceRouteVisibilityResolver.js`
28
28
  Exports
29
- - `createWorkspaceRouteVisibilityResolver({ workspaceService } = {})`
29
+ - `createWorkspaceRouteVisibilityResolver({ workspaceService, workspaceMembershipOptionalSurfaceIds = [] } = {})`
30
30
  Local functions
31
31
  - `buildVisibilityContribution({ visibility, scopeOwnerId = null, userId = null } = {})`
32
32
 
@@ -91,11 +91,17 @@ Exports
91
91
 
92
92
  ### `src/server/common/support/realtimeServiceEvents.js`
93
93
  Exports
94
- - `ACCOUNT_SETTINGS_AND_BOOTSTRAP_EVENTS`
95
- - `createWorkspaceEntityAndBootstrapEvents({ workspaceEntity, workspaceOperation, workspaceRealtimeEvent, workspaceEntityId = ({ args }) => args?.[0]?.id, bootstrapEntityId = ({ args }) => args?.[0]?.id, bootstrapAudience = "event_scope" } = {})`
94
+ - `INVITE_RECIPIENT_BOOTSTRAP_AUDIENCE`
95
+ - `createInviteDecisionEvents()`
96
+ - `createWorkspaceEntityAndBootstrapEvents({ workspaceEntity, workspaceOperation, workspaceRealtimeEvent, bootstrapEntityId = workspaceId, bootstrapAudience = "event_scope" } = {})`
96
97
  Local functions
97
- - `resolveActorScopedEntityId({ options } = {})`
98
- - `resolveWorkspaceSlugPayload({ args } = {})`
98
+ - `resultValue({ result } = {})`
99
+ - `actorId({ context } = {})`
100
+ - `workspaceId(execution = {})`
101
+ - `workspaceSlugPayload(execution = {})`
102
+ - `createActorEvent({ source, entity, realtimeEvent })`
103
+ - `createWorkspaceAudienceEvent({ entity, realtimeEvent })`
104
+ - `onlyAccepted(builder)`
99
105
 
100
106
  ### `src/server/common/support/resolveActionUser.js`
101
107
  Exports
@@ -111,18 +117,6 @@ Exports
111
117
  - `routeParamsValidator`
112
118
  - `workspaceSlugParamsValidator`
113
119
 
114
- ### `src/server/registerWorkspaceBootstrap.js`
115
- Exports
116
- - `registerWorkspaceBootstrap(app)`
117
-
118
- ### `src/server/registerWorkspaceCore.js`
119
- Exports
120
- - `registerWorkspaceCore(app)`
121
-
122
- ### `src/server/registerWorkspaceRepositories.js`
123
- Exports
124
- - `registerWorkspaceRepositories(app)`
125
-
126
120
  ### `src/server/support/resolveWorkspace.js`
127
121
  Exports
128
122
  - `resolveWorkspace(context = {}, input = {})`
@@ -132,10 +126,10 @@ Local functions
132
126
  ### `src/server/support/workspaceActionSurfaces.js`
133
127
  Exports
134
128
  - `resolveWorkspaceSurfaceIdsFromAppConfig(appConfig = {})`
129
+ - `resolveWorkspaceMembershipOptionalSurfaceIdsFromAppConfig(appConfig = {})`
135
130
  - `resolveDefaultWorkspaceRouteSurfaceIdFromAppConfig(appConfig = {})`
136
131
  - `materializeWorkspaceActionSurfaces(actions = [], { workspaceSurfaceIds = [] } = {})`
137
132
  - `materializeWorkspaceActionSurfacesFromAppConfig(actions = [], { appConfig = {} } = {})`
138
- - `registerWorkspaceActionSurfaceSources(app)`
139
133
  Local functions
140
134
  - `normalizeSurfaceIds(surfaceIds = [])`
141
135
  - `resolveSurfaceIdsFromAppConfig(appConfig = {}, predicate)`
@@ -150,10 +144,6 @@ Exports
150
144
  - `readWorkspaceSlugFromRouteParams(params = {})`
151
145
  - `buildWorkspaceInputFromRouteParams(params = {})`
152
146
 
153
- ### `src/server/support/workspaceServerScopeSupport.js`
154
- Exports
155
- - `createWorkspaceServerScopeSupport()`
156
-
157
147
  ### `src/server/workspaceBootstrapContributor.js`
158
148
  Exports
159
149
  - `createWorkspaceBootstrapContributor({ workspaceService, workspacePendingInvitationsService, userProfilesRepository, workspaceInvitationsEnabled = false, appConfig = {}, tenancyProfile = null } = {})`
@@ -167,21 +157,18 @@ Local functions
167
157
 
168
158
  ### `src/server/workspaceDirectory/bootWorkspaceDirectoryRoutes.js`
169
159
  Exports
170
- - `bootWorkspaceDirectoryRoutes(app)`
160
+ - `registerWorkspaceDirectoryRoutes(router, { config = {}, workspaceSelfCreateEnabled = false } = {})`
171
161
  Local functions
172
162
  - `resolveWorkspaceRecordId(record = {}, context = {})`
173
163
 
174
- ### `src/server/workspaceDirectory/registerWorkspaceDirectory.js`
175
- Exports
176
- - `registerWorkspaceDirectory(app)`
177
-
178
164
  ### `src/server/workspaceDirectory/workspaceDirectoryActions.js`
179
165
  Exports
180
- - `workspaceDirectoryActions`
166
+ - `workspaceDirectoryActionSpecifications`
167
+ - `buildWorkspaceDirectoryActions({ workspaceService } = {})`
181
168
 
182
169
  ### `src/server/workspaceMembers/bootWorkspaceMembers.js`
183
170
  Exports
184
- - `bootWorkspaceMembers(app)`
171
+ - `registerWorkspaceMembersRoutes(router, { config = {}, workspaceInvitationsEnabled = false } = {})`
185
172
  Local functions
186
173
  - `resolveWorkspaceAggregateRecordId(record = {}, context = {})`
187
174
 
@@ -191,13 +178,6 @@ Exports
191
178
  Local functions
192
179
  - `escapeHtml(value = "")`
193
180
 
194
- ### `src/server/workspaceMembers/registerWorkspaceMembers.js`
195
- Exports
196
- - `registerWorkspaceMembers(app)`
197
- Local functions
198
- - `resolveWorkspaceMembersInviteExpiresInMs(appConfig = {})`
199
- - `resolveWorkspaceInviteEmailTemplate(scope, appConfig = {})`
200
-
201
181
  ### `src/server/workspaceMembers/workspaceInviteUrls.js`
202
182
  Exports
203
183
  - `buildInvitePath(token, pathTemplate = "/invite/:token")`
@@ -208,7 +188,8 @@ Local functions
208
188
 
209
189
  ### `src/server/workspaceMembers/workspaceMembersActions.js`
210
190
  Exports
211
- - `workspaceMembersActions`
191
+ - `workspaceMembersActionSpecifications`
192
+ - `buildWorkspaceMembersActions({ workspaceMembersService } = {})`
212
193
 
213
194
  ### `src/server/workspaceMembers/workspaceMembersService.js`
214
195
  Exports
@@ -216,60 +197,56 @@ Exports
216
197
 
217
198
  ### `src/server/workspacePendingInvitations/bootWorkspacePendingInvitations.js`
218
199
  Exports
219
- - `bootWorkspacePendingInvitations(app)`
200
+ - `registerWorkspacePendingInvitationsRoutes(router)`
220
201
  Local functions
221
202
  - `resolveAuthenticatedUserRecordId(_record, context = {})`
222
203
  - `resolveInviteResolutionRecordId(record = {})`
223
204
 
224
- ### `src/server/workspacePendingInvitations/registerWorkspacePendingInvitations.js`
225
- Exports
226
- - `registerWorkspacePendingInvitations(app)`
227
- Local functions
228
- - `workspaceAudienceFromEntityId({ event } = {})`
229
- - `actorUserEntityId({ options } = {})`
230
- - `createActorUserEvent({ source, entity, realtimeEvent })`
231
- - `createWorkspaceAudienceEvent({ entity, realtimeEvent })`
232
- - `createInviteDecisionEvents({ includeDirectoryAndMembers = false } = {})`
233
-
234
205
  ### `src/server/workspacePendingInvitations/workspacePendingInvitationsActions.js`
235
206
  Exports
236
- - `workspacePendingInvitationsActions`
207
+ - `workspacePendingInvitationsActionSpecifications`
208
+ - `buildWorkspacePendingInvitationsActions({ workspacePendingInvitationsService } = {})`
237
209
 
238
210
  ### `src/server/workspacePendingInvitations/workspacePendingInvitationsService.js`
239
211
  Exports
240
212
  - `createService({ workspaceInvitesRepository, workspaceMembershipsRepository } = {})`
241
213
 
242
- ### `src/server/WorkspacesCoreServiceProvider.js`
243
- Exports
244
- - `WorkspacesCoreServiceProvider`
245
-
246
214
  ### `src/server/workspaceSettings/bootWorkspaceSettings.js`
247
215
  Exports
248
- - `bootWorkspaceSettings(app)`
216
+ - `registerWorkspaceSettingsRoutes(router, { config = {} } = {})`
249
217
  Local functions
250
218
  - `resolveWorkspaceSettingsRecordId(record = {}, context = {})`
251
219
 
252
- ### `src/server/workspaceSettings/registerWorkspaceSettings.js`
253
- Exports
254
- - `registerWorkspaceSettings(app)`
255
- Local functions
256
- - `resolveWorkspaceSettingsDefaultInvitesEnabled(appConfig = {})`
257
-
258
220
  ### `src/server/workspaceSettings/workspaceSettingsActions.js`
259
221
  Exports
260
- - `workspaceSettingsActions`
222
+ - `workspaceSettingsActionSpecifications`
223
+ - `buildWorkspaceSettingsActions({ workspaceSettingsService } = {})`
261
224
 
262
225
  ### `src/server/workspaceSettings/workspaceSettingsRepository.js`
263
226
  Exports
264
- - `createRepository({ api, knex } = {})`
227
+ - `createRepository({ api, knex, defaultInvitesEnabled = true } = {})`
265
228
  Local functions
266
229
  - `pickPatchFields(source = {})`
267
- - `createDefaultWorkspaceSettingsCreatePayload(workspaceId)`
230
+ - `createDefaultWorkspaceSettingsCreatePayload(workspaceId, defaultInvitesEnabled)`
268
231
 
269
232
  ### `src/server/workspaceSettings/workspaceSettingsService.js`
270
233
  Exports
271
234
  - `createService({ workspaceSettingsRepository, workspaceInvitationsEnabled = true, roleCatalog = null } = {})`
272
235
 
236
+ ### `src/server/WorkspacesFeature.js`
237
+ Exports
238
+ - `WorkspacesFeature`
239
+ - `createWorkspacesRuntime({ config, database, env, jsonRestApi } = {})`
240
+ - `installWorkspaceResources(jsonRestApi)`
241
+ Local functions
242
+ - `requirePositiveInteger(value, label)`
243
+ - `requireBoolean(value, label)`
244
+ - `resolveInviteEmailTemplate(config)`
245
+
246
+ ### `src/server/WorkspacesIntegrationsProvider.js`
247
+ Exports
248
+ - `WorkspacesIntegrationsProvider`
249
+
273
250
  ### `src/shared/jsonApiTransports.js`
274
251
  Exports
275
252
  - `WORKSPACES_TRANSPORT`
@@ -397,24 +374,20 @@ Local functions
397
374
  - `resolveWorkspacePolicyOverrides(appConfig = {})`
398
375
  - `resolveWorkspacePolicy(mode, overrides = {})`
399
376
 
400
- ### templates
401
-
402
- ### `templates/config/roles.js`
403
- Exports
404
- - `roleCatalog`
377
+ ### migrations
405
378
 
406
- ### `templates/migrations/workspaces_core_initial.cjs`
379
+ ### `migrations/workspaces_core_initial.cjs`
407
380
  Exports
408
381
  - None
409
382
 
410
- ### `templates/migrations/workspaces_core_workspace_settings_single_name_source.cjs`
383
+ ### `migrations/workspaces_core_workspace_settings_single_name_source.cjs`
411
384
  Exports
412
385
  - None
413
386
  Local functions
414
387
  - `hasTable(knex, tableName)`
415
388
  - `hasColumn(knex, tableName, columnName)`
416
389
 
417
- ### `templates/migrations/workspaces_core_workspaces_drop_color.cjs`
390
+ ### `migrations/workspaces_core_workspaces_drop_color.cjs`
418
391
  Exports
419
392
  - None
420
393
  Local functions
@@ -422,6 +395,12 @@ Local functions
422
395
  - `hasColumn(knex, tableName, columnName)`
423
396
  - `normalizeHexColor(value)`
424
397
 
425
- ### `templates/packages/main/src/server/email/workspaceInviteEmail.js`
398
+ ### patterns
399
+
400
+ ### `patterns/workspace-server/example/config/roles.js`
401
+ Exports
402
+ - `roleCatalog`
403
+
404
+ ### `patterns/workspace-server/example/packages/main/src/server/email/workspaceInviteEmail.js`
426
405
  Exports
427
406
  - `renderWorkspaceInviteEmail({ inviteUrl = "", workspace = {}, inviter = null, roleSid = "member", expiresAt = "" } = {})`
@@ -136,7 +136,6 @@ Exports
136
136
  - `WorkspacesWebClientProvider`
137
137
  - `WorkspaceMembersClientElement`
138
138
  - `WorkspaceInviteLanding`
139
- - `clientProviders`
140
139
 
141
140
  ### `src/client/lib/bootstrap.js`
142
141
  Exports
@@ -247,7 +246,7 @@ Exports
247
246
  - `WORKSPACE_BOOTSTRAP_STATUS_FORBIDDEN`
248
247
  - `WORKSPACE_BOOTSTRAP_STATUS_UNAUTHENTICATED`
249
248
  - `WORKSPACE_BOOTSTRAP_STATUS_ERROR`
250
- - `createBootstrapPlacementRuntime({ app, logger = null } = {})`
249
+ - `createBootstrapPlacementRuntime({ bootstrapRuntime, placementRuntime, realtime = null, router = null, vueApp = null, logger = null } = {})`
251
250
 
252
251
  ### `src/client/runtime/bootstrapPlacementRuntimeConstants.js`
253
252
  Exports
@@ -264,7 +263,7 @@ Exports
264
263
  ### `src/client/runtime/bootstrapPlacementRuntimeHelpers.js`
265
264
  Exports
266
265
  - `countPendingInvites(entries = [])`
267
- - `createProviderLogger(app)`
266
+ - `createProviderLogger(logger)`
268
267
  - `fetchBootstrapPayload(workspaceSlug = "")`
269
268
  - `isGuardDenied(outcome)`
270
269
  - `normalizeSearch(search = "")`
@@ -300,9 +299,9 @@ Exports
300
299
  Exports
301
300
  - `ADMIN_COG_OUTLET`
302
301
 
303
- ### templates
302
+ ### patterns
304
303
 
305
- ### `templates/packages/main/src/client/components/AccountPendingInvitesCue.vue`
304
+ ### `patterns/workspace-surfaces/example/packages/main/src/client/components/AccountPendingInvitesCue.vue`
306
305
  Exports
307
306
  - None
308
307
  Local functions
@@ -310,48 +309,48 @@ Local functions
310
309
  - `resolveReturnTo()`
311
310
  - `resolveReturnToHref()`
312
311
 
313
- ### `templates/packages/main/src/client/components/AccountSettingsInvitesSection.vue`
312
+ ### `patterns/workspace-surfaces/example/packages/main/src/client/components/AccountSettingsInvitesSection.vue`
314
313
  Exports
315
314
  - None
316
315
 
317
- ### `templates/src/components/WorkspaceNotFoundCard.vue`
316
+ ### `patterns/workspace-surfaces/example/src/components/WorkspaceNotFoundCard.vue`
318
317
  Exports
319
318
  - None
320
319
 
321
- ### `templates/src/composables/useWorkspaceNotFoundState.js`
320
+ ### `patterns/workspace-surfaces/example/src/composables/useWorkspaceNotFoundState.js`
322
321
  Exports
323
322
  - `useWorkspaceNotFoundState()`
324
323
 
325
- ### `templates/src/pages/admin/members/index.vue`
324
+ ### `patterns/workspace-surfaces/example/src/pages/admin/members/index.vue`
326
325
  Exports
327
326
  - None
328
327
 
329
- ### `templates/src/pages/admin/workspace/settings.vue`
328
+ ### `patterns/workspace-surfaces/example/src/pages/admin/workspace/settings.vue`
330
329
  Exports
331
330
  - None
332
331
 
333
- ### `templates/src/pages/admin/workspace/settings/index.vue`
332
+ ### `patterns/workspace-surfaces/example/src/pages/admin/workspace/settings/index.vue`
334
333
  Exports
335
334
  - None
336
335
 
337
- ### `templates/src/pages/invite/[token].vue`
336
+ ### `patterns/workspace-surfaces/example/src/pages/invite/[token].vue`
338
337
  Exports
339
338
  - None
340
339
 
341
- ### `templates/src/surfaces/admin/index.vue`
340
+ ### `patterns/workspace-surfaces/example/src/surfaces/admin/index.vue`
342
341
  Exports
343
342
  - None
344
343
  Local functions
345
344
  - `adminChildPath(suffix = "")`
346
345
 
347
- ### `templates/src/surfaces/admin/root.vue`
346
+ ### `patterns/workspace-surfaces/example/src/surfaces/admin/root.vue`
348
347
  Exports
349
348
  - None
350
349
 
351
- ### `templates/src/surfaces/app/index.vue`
350
+ ### `patterns/workspace-surfaces/example/src/surfaces/app/index.vue`
352
351
  Exports
353
352
  - None
354
353
 
355
- ### `templates/src/surfaces/app/root.vue`
354
+ ### `patterns/workspace-surfaces/example/src/surfaces/app/root.vue`
356
355
  Exports
357
356
  - None
@@ -25,3 +25,37 @@ Local functions
25
25
  - `readJson(absolutePath)`
26
26
  - `buildCatalog({ repoRoot, packagesRoot, outputPath })`
27
27
  - `main()`
28
+
29
+ ### `scripts/pattern-assets.mjs`
30
+ Exports
31
+ - `PATTERN_DOCUMENT_NAME`
32
+ - `PATTERN_EXAMPLE_DIRECTORY`
33
+ - `REQUIRED_PATTERN_SECTIONS`
34
+ - `assertUniquePatternIds(patterns = [])`
35
+ - `discoverPackagePatterns({ packageRoot, packageJson } = {})`
36
+ - `parsePatternDocument(source = "", { documentPath = PATTERN_DOCUMENT_NAME } = {})`
37
+ Local functions
38
+ - `normalizeText(value = "")`
39
+ - `normalizePath(value = "")`
40
+ - `sortedUniqueStrings(values = [])`
41
+ - `parseCommaSeparatedValue(value = "")`
42
+ - `requirePatternFrontMatter(source = "", { documentPath = PATTERN_DOCUMENT_NAME } = {})`
43
+ - `requirePatternSections(body = "", { documentPath = PATTERN_DOCUMENT_NAME } = {})`
44
+ - `directoryExists(directoryPath)`
45
+ - `collectFiles(rootDirectory)`
46
+
47
+ ### `scripts/verify-packages.mjs`
48
+ Exports
49
+ - `main()`
50
+ - `validateCapabilityClosure(packages, { builtinCapabilities = BUILTIN_CAPABILITIES } = {})`
51
+ - `validateMigrations(packageRecord, migrationOwners)`
52
+ - `validateProviderExport(value, label)`
53
+ - `validateProviderList(packageRecord, side)`
54
+ Local functions
55
+ - `fileExists(filePath)`
56
+ - `discoverFrameworkPackages()`
57
+ - `requireStringArray(value, label)`
58
+ - `requireArchitectureId(value, label)`
59
+ - `validateCapabilityMap(value, label)`
60
+ - `validateProviderDefinition(value, label)`
61
+ - `validatePackage(packageRecord, localVersions, migrationOwners)`
@@ -41,13 +41,13 @@ Exports
41
41
  Local functions
42
42
  - `resolveJskitConfig(jskitOrSource)`
43
43
 
44
- ### `runCli.js`
44
+ ### `patternApp.mjs`
45
45
  Exports
46
- - `createCliRunner(cliPath)`
46
+ - `copyFoundationPattern({ cwd, name, pattern = "shell-foundation" } = {})`
47
47
 
48
- ### `runJskit.mjs`
48
+ ### `runCli.js`
49
49
  Exports
50
- - `runJskit({ cwd, args = [], input = undefined } = {})`
50
+ - `createCliRunner(cliPath)`
51
51
 
52
52
  ### `tempDir.mjs`
53
53
  Exports
@@ -1,31 +1,35 @@
1
1
  ---
2
2
  name: jskit
3
- description: Build, extend, troubleshoot, review, deslop, and verify JSKIT apps using its CLI, packages, generators, surfaces, placements, CRUDs, managed files, verification conventions, and Vue/Vuetify Material 3 UI contract. Use for every JSKIT UI creation, modification, review, or cleanup task.
3
+ description: Build, extend, troubleshoot, review, deslop, and verify JSKIT apps using its public framework APIs, package-owned source patterns, runtime capabilities, surfaces, placements, CRUDs, verification conventions, and Vue/Vuetify Material 3 UI contract. Use for every JSKIT UI creation, modification, review, or cleanup task.
4
4
  ---
5
5
 
6
6
  # JSKIT
7
7
 
8
- Use JSKIT's CLI, generators, packages, and app-local contracts. The request
9
- and app files define the product.
8
+ Use JSKIT's framework APIs, package-owned patterns, packages, and app-local
9
+ contracts. The request and app files define the product. Adapted pattern source
10
+ belongs to the application immediately.
10
11
 
11
- ## Exact caller lanes
12
+ ## Pattern-first implementation
12
13
 
13
- Execute a caller-supplied complete exact JSKIT command lane with all option
14
- values directly. Read the nearest `AGENTS.md` and relevant skill reference;
15
- skip `help`, `list`, `show --details`, `list-placements`, sibling docs,
16
- `node_modules` or generator-source inspection, plus any verification the
17
- caller owns.
14
+ Search [the generated source pattern index](../../reference/autogen/PATTERN_INDEX.md)
15
+ for the requested outcome before reading broad operational guidance or
16
+ inventing a local structure. Read a selected package's `PATTERN.md` completely,
17
+ then use its example directly, adapt it, compose compatible patterns, or treat
18
+ it as evidence for a different implementation through the same public APIs.
18
19
 
19
- Discover only a missing fact or exact-command failure, then resume the lane.
20
+ Do not write or consult receipts, provenance, completion ledgers, or other
21
+ durable bookkeeping for pattern or authoring-tool runs. Current source,
22
+ manifests, migrations, tests, and runtime behaviour are the evidence.
20
23
 
21
24
  ## Establish context
22
25
 
23
26
  1. Read the request and nearest `AGENTS.md`.
24
27
  2. Inspect `package.json`, `package-lock.json`, installed package metadata, the
25
28
  existing tree, and the current diff when reviewing changes.
26
- 3. Read `.jskit/APP_BLUEPRINT.md` when present; do not invent requirements.
29
+ 3. Read the project's product documentation and current source. JSKIT does not
30
+ own a second project brain or prescribe a particular agent orchestrator.
27
31
  4. Load only the task-relevant direct reference:
28
- - For creation, package selection, CLI use, or generators, read
32
+ - For creation, foundation patterns, or package selection, read
29
33
  [application operations](references/app-operations.md).
30
34
  - Before database, schema, CRUD, repository, or persistence work, read
31
35
  [CRUD operations](references/crud-operations.md) completely.
@@ -42,17 +46,20 @@ or permission decisions when they would materially change the application.
42
46
 
43
47
  ## Discovery fallback
44
48
 
45
- Use the narrowest CLI query for a missing fact. Prefer existing packages,
46
- generators, placements, and high-level composables. Generate migration and CI
47
- projections with their intent-specific commands.
49
+ Use the pattern index, package metadata, and public API reference for a missing
50
+ fact. Prefer existing framework APIs, patterns, placements, and high-level
51
+ composables. JSKIT has no general authoring CLI: inspect current source and
52
+ installed packages directly, edit app-owned files deliberately, and use npm
53
+ for dependency installation.
48
54
 
49
55
  ## Implement a change
50
56
 
51
- Read the matching reference and implement the smallest complete slice at
52
- documented seams. Install dependencies/migrate only when required. Use only a
53
- fresh disposable development database for schema work—never valuable data.
54
- For UI, respect surface/placements, compact layout, all operational states,
55
- permissions/ownership, and browser verification.
57
+ Read the matching pattern and reference, then implement the smallest complete
58
+ slice at documented seams. Install one planned dependency closure and migrate
59
+ only when required. Use only a fresh disposable development database for
60
+ schema work—never valuable data. For UI, respect surface/placements, compact
61
+ layout, all operational states, permissions/ownership, and browser
62
+ verification.
56
63
 
57
64
  ## Caller-owned verification
58
65
 
@@ -63,16 +70,14 @@ unless requested in the current task.
63
70
 
64
71
  ## Review or deslop
65
72
 
66
- For review-only work, report without editing. Check duplicated/dead/wrong code,
73
+ For review-only work, report without editing. Check dead or duplicated code,
67
74
  accidental abstraction, incomplete states, missed high-level JSKIT seams,
68
- invalid routing/ownership/permission/migration/managed-file choices, weak
69
- Vuetify/Material behavior, and proportional verification. For affected UI, run
70
- the Material 3 audit in the selected reference. Put findings first by severity
71
- with file references; state when none exist.
75
+ invalid ownership or migration choices, UI quality, and verification. Run the
76
+ Material 3 audit for affected UI. Put findings first by severity and file.
72
77
 
73
78
  ## Verify
74
79
 
75
- Run focused tests for a slice and broad checks for a whole changeset. Run
76
- Doctor for managed state, `npm run verify` before sign-off, rebuild changed
77
- persistence from zero in a disposable database, and use Playwright for UI.
78
- Report files, commands, and anything unverified.
80
+ Run focused tests for a slice and the application's `npm run verify` for a
81
+ whole changeset. Use the current-state owners in application operations and
82
+ Playwright for affected UI. There is no current JSKIT Doctor command; ignore
83
+ old CLI authoring-history diagnoses. Never expose environment values.