@jskit-ai/agent-docs 0.1.1

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 (73) hide show
  1. package/DISTR_AGENT.md +25 -0
  2. package/guide/agent/app-extras/assistant.md +636 -0
  3. package/guide/agent/app-extras/realtime.md +223 -0
  4. package/guide/agent/app-setup/a-more-interesting-shell.md +643 -0
  5. package/guide/agent/app-setup/authentication.md +948 -0
  6. package/guide/agent/app-setup/console.md +316 -0
  7. package/guide/agent/app-setup/database-layer.md +775 -0
  8. package/guide/agent/app-setup/initial-scaffolding.md +714 -0
  9. package/guide/agent/app-setup/multi-homing.md +655 -0
  10. package/guide/agent/app-setup/users.md +355 -0
  11. package/guide/agent/app-setup/working-with-the-jskit-cli.md +983 -0
  12. package/guide/agent/generators/advanced-cruds.md +923 -0
  13. package/guide/agent/generators/crud-generators.md +556 -0
  14. package/guide/agent/generators/intro.md +63 -0
  15. package/guide/agent/generators/ui-generators.md +648 -0
  16. package/guide/agent/index.md +39 -0
  17. package/guide/human/app-extras/assistant.md +695 -0
  18. package/guide/human/app-extras/realtime.md +270 -0
  19. package/guide/human/app-setup/a-more-interesting-shell.md +734 -0
  20. package/guide/human/app-setup/authentication.md +963 -0
  21. package/guide/human/app-setup/console.md +352 -0
  22. package/guide/human/app-setup/database-layer.md +822 -0
  23. package/guide/human/app-setup/initial-scaffolding.md +738 -0
  24. package/guide/human/app-setup/multi-homing.md +795 -0
  25. package/guide/human/app-setup/users.md +404 -0
  26. package/guide/human/app-setup/working-with-the-jskit-cli.md +997 -0
  27. package/guide/human/generators/advanced-cruds.md +923 -0
  28. package/guide/human/generators/crud-generators.md +556 -0
  29. package/guide/human/generators/intro.md +109 -0
  30. package/guide/human/generators/ui-generators.md +665 -0
  31. package/guide/human/index.md +39 -0
  32. package/package.json +28 -0
  33. package/reference/autogen/KERNEL_MAP.md +536 -0
  34. package/reference/autogen/README.md +44 -0
  35. package/reference/autogen/packages/agent-docs.md +13 -0
  36. package/reference/autogen/packages/assistant-core.md +310 -0
  37. package/reference/autogen/packages/assistant-runtime.md +219 -0
  38. package/reference/autogen/packages/assistant.md +73 -0
  39. package/reference/autogen/packages/auth-core.md +352 -0
  40. package/reference/autogen/packages/auth-provider-supabase-core.md +223 -0
  41. package/reference/autogen/packages/auth-web.md +267 -0
  42. package/reference/autogen/packages/console-core.md +116 -0
  43. package/reference/autogen/packages/console-web.md +37 -0
  44. package/reference/autogen/packages/crud-core.md +283 -0
  45. package/reference/autogen/packages/crud-server-generator.md +220 -0
  46. package/reference/autogen/packages/crud-ui-generator.md +154 -0
  47. package/reference/autogen/packages/database-runtime-mysql.md +61 -0
  48. package/reference/autogen/packages/database-runtime-postgres.md +39 -0
  49. package/reference/autogen/packages/database-runtime.md +216 -0
  50. package/reference/autogen/packages/http-runtime.md +213 -0
  51. package/reference/autogen/packages/kernel.md +1350 -0
  52. package/reference/autogen/packages/realtime.md +95 -0
  53. package/reference/autogen/packages/shell-web.md +349 -0
  54. package/reference/autogen/packages/storage-runtime.md +39 -0
  55. package/reference/autogen/packages/ui-generator.md +101 -0
  56. package/reference/autogen/packages/uploads-image-web.md +76 -0
  57. package/reference/autogen/packages/uploads-runtime.md +85 -0
  58. package/reference/autogen/packages/users-core.md +307 -0
  59. package/reference/autogen/packages/users-web.md +473 -0
  60. package/reference/autogen/packages/workspaces-core.md +415 -0
  61. package/reference/autogen/packages/workspaces-web.md +372 -0
  62. package/reference/autogen/tooling/config-eslint.md +52 -0
  63. package/reference/autogen/tooling/create-app.md +194 -0
  64. package/reference/autogen/tooling/jskit-catalog.md +27 -0
  65. package/reference/autogen/tooling/jskit-cli.md +624 -0
  66. package/reference/autogen/tooling/test-support.md +27 -0
  67. package/reference/autogen/tooling/testUtils.md +31 -0
  68. package/templates/APP_BLUEPRINT.md +57 -0
  69. package/workflow/app-state.md +33 -0
  70. package/workflow/bootstrap.md +24 -0
  71. package/workflow/feature-delivery.md +21 -0
  72. package/workflow/review.md +22 -0
  73. package/workflow/scoping.md +26 -0
@@ -0,0 +1,415 @@
1
+ # packages/workspaces-core
2
+
3
+ Generated by `npm run agent-docs:build`.
4
+ Do not edit manually.
5
+
6
+ Generated inventory for `packages/workspaces-core`.
7
+ Use this on demand; do not load the full index at startup.
8
+
9
+ ## Scope
10
+ - Source: `packages/workspaces-core/**/*{.js,.mjs,.cjs,.vue}`
11
+ - Excludes: `test/`, `tests/`, `__tests__/`, `*.test.*`, `*.spec.*`, `*.vitest.*`, `node_modules/`, `dist/`, `coverage/`, `docs/`, `LEGACY/`
12
+
13
+ ## Sections
14
+
15
+ ### src
16
+
17
+ ### `src/server/common/contributors/workspaceActionContextContributor.js`
18
+ Exports
19
+ - `createWorkspaceActionContextContributor({ workspaceService, workspaceSurfaceIds = [] } = {})`
20
+ Local functions
21
+ - `normalizeWorkspaceSurfaceIds(surfaceIds = [])`
22
+
23
+ ### `src/server/common/contributors/workspaceAuthPolicyContextResolver.js`
24
+ Exports
25
+ - `createWorkspaceAuthPolicyContextResolver({ workspaceService } = {})`
26
+
27
+ ### `src/server/common/contributors/workspaceRouteVisibilityResolver.js`
28
+ Exports
29
+ - `createWorkspaceRouteVisibilityResolver({ workspaceService } = {})`
30
+ Local functions
31
+ - `buildVisibilityContribution({ visibility, scopeOwnerId = null, userId = null } = {})`
32
+
33
+ ### `src/server/common/formatters/workspaceFormatter.js`
34
+ Exports
35
+ - `mapMembershipSummary(membership, workspace)`
36
+ - `mapWorkspaceSettingsPublic(workspaceSettings, { workspaceInvitationsEnabled = true } = {})`
37
+ - `mapWorkspaceSummary(workspace, membership)`
38
+
39
+ ### `src/server/common/repositories/repositoryUtils.js`
40
+ Exports
41
+ - `toNullableDateTime`
42
+ - `toIsoString`
43
+ - `isDuplicateEntryError`
44
+ - `normalizeText`
45
+ - `normalizeLowerText`
46
+ - `normalizeRecordId`
47
+ - `normalizeDbRecordId`
48
+ - `nowDb()`
49
+ - `toNullableIso(value)`
50
+ - `uniqueSorted(values)`
51
+ - `parseJson(value, fallback = {})`
52
+ - `toDbJson(value, fallback = {})`
53
+ - `createWithTransaction`
54
+
55
+ ### `src/server/common/repositories/workspaceInvitesRepository.js`
56
+ Exports
57
+ - `createRepository(knex)`
58
+ - `mapRow(row)`
59
+
60
+ ### `src/server/common/repositories/workspaceMembershipsRepository.js`
61
+ Exports
62
+ - `createRepository(knex)`
63
+ - `mapRow(row)`
64
+ - `mapMemberSummaryRow(row)`
65
+
66
+ ### `src/server/common/repositories/workspacesRepository.js`
67
+ Exports
68
+ - `createRepository(knex)`
69
+ - `mapRow(row)`
70
+ - `mapMembershipWorkspaceRow(row)`
71
+
72
+ ### `src/server/common/services/workspaceContextService.js`
73
+ Exports
74
+ - `createService({ appConfig = {}, workspacesRepository, workspaceMembershipsRepository, workspaceSettingsRepository } = {})`
75
+ Local functions
76
+ - `toSlugPart(value)`
77
+ - `buildWorkspaceBaseSlug(user = {})`
78
+ - `buildWorkspaceName(user = {})`
79
+ - `buildPermissionsFromMembership(membership, appConfig = {})`
80
+ - `hashInviteToken(token)`
81
+ - `normalizeWorkspaceCreationInput(payload = {})`
82
+
83
+ ### `src/server/common/support/deepFreeze.js`
84
+ Exports
85
+ - `deepFreeze`
86
+
87
+ ### `src/server/common/support/realtimeServiceEvents.js`
88
+ Exports
89
+ - `ACCOUNT_SETTINGS_AND_BOOTSTRAP_EVENTS`
90
+ - `createWorkspaceEntityAndBootstrapEvents({ workspaceEntity, workspaceOperation, workspaceRealtimeEvent, workspaceEntityId = ({ args }) => args?.[0]?.id, bootstrapEntityId = ({ args }) => args?.[0]?.id, bootstrapAudience = "event_scope" } = {})`
91
+ Local functions
92
+ - `resolveActorScopedEntityId({ options } = {})`
93
+ - `resolveWorkspaceSlugPayload({ args } = {})`
94
+
95
+ ### `src/server/common/support/resolveActionUser.js`
96
+ Exports
97
+ - `resolveActionUser(context, input)`
98
+
99
+ ### `src/server/common/support/workspaceRoutePaths.js`
100
+ Exports
101
+ - `WORKSPACE_ROUTE_BASE_PATH`
102
+ - `resolveWorkspaceRoutePath(relativePath = "/")`
103
+
104
+ ### `src/server/common/validators/authenticatedUserValidator.js`
105
+ Exports
106
+ - `authenticatedUserValidator`
107
+ Local functions
108
+ - `normalizeAuthenticatedUser(input = {})`
109
+
110
+ ### `src/server/common/validators/routeParamsValidator.js`
111
+ Exports
112
+ - `routeParamsValidator`
113
+ - `workspaceSlugParamsValidator`
114
+ Local functions
115
+ - `normalizeRouteParams(input = {})`
116
+ - `normalizeWorkspaceSlugParams(input = {})`
117
+
118
+ ### `src/server/registerWorkspaceBootstrap.js`
119
+ Exports
120
+ - `registerWorkspaceBootstrap(app)`
121
+
122
+ ### `src/server/registerWorkspaceCore.js`
123
+ Exports
124
+ - `registerWorkspaceCore(app)`
125
+
126
+ ### `src/server/registerWorkspaceRepositories.js`
127
+ Exports
128
+ - `registerWorkspaceRepositories(app)`
129
+
130
+ ### `src/server/support/resolveWorkspace.js`
131
+ Exports
132
+ - `resolveWorkspace(context = {}, input = {})`
133
+ Local functions
134
+ - `resolveRequest(context = {})`
135
+
136
+ ### `src/server/support/workspaceActionSurfaces.js`
137
+ Exports
138
+ - `resolveWorkspaceSurfaceIdsFromAppConfig(appConfig = {})`
139
+ - `resolveDefaultWorkspaceRouteSurfaceIdFromAppConfig(appConfig = {})`
140
+ - `materializeWorkspaceActionSurfaces(actions = [], { workspaceSurfaceIds = [] } = {})`
141
+ - `materializeWorkspaceActionSurfacesFromAppConfig(actions = [], { appConfig = {} } = {})`
142
+ - `registerWorkspaceActionSurfaceSources(app)`
143
+ Local functions
144
+ - `normalizeSurfaceIds(surfaceIds = [])`
145
+ - `resolveSurfaceIdsFromAppConfig(appConfig = {}, predicate)`
146
+
147
+ ### `src/server/support/workspaceInvitationsPolicy.js`
148
+ Exports
149
+ - `normalizeWorkspaceInvitationsConfig(appConfig = {})`
150
+ - `resolveWorkspaceInvitationsPolicy({ appConfig = {}, tenancyProfile = null } = {})`
151
+
152
+ ### `src/server/support/workspaceRouteInput.js`
153
+ Exports
154
+ - `readWorkspaceSlugFromRouteParams(params = {})`
155
+ - `buildWorkspaceInputFromRouteParams(params = {})`
156
+
157
+ ### `src/server/workspaceBootstrapContributor.js`
158
+ Exports
159
+ - `createWorkspaceBootstrapContributor({ workspaceService, workspacePendingInvitationsService, usersRepository, workspaceInvitationsEnabled = false, appConfig = {}, tenancyProfile = null } = {})`
160
+ Local functions
161
+ - `normalizePendingInvites(invites)`
162
+ - `normalizeQueryPayload(value = {})`
163
+ - `resolveBootstrapWorkspaceSlug({ query = {}, request = null } = {})`
164
+ - `normalizeRequestedWorkspaceStatus(value = "")`
165
+ - `createRequestedWorkspacePayload(workspaceSlug = "", status = "")`
166
+ - `resolveRequestedWorkspaceStatusFromError(error)`
167
+ - `resolveBootstrapTenancyProfile(tenancyProfile = null, appConfig = {})`
168
+
169
+ ### `src/server/workspaceDirectory/bootWorkspaceDirectoryRoutes.js`
170
+ Exports
171
+ - `bootWorkspaceDirectoryRoutes(app)`
172
+
173
+ ### `src/server/workspaceDirectory/registerWorkspaceDirectory.js`
174
+ Exports
175
+ - `registerWorkspaceDirectory(app)`
176
+
177
+ ### `src/server/workspaceDirectory/workspaceDirectoryActions.js`
178
+ Exports
179
+ - `workspaceDirectoryActions`
180
+
181
+ ### `src/server/workspaceMembers/bootWorkspaceMembers.js`
182
+ Exports
183
+ - `bootWorkspaceMembers(app)`
184
+
185
+ ### `src/server/workspaceMembers/registerWorkspaceMembers.js`
186
+ Exports
187
+ - `registerWorkspaceMembers(app)`
188
+ Local functions
189
+ - `resolveWorkspaceMembersInviteExpiresInMs(appConfig = {})`
190
+
191
+ ### `src/server/workspaceMembers/workspaceMembersActions.js`
192
+ Exports
193
+ - `workspaceMembersActions`
194
+
195
+ ### `src/server/workspaceMembers/workspaceMembersService.js`
196
+ Exports
197
+ - `createService({ workspaceMembershipsRepository, workspaceInvitesRepository, inviteExpiresInMs, roleCatalog = null, workspaceInvitationsEnabled = true } = {})`
198
+
199
+ ### `src/server/workspacePendingInvitations/bootWorkspacePendingInvitations.js`
200
+ Exports
201
+ - `bootWorkspacePendingInvitations(app)`
202
+
203
+ ### `src/server/workspacePendingInvitations/registerWorkspacePendingInvitations.js`
204
+ Exports
205
+ - `registerWorkspacePendingInvitations(app)`
206
+ Local functions
207
+ - `workspaceAudienceFromEntityId({ event } = {})`
208
+ - `actorUserEntityId({ options } = {})`
209
+ - `createActorUserEvent({ source, entity, realtimeEvent })`
210
+ - `createWorkspaceAudienceEvent({ entity, realtimeEvent })`
211
+ - `createInviteDecisionEvents({ includeDirectoryAndMembers = false } = {})`
212
+
213
+ ### `src/server/workspacePendingInvitations/workspacePendingInvitationsActions.js`
214
+ Exports
215
+ - `workspacePendingInvitationsActions`
216
+
217
+ ### `src/server/workspacePendingInvitations/workspacePendingInvitationsService.js`
218
+ Exports
219
+ - `createService({ workspaceInvitesRepository, workspaceMembershipsRepository } = {})`
220
+
221
+ ### `src/server/WorkspacesCoreServiceProvider.js`
222
+ Exports
223
+ - `WorkspacesCoreServiceProvider`
224
+
225
+ ### `src/server/workspaceSettings/bootWorkspaceSettings.js`
226
+ Exports
227
+ - `bootWorkspaceSettings(app)`
228
+
229
+ ### `src/server/workspaceSettings/registerWorkspaceSettings.js`
230
+ Exports
231
+ - `registerWorkspaceSettings(app)`
232
+ Local functions
233
+ - `resolveWorkspaceSettingsDefaultInvitesEnabled(appConfig = {})`
234
+
235
+ ### `src/server/workspaceSettings/workspaceSettingsActions.js`
236
+ Exports
237
+ - `workspaceSettingsActions`
238
+
239
+ ### `src/server/workspaceSettings/workspaceSettingsRepository.js`
240
+ Exports
241
+ - `createRepository(knex, { defaultInvitesEnabled } = {})`
242
+ Local functions
243
+ - `resolveWorkspaceSettingsSeed(workspace = {}, { defaultInvitesEnabled = true } = {})`
244
+
245
+ ### `src/server/workspaceSettings/workspaceSettingsService.js`
246
+ Exports
247
+ - `createService({ workspaceSettingsRepository, workspaceInvitationsEnabled = true, roleCatalog = null } = {})`
248
+
249
+ ### `src/shared/operationMessages.js`
250
+ Exports
251
+ - `createOperationMessages({ validationMessage = "Validation failed.", apiValidationMessage = validationMessage } = {})`
252
+
253
+ ### `src/shared/resources/resolveGlobalArrayRegistry.js`
254
+ Exports
255
+ - `resolveGlobalArrayRegistry(symbolKey)`
256
+
257
+ ### `src/shared/resources/workspaceMembersResource.js`
258
+ Exports
259
+ - `workspaceMembersResource`
260
+ Local functions
261
+ - `normalizeWorkspaceAdminSummary(workspace)`
262
+ - `normalizeMemberSummary(member, workspace)`
263
+ - `normalizeInviteSummary(invite)`
264
+ - `normalizeWorkspaceOutputEnvelope(payload = {}, { itemsKey, normalizeItem, includeInviteTokenPreview = false } = {})`
265
+ - `normalizeWorkspaceMembersOutput(payload = {})`
266
+ - `normalizeWorkspaceInvitesOutput(payload = {})`
267
+
268
+ ### `src/shared/resources/workspacePendingInvitationsResource.js`
269
+ Exports
270
+ - `workspacePendingInvitationsResource`
271
+ Local functions
272
+ - `normalizePendingInvite(invite)`
273
+ - `normalizePendingInviteList(invites)`
274
+
275
+ ### `src/shared/resources/workspaceResource.js`
276
+ Exports
277
+ - `workspaceResource`
278
+ Local functions
279
+ - `normalizeWorkspaceAvatarUrl(value)`
280
+ - `normalizeWorkspaceInput(payload = {})`
281
+ - `normalizeWorkspaceOutput(payload = {})`
282
+ - `normalizeWorkspaceListItemOutput(payload = {})`
283
+
284
+ ### `src/shared/resources/workspaceSettingsFields.js`
285
+ Exports
286
+ - `defineField(field = {})`
287
+ - `resetWorkspaceSettingsFields()`
288
+ - `resolveWorkspaceSettingsFieldKeys()`
289
+ - `workspaceSettingsFields`
290
+
291
+ ### `src/shared/resources/workspaceSettingsResource.js`
292
+ Exports
293
+ - `workspaceSettingsResource`
294
+ Local functions
295
+ - `buildCreateBodySchema()`
296
+ - `buildSettingsOutputSchema()`
297
+ - `buildResponseRecordSchema()`
298
+ - `normalizeInput(payload = {})`
299
+ - `normalizeOutput(payload = {})`
300
+
301
+ ### `src/shared/roles.js`
302
+ Exports
303
+ - `OWNER_ROLE_ID`
304
+ - `ADMIN_ROLE_ID`
305
+ - `MEMBER_ROLE_ID`
306
+ - `resolveRolePermissions(roleSid, appConfig = {})`
307
+ - `listRoleDescriptors(appConfig = {})`
308
+ - `createWorkspaceRoleCatalog(appConfig = {})`
309
+ - `cloneWorkspaceRoleCatalog(roleCatalog = null)`
310
+ - `hasPermission`
311
+ Local functions
312
+ - `asRecord(value)`
313
+ - `normalizeRoleId(value)`
314
+ - `resolveInheritedRolePermissions(roleSid, configuredRoles = {}, seenRoleIds = new Set())`
315
+ - `createRoleDescriptor(roleSid, configuredDefinition, configuredRoles = {})`
316
+ - `listConfiguredRoleIds(appConfig = {})`
317
+ - `resolveConfiguredDefaultInviteRole(appConfig = {})`
318
+ - `normalizeConfiguredRoles(appConfig = {})`
319
+
320
+ ### `src/shared/settings.js`
321
+ Exports
322
+ - `DEFAULT_WORKSPACE_DARK_PALETTE`
323
+ - `DEFAULT_WORKSPACE_LIGHT_PALETTE`
324
+ - `DEFAULT_WORKSPACE_COLOR`
325
+ - `coerceWorkspaceColor(value)`
326
+ - `coerceWorkspaceThemeColor(value, fallbackColor = DEFAULT_WORKSPACE_COLOR)`
327
+ - `coerceWorkspaceSecondaryColor(value, { mode = WORKSPACE_THEME_MODE_LIGHT } = {})`
328
+ - `coerceWorkspaceSurfaceColor(value, { mode = WORKSPACE_THEME_MODE_LIGHT } = {})`
329
+ - `coerceWorkspaceSurfaceVariantColor(value, { mode = WORKSPACE_THEME_MODE_LIGHT } = {})`
330
+ - `normalizeWorkspaceHexColor(value)`
331
+ - `normalizeWorkspaceThemeMode(value = "")`
332
+ - `resolveWorkspaceThemeDefaultPalette(mode = WORKSPACE_THEME_MODE_LIGHT)`
333
+ - `resolveWorkspaceThemePalettes(input = {})`
334
+ - `WORKSPACE_THEME_MODE_DARK`
335
+ - `WORKSPACE_THEME_MODE_LIGHT`
336
+ - `resolveWorkspaceThemePalette(input = {}, { mode = WORKSPACE_THEME_MODE_LIGHT } = {})`
337
+
338
+ ### `src/shared/support/workspacePathModel.js`
339
+ Exports
340
+ - `normalizePathname`
341
+ - `normalizeSurfaceSegmentFromRouteBase(routeBase, { workspaceBasePath = "/w" } = {})`
342
+ - `parseWorkspacePathname(pathname = "", { workspaceBasePath = "/w" } = {})`
343
+ - `resolveDefaultWorkspaceSurfaceId({ defaultSurfaceId = "", workspaceSurfaceIds = [], surfaceRequiresWorkspace = null } = {})`
344
+ - `resolveWorkspaceSurfaceIdFromSuffixSegments({ suffixSegments = [], defaultWorkspaceSurfaceId = "", workspaceSurfaces = [] } = {})`
345
+ Local functions
346
+ - `normalizeWorkspaceBasePath(workspaceBasePath = "/w")`
347
+ - `normalizeSurfaceSegment(segmentLike = "")`
348
+ - `normalizeSurfaceRouteBase(routeBaseLike = "")`
349
+
350
+ ### `src/shared/tenancyMode.js`
351
+ Exports
352
+ - `TENANCY_MODE_NONE`
353
+ - `TENANCY_MODE_PERSONAL`
354
+ - `TENANCY_MODE_WORKSPACES`
355
+ - `TENANCY_MODES`
356
+ - `normalizeTenancyMode(value = "")`
357
+ - `isTenancyMode(value = "")`
358
+
359
+ ### `src/shared/tenancyProfile.js`
360
+ Exports
361
+ - `TENANCY_MODE_NONE`
362
+ - `TENANCY_MODE_PERSONAL`
363
+ - `TENANCY_MODE_WORKSPACES`
364
+ - `normalizeTenancyMode`
365
+ - `WORKSPACE_SLUG_POLICY_NONE`
366
+ - `WORKSPACE_SLUG_POLICY_IMMUTABLE_USERNAME`
367
+ - `WORKSPACE_SLUG_POLICY_USER_SELECTED`
368
+ - `resolveTenancyProfile(appConfig = {})`
369
+ - `isWorkspacesTenancyMode(value = "")`
370
+ Local functions
371
+ - `resolveWorkspacePolicyOverrides(appConfig = {})`
372
+ - `resolveWorkspacePolicy(mode, overrides = {})`
373
+
374
+ ### templates
375
+
376
+ ### `templates/config/roles.js`
377
+ Exports
378
+ - `roleCatalog`
379
+
380
+ ### `templates/migrations/workspaces_core_initial.cjs`
381
+ Exports
382
+ - None
383
+
384
+ ### `templates/migrations/workspaces_core_workspace_settings_single_name_source.cjs`
385
+ Exports
386
+ - None
387
+ Local functions
388
+ - `hasTable(knex, tableName)`
389
+ - `hasColumn(knex, tableName, columnName)`
390
+
391
+ ### `templates/migrations/workspaces_core_workspaces_drop_color.cjs`
392
+ Exports
393
+ - None
394
+ Local functions
395
+ - `hasTable(knex, tableName)`
396
+ - `hasColumn(knex, tableName, columnName)`
397
+ - `normalizeHexColor(value)`
398
+
399
+ ### `templates/packages/main/src/shared/resources/workspaceSettingsFields.js`
400
+ Exports
401
+ - None
402
+ Local functions
403
+ - `normalizeHexColor(value)`
404
+
405
+ ### root
406
+
407
+ ### `package.descriptor.mjs`
408
+ Exports
409
+ - None
410
+
411
+ ### test-support
412
+
413
+ ### `test-support/registerDefaultSettingsFields.js`
414
+ Exports
415
+ - None