@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,283 @@
1
+ # packages/crud-core
2
+
3
+ Generated by `npm run agent-docs:build`.
4
+ Do not edit manually.
5
+
6
+ Generated inventory for `packages/crud-core`.
7
+ Use this on demand; do not load the full index at startup.
8
+
9
+ ## Scope
10
+ - Source: `packages/crud-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/client/composables/createCrudClientSupport.js`
18
+ Exports
19
+ - `useCrudClientContext(source = {})`
20
+ - `useCrudListRuntime(source = {})`
21
+ - `useCrudCreateRuntime(source = {})`
22
+ - `useCrudRecordRuntime(source = {}, { recordIdParam = "recordId" } = {})`
23
+ - `createCrudClientSupport(source = {})`
24
+ Local functions
25
+ - `normalizeText(value = "")`
26
+ - `normalizeRouteParams(params = {})`
27
+ - `normalizePathTemplate(value = "")`
28
+ - `resolvePathTemplate(pathTemplate = "", { routeParams = {}, params = {}, context = "resolvePathTemplate" } = {})`
29
+
30
+ ### `src/client/composables/crudClientSupportHelpers.js`
31
+ Exports
32
+ - `DEFAULT_CRUD_OWNERSHIP_FILTER`
33
+ - `requireCrudNamespace`
34
+ - `resolveCrudClientConfig(source = {})`
35
+ - `formatDateTime`
36
+ - `resolveCrudRecordChangedEvent`
37
+ - `crudScopeQueryKey(namespace = "")`
38
+ - `invalidateCrudQueries(queryClient, namespace = "")`
39
+ - `crudListQueryKey(surfaceId = "", workspaceSlug = "", namespace = "")`
40
+ - `crudViewQueryKey(surfaceId = "", workspaceSlug = "", recordId = "", namespace = "")`
41
+ - `toRouteRecordId(value)`
42
+ - `normalizeCrudRouteParamName(value, { context = "normalizeCrudRouteParamName" } = {})`
43
+ - `resolveCrudRecordPathTemplates(relativePath = "", recordIdParam = "recordId")`
44
+ - `resolveCrudRecordPathParams(recordIdLike = "", recordIdParam = "recordId")`
45
+ Local functions
46
+ - `normalizeRelativePath(value, { context = "resolveCrudClientConfig" } = {})`
47
+
48
+ ### `src/client/composables/useCrudRealtimeInvalidation.js`
49
+ Exports
50
+ - `useCrudRealtimeInvalidation(namespace = "", { event = "", enabled = true, matches = null, queryKey = null } = {})`
51
+
52
+ ### `src/client/index.js`
53
+ Exports
54
+ - `DEFAULT_CRUD_OWNERSHIP_FILTER`
55
+ - `resolveCrudClientConfig`
56
+ - `crudListQueryKey`
57
+ - `crudViewQueryKey`
58
+ - `crudScopeQueryKey`
59
+ - `invalidateCrudQueries`
60
+ - `formatDateTime`
61
+ - `resolveCrudRecordChangedEvent`
62
+ - `toRouteRecordId`
63
+ - `requireCrudNamespace`
64
+ - `useCrudClientContext`
65
+ - `useCrudListRuntime`
66
+ - `useCrudCreateRuntime`
67
+ - `useCrudRecordRuntime`
68
+ - `createCrudClientSupport`
69
+ - `useCrudRealtimeInvalidation`
70
+
71
+ ### `src/server/createCrudRepositoryFromResource.js`
72
+ Exports
73
+ - `createCrudRepositoryFromResource(resource = {}, { context = "crudRepository", list = {} } = {})`
74
+
75
+ ### `src/server/createCrudServiceFromResource.js`
76
+ Exports
77
+ - `createCrudServiceFromResource(resource = {}, { context = "crudService" } = {})`
78
+
79
+ ### `src/server/createHooksToCollectChildren.js`
80
+ Exports
81
+ - `createHooksToCollectChildren(options = {})`
82
+ Local functions
83
+ - `normalizeOwnerKey(value)`
84
+ - `toDefaultChildCallOptions(callOptions = {})`
85
+ - `resolveListChildrenHandler(options = {}, { context = "createHooksToCollectChildren" } = {})`
86
+ - `resolveGetChildOwnerId(options = {}, { context = "createHooksToCollectChildren" } = {})`
87
+ - `resolveLookupContainerKey(record = {}, hookContext = {}, options = {})`
88
+
89
+ ### `src/server/crudModuleConfig.js`
90
+ Exports
91
+ - `CRUD_MODULE_ID`
92
+ - `DEFAULT_OWNERSHIP_FILTER`
93
+ - `CRUD_REQUESTED_OWNERSHIP_FILTER_AUTO`
94
+ - `normalizeCrudNamespace`
95
+ - `normalizeCrudOwnershipFilter(value, { fallback = DEFAULT_OWNERSHIP_FILTER } = {})`
96
+ - `normalizeCrudRequestedOwnershipFilter(value, { fallback = CRUD_REQUESTED_OWNERSHIP_FILTER_AUTO } = {})`
97
+ - `isWorkspaceRouteVisibility`
98
+ - `requireCrudNamespace`
99
+ - `resolveCrudNamespacePath(namespace = "")`
100
+ - `resolveCrudRelativePath(namespace = "")`
101
+ - `normalizeCrudRelativePath(relativePath = "", { context = "resolveCrudSurfacePolicy" } = {})`
102
+ - `resolveCrudApiBasePath({ namespace = "", surfaceRequiresWorkspace = false } = {})`
103
+ - `resolveCrudTableName(namespace = "")`
104
+ - `resolveCrudActionIdPrefix(namespace = "")`
105
+ - `resolveCrudContributorId(namespace = "")`
106
+ - `resolveCrudDomain(namespace = "")`
107
+ - `resolveCrudConfig(source = {})`
108
+ - `resolveCrudSurfacePolicy(sourceConfig = {}, { surfaceDefinitions = {}, defaultSurfaceId = "", context = "resolveCrudSurfacePolicy" } = {})`
109
+ - `resolveCrudSurfacePolicyFromAppConfig(sourceConfig = {}, appConfig = {}, options = {})`
110
+ - `resolveCrudConfigsFromModules(modulesSource = {})`
111
+ - `resolveCrudConfigFromModules(modulesSource = {}, options = {})`
112
+ Local functions
113
+ - `asRecord(value)`
114
+ - `resolveCrudTokenPart(namespace = "")`
115
+ - `resolveCrudToken(namespace = "", suffix = "")`
116
+ - `normalizeSurfaceDefinitions(sourceDefinitions = {})`
117
+ - `resolveOwnershipFilterFromSurfaceDefinition(definition = {})`
118
+
119
+ ### `src/server/fieldAccess.js`
120
+ Exports
121
+ - `createCrudFieldAccessRuntime(resource = {}, { context = "crudFieldAccess" } = {})`
122
+ - `createFieldAccessForRoleMatrix(matrix = {}, { context = "crudFieldAccess" } = {})`
123
+ Local functions
124
+ - `isSchemaNullable(schema = {})`
125
+ - `normalizeFieldSet(value, { context = "crudFieldAccess", label = "field list" } = {})`
126
+ - `resolveFieldSet(resolver, input = {}, { context = "crudFieldAccess", label = "field list" } = {})`
127
+ - `resolveWriteMode(fieldAccess = {}, { context = "crudFieldAccess" } = {})`
128
+ - `buildOutputFieldRules(resource = {})`
129
+ - `resolveRoleFromFieldAccessInput(input = {})`
130
+ - `resolveActionFromFieldAccessInput(input = {})`
131
+ - `resolveOperationPolicyValue(operationPolicy, input = {}, action = "*")`
132
+ - `resolveRoleMatrixPolicy(matrix = {}, operation = "readable", input = {})`
133
+ - `applyReadableFieldPolicyToRecord(record, allowedFields, outputRules = null, { context = "crudFieldAccess" } = {})`
134
+
135
+ ### `src/server/listQueryValidators.js`
136
+ Exports
137
+ - `createCrudCursorPaginationQueryValidator(list = {})`
138
+ - `listSearchQueryValidator`
139
+ - `lookupIncludeQueryValidator`
140
+ - `resolveCrudParentFilterKeys(resource = {})`
141
+ - `createCrudParentFilterQueryValidator(resource = {})`
142
+ Local functions
143
+ - `resolveCrudListUsesOrderedCursor(list = {})`
144
+
145
+ ### `src/server/lookupHydration.js`
146
+ Exports
147
+ - `createCrudLookupRuntime(resource = {}, { outputKeys = [] } = {})`
148
+ - `hydrateCrudLookupRecords(records = [], runtime = {}, { include, mode = "list", repositoryOptions = {}, callOptions = {} } = {})`
149
+ Local functions
150
+ - `normalizeLookupRelationEntry(entry = {}, outputKeys = new Set())`
151
+ - `normalizeLookupDefaultInclude(value)`
152
+ - `normalizeLookupMaxDepth(value)`
153
+ - `resolveLookupRuntimeDefaults(resource = {})`
154
+ - `normalizeLookupIdentifier(value)`
155
+ - `normalizeIncludePaths(include, { defaultInclude = DEFAULT_LOOKUP_INCLUDE } = {})`
156
+ - `resolveChildIncludeFromPaths(paths = [])`
157
+ - `buildLookupHydrationPlan(runtime = {}, include, { mode = "list", context = "crudRepository", includeWasExplicit = false, skippedNamespaces = new Set() } = {})`
158
+ - `resolveLookupProviderResolver(repositoryOptions = {}, callOptions = {}, { context = "crudRepository" } = {})`
159
+ - `resolveLookupDepthRuntime(runtime = {}, repositoryOptions = {}, callOptions = {})`
160
+ - `buildLookupGroupKey(relation = {})`
161
+ - `normalizeLookupRelationValues(records = [], entries = [], childIncludeByKey = {})`
162
+ - `resolveGroupChildInclude(group = {})`
163
+ - `normalizeLookupProvider(provider, relation = {}, { context = "crudRepository" } = {})`
164
+ - `resolveLookupProviderOwnershipFilter(provider = {}, { context = "crudRepository" } = {})`
165
+ - `resolveLookupVisibilityContext(provider = {}, relation = {}, callOptions = {}, { context = "crudRepository" } = {})`
166
+ - `buildLookupRecordMap(records = [], valueKey = "")`
167
+ - `buildLookupCollectionMap(records = [], foreignKey = "")`
168
+ - `resolveLookupVisitedNamespaces(runtime = {}, callOptions = {})`
169
+
170
+ ### `src/server/lookupPathSupport.js`
171
+ Exports
172
+ - `normalizeCrudLookupApiPath`
173
+ - `normalizeCrudLookupNamespace`
174
+ - `requireCrudLookupNamespace(value = "", { context = "crudLookupProvider" } = {})`
175
+ - `resolveCrudLookupNamespaceFromRelation(relation = {}, { context = "crudLookupProvider" } = {})`
176
+ - `resolveCrudLookupProviderToken(namespace = "", { context = "crudLookupProvider" } = {})`
177
+
178
+ ### `src/server/lookupProviders.js`
179
+ Exports
180
+ - `resolveCrudLookupProviderToken`
181
+ - `createCrudLookupProviderResolver(scope, { context = "crudLookupProvider" } = {})`
182
+ - `createCrudLookupProvider(repository, { context = "crudLookupProvider", ownershipFilter = "" } = {})`
183
+ Local functions
184
+ - `normalizeLookupProviderOwnershipFilter(value, { context = "crudLookupProvider ownershipFilter" } = {})`
185
+
186
+ ### `src/server/repositoryMethods.js`
187
+ Exports
188
+ - `createCrudRepositoryRuntime(resource = {}, { context = "crudRepository", list = {} } = {})`
189
+ - `crudRepositoryList(runtime, knex, query = {}, repositoryOptions = {}, callOptions = {}, hooks = null)`
190
+ - `crudRepositoryFindById(runtime, knex, recordId, repositoryOptions = {}, callOptions = {}, hooks = null)`
191
+ - `crudRepositoryListByIds(runtime, knex, ids = [], repositoryOptions = {}, callOptions = {}, hooks = null)`
192
+ - `crudRepositoryListByForeignIds(runtime, knex, ids = [], foreignKey = "", repositoryOptions = {}, callOptions = {}, hooks = null)`
193
+ - `crudRepositoryCreate(runtime, knex, payload = {}, repositoryOptions = {}, callOptions = {}, hooks = null)`
194
+ - `crudRepositoryUpdateById(runtime, knex, recordId, patch = {}, repositoryOptions = {}, callOptions = {}, hooks = null)`
195
+ - `crudRepositoryDeleteById(runtime, knex, recordId, repositoryOptions = {}, callOptions = {}, hooks = null)`
196
+ Local functions
197
+ - `requireCrudRecordId(value, { context = "crudRepository" } = {})`
198
+ - `resolveRepositoryDefaults(resource = {}, repositoryMapping = {})`
199
+ - `normalizeSearchColumns(searchColumns = [], fallbackColumns = [])`
200
+ - `normalizeListOrderDirection(value = LIST_ORDER_DIRECTION_ASC)`
201
+ - `normalizeListOrderNulls(value = LIST_ORDER_NULLS_LAST)`
202
+ - `normalizeListOrderBy(orderBy = [], { idColumn = "id" } = {})`
203
+ - `resolveListRuntimeConfig(list = {}, fallbackSearchColumns = [], { idColumn = "id" } = {})`
204
+ - `encodeOrderedListCursorValue(value = null)`
205
+ - `decodeOrderedListCursorValue(value = null)`
206
+ - `encodeOrderedListCursor(row = null, orderBy = [])`
207
+ - `decodeOrderedListCursor(cursor = "", orderBy = [])`
208
+ - `applyOrderedListCursorEquality(query, descriptor = {}, value = null)`
209
+ - `applyOrderedListCursorAfterBranch(query, descriptor = {}, value = null)`
210
+ - `canApplyOrderedListCursorAfterBranch(descriptor = {}, value = null)`
211
+ - `appendOrderedListCursorBranches(query, orderBy = [], cursorValues = [], index = 0, { useOr = false } = {})`
212
+ - `applyOrderedListCursorFilter(query, { orderBy = [], cursor = "" } = {})`
213
+ - `resolveRecordOutputValidator(resource = {}, { context = "crudRepository" } = {})`
214
+ - `formatOutputValidationError(error = {})`
215
+ - `normalizeRepositoryOutputRecord(runtime, record = {}, { operation = "read" } = {})`
216
+ - `resolveCrudRepositoryCall(runtime, knex, repositoryOptions = {}, callOptions = {})`
217
+ - `normalizeCrudRepositoryHooks(hooks = null, allowedHookKeys = [], { context = "crudRepository" } = {})`
218
+ - `resolveOptionalCrudRepositoryHook(hooks = {}, hookKey = "", { context = "crudRepository" } = {})`
219
+ - `applyCrudRepositoryQueryHook(dbQuery, hook = null, hookContext = {}, { context = "crudRepository", hookKey = "modifyQuery" } = {})`
220
+ - `normalizeCrudRepositoryObjectInput(value = {})`
221
+ - `applyCrudRepositoryPayloadHook(payload = {}, hook = null, hookContext = {}, { context = "crudRepository", hookKey = "modifyPayload" } = {})`
222
+ - `applyCrudRepositoryRecordsHook(items = [], hook = null, hookContext = {}, { context = "crudRepository", hookKey = "afterQuery" } = {})`
223
+ - `applyCrudRepositoryRecordHook(record = null, hook = null, hookContext = {}, { context = "crudRepository", hookKey = "transformReturnedRecord" } = {})`
224
+ - `applyCrudRepositoryOutputHook(output, hook = null, hookContext = {}, { context = "crudRepository", hookKey = "finalizeOutput", validateOutput = null } = {})`
225
+ - `applyCrudRepositoryAfterWriteHook(meta = {}, hook = null, hookContext = {}, { context = "crudRepository", hookKey = "afterWrite" } = {})`
226
+ - `applyOrderedListControls(dbQuery, orderBy = [])`
227
+ - `enforceCrudRepositoryListControls(dbQuery, { idColumn = "id", limit = DEFAULT_LIST_LIMIT + 1, orderBy = [] } = {})`
228
+ - `createCrudRepositoryHookContextBase(runtime, repositoryOptions = {}, callOptions = {})`
229
+
230
+ ### `src/server/repositorySupport.js`
231
+ Exports
232
+ - `DEFAULT_LIST_LIMIT`
233
+ - `MAX_LIST_LIMIT`
234
+ - `normalizeCrudListLimit(value, { fallback = DEFAULT_LIST_LIMIT, max = MAX_LIST_LIMIT } = {})`
235
+ - `normalizeCrudListCursor(cursor = null, { allowEmpty = true } = {})`
236
+ - `requireCrudTableName(tableName, { context = "crudRepository" } = {})`
237
+ - `deriveRepositoryMappingFromResource(resource = {}, { context = "crudRepository" } = {})`
238
+ - `applyCrudListQueryFilters(query, { idColumn = "id", cursor = "", applyCursor = true, q = "", searchColumns = [], parentFilters = {}, parentFilterColumns = {} } = {})`
239
+ - `mapRecordRow(row, fieldKeys = [], overrides = {}, { recordIdKeys = [] } = {})`
240
+ - `buildWritePayload(sourcePayload = {}, fieldKeys = [], overrides = {})`
241
+ - `resolveColumnName(fieldKey, overrides = {})`
242
+ - `resolveCrudIdColumn(idColumn, { fallback = "id" } = {})`
243
+ - `buildRepositoryColumnMetadata({ outputKeys = [], writeKeys = [], columnOverrides = {} } = {})`
244
+ Local functions
245
+ - `requireObjectSchemaProperties(schema, { context = "crudRepository", schemaLabel = "schema" } = {})`
246
+ - `normalizeResourceFieldMetaEntries(fieldMeta = [])`
247
+ - `schemaIncludesStringType(schema = {})`
248
+ - `schemaIncludesRecordIdType(schema = {})`
249
+
250
+ ### `src/server/serviceEvents.js`
251
+ Exports
252
+ - `createCrudServiceEvents(resource = {}, { context = "crudService" } = {})`
253
+
254
+ ### `src/server/serviceMethods.js`
255
+ Exports
256
+ - `createCrudServiceRuntime(resource = {}, { context = "crudService" } = {})`
257
+ - `crudServiceListRecords(runtime, repository, fieldAccess = {}, query = {}, options = {})`
258
+ - `crudServiceGetRecord(runtime, repository, fieldAccess = {}, recordId, options = {})`
259
+ - `crudServiceCreateRecord(runtime, repository, fieldAccess = {}, payload = {}, options = {})`
260
+ - `crudServiceUpdateRecord(runtime, repository, fieldAccess = {}, recordId, payload = {}, options = {})`
261
+ - `crudServiceDeleteRecord(runtime, repository, fieldAccess = {}, recordId, options = {})`
262
+ Local functions
263
+ - `requireCrudServiceRepository(runtime = {}, repository = null)`
264
+
265
+ ### `src/shared/crudFieldMetaSupport.js`
266
+ Exports
267
+ - `CRUD_LOOKUP_FORM_CONTROL_AUTOCOMPLETE`
268
+ - `CRUD_LOOKUP_FORM_CONTROL_SELECT`
269
+ - `CRUD_RUNTIME_LOOKUPS_FIELD_KEY`
270
+ - `checkCrudLookupFormControl(value, { context = "crud fieldMeta ui.formControl", defaultValue = CRUD_LOOKUP_FORM_CONTROL_AUTOCOMPLETE } = {})`
271
+ - `isCrudRuntimeOutputOnlyFieldKey(value = "", { lookupContainerKey = CRUD_RUNTIME_LOOKUPS_FIELD_KEY } = {})`
272
+
273
+ ### `src/shared/crudNamespaceSupport.js`
274
+ Exports
275
+ - `normalizeCrudNamespace(value = "")`
276
+ - `requireCrudNamespace(namespace, { context = "requireCrudNamespace" } = {})`
277
+ - `resolveCrudRecordChangedEvent(namespace = "")`
278
+
279
+ ### root
280
+
281
+ ### `package.descriptor.mjs`
282
+ Exports
283
+ - None
@@ -0,0 +1,220 @@
1
+ # packages/crud-server-generator
2
+
3
+ Generated by `npm run agent-docs:build`.
4
+ Do not edit manually.
5
+
6
+ Generated inventory for `packages/crud-server-generator`.
7
+ Use this on demand; do not load the full index at startup.
8
+
9
+ ## Scope
10
+ - Source: `packages/crud-server-generator/**/*{.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/buildTemplateContext.js`
18
+ Exports
19
+ - `buildTemplateContext(input = {})`
20
+ - `resolveScaffoldColumns(snapshot)`
21
+ - `renderPropertyAccess(sourceName, key)`
22
+ - `resolveGenerationSnapshot({ appRoot, tableName, idColumnOption } = {})`
23
+ - `renderResourceFieldSchema(column, { forOutput = false } = {})`
24
+ - `renderInputNormalizer(column)`
25
+ - `renderOutputNormalizerExpression(column)`
26
+ - `buildFieldMetaEntries({ outputColumns = [], writableColumns = [], snapshot = {} } = {})`
27
+ - `resolveCrudGenerationSurfaceId({ appRoot, options } = {})`
28
+ - `__testables`
29
+ Local functions
30
+ - `resolveAllowedValues(schema = {}, fallbackValues = [])`
31
+ - `resolveGlobalScaffoldCache()`
32
+ - `asRecord(value)`
33
+ - `normalizeRequestedOwnershipFilter(value, { strict = false } = {})`
34
+ - `inferOwnershipFilterFromSnapshot(snapshot)`
35
+ - `assertOwnershipColumnsForFilter(snapshot, filter)`
36
+ - `resolveOwnershipFilterForGeneration(snapshot, requestedOwnershipFilter, { enforceTableColumns = false } = {})`
37
+ - `parseDotEnvLine(line = "")`
38
+ - `loadEnvFromApp(appRoot)`
39
+ - `createAppRequire(appRoot)`
40
+ - `importModuleFromApp(appRequire, moduleId, contextLabel)`
41
+ - `resolveCrudSurfaceRequiresWorkspace({ appRoot, options, surface = "" } = {})`
42
+ - `loadCrudAppConfig(appRoot = "")`
43
+ - `resolveSurfaceDefinitions(appConfig = {})`
44
+ - `resolveDefaultCrudSurfaceIdFromAppConfig(appConfig = {})`
45
+ - `resolveKnexFactory(moduleNamespace)`
46
+ - `resolveMysqlSnapshotFromDatabase({ appRoot, tableName, idColumn } = {})`
47
+ - `resolveColumnKey(column, idColumn)`
48
+ - `isIdentifier(value)`
49
+ - `renderObjectPropertyKey(value)`
50
+ - `renderIntegerSchema(column)`
51
+ - `renderStringSchema(column, { forOutput = false } = {})`
52
+ - `renderResourceValidatorsImport({ needsHtmlTimeSchemas = false, needsRecordIdSchemas = false } = {})`
53
+ - `renderResourceSchemaPropertyLines(columns, { forOutput = false } = {})`
54
+ - `renderResourceInputNormalizationLines(columns)`
55
+ - `renderResourceOutputNormalizationLines(columns)`
56
+ - `renderResourceDatabaseRuntimeImport({ needsToIsoString = false, needsToDatabaseDateTimeUtc = false } = {})`
57
+ - `renderResourceJsonImport({ needsJson = false } = {})`
58
+ - `renderResourceNormalizeSupportImport({ needsNormalizeText = false, needsNormalizeBoolean = false, needsNormalizeFiniteNumber = false, needsNormalizeFiniteInteger = false, needsNormalizeRecordId = false, needsNormalizeIfInSource = false, needsNormalizeIfPresent = false, needsNormalizeOrNull = false } = {})`
59
+ - `renderMigrationDefaultClause(column)`
60
+ - `renderMigrationSpecificStringType(column, { tableCollation = "" } = {})`
61
+ - `renderTemporalColumnBuilder(column, methodName)`
62
+ - `renderMigrationColumnLine(column, { idColumn = DEFAULT_ID_COLUMN, primaryKeyColumns = [], foreignKeyColumnNames = new Set(), tableCollation = "" } = {})`
63
+ - `renderMigrationColumnLines(snapshot)`
64
+ - `renderMigrationIndexLine(index)`
65
+ - `renderMigrationIndexLines(snapshot)`
66
+ - `renderMigrationForeignKeyLine(foreignKey = {})`
67
+ - `renderMigrationForeignKeyLines(snapshot)`
68
+ - `renderMigrationCheckConstraintLines(snapshot)`
69
+ - `mergeFieldMetaEntries(...entryGroups)`
70
+ - `resolveLookupNamespaceFromTableName(tableName = "")`
71
+ - `toFieldLabel(key = "")`
72
+ - `isSupportedSelectOptionValue(value)`
73
+ - `toSelectOptionIdentity(value)`
74
+ - `toSelectOptionLabel(value)`
75
+ - `normalizeFieldMetaUiOptions(rawOptions = [])`
76
+ - `resolveEnumFieldMetaUiOptions(enumValues = [])`
77
+ - `renderFieldMetaEntryLines(entry = {})`
78
+ - `renderResourceFieldMetaPushLines(entries = [])`
79
+ - `renderRepositoryListConfigLines(snapshot = {})`
80
+ - `buildCrudPermissionIds(namespace = "")`
81
+ - `normalizeCrudOperation(operation = "", context = "CRUD operation")`
82
+ - `renderRoleCatalogPermissionGrants(namespace = "", { requiresNamedPermissions = true } = {})`
83
+ - `renderActionPermissionSupport(namespace = "", { requiresNamedPermissions = true } = {})`
84
+ - `renderActionPermissionExpression(operation = "", { requiresNamedPermissions = true } = {})`
85
+ - `renderRouteWorkspaceSupportImports({ surfaceRequiresWorkspace = true } = {})`
86
+ - `renderActionWorkspaceValidatorImport({ surfaceRequiresWorkspace = true } = {})`
87
+ - `renderRouteParamsValidatorLine(operation = "", { surfaceRequiresWorkspace = true } = {})`
88
+ - `renderRouteInputLines(operation = "", { surfaceRequiresWorkspace = true } = {})`
89
+ - `renderActionInputValidatorExpression(operation = "", { surfaceRequiresWorkspace = true } = {})`
90
+ - `buildReplacementsFromSnapshot({ namespace = "", snapshot, resolvedOwnershipFilter, surfaceRequiresWorkspace = true, surfaceId = "" })`
91
+ - `resolveCrudGenerationTableName(options = {})`
92
+ - `createCacheKey({ appRoot, options })`
93
+ - `buildCrudTemplateContext(input = {})`
94
+
95
+ ### `src/server/crudModuleConfig.js`
96
+ Exports
97
+ - None
98
+
99
+ ### `src/server/CrudProvider.js`
100
+ Exports
101
+ - `CrudProvider`
102
+
103
+ ### `src/server/subcommands/addField.js`
104
+ Exports
105
+ - `runGeneratorSubcommand({ appRoot, subcommand = "", args = [], options = {}, dryRun = false, resolveSnapshot = resolveGenerationSnapshot } = {})`
106
+ Local functions
107
+ - `toPosixPath(value = "")`
108
+ - `resolveTargetFilePath(appRoot, targetFile)`
109
+ - `parseSubcommandArgs(args = [])`
110
+ - `resolveRequestedTableConfig(source = "", options = {}, context = "crud-server-generator scaffold-field")`
111
+ - `resolveColumnForField(snapshot = {}, fieldKey = "", { idColumn = "id" } = {})`
112
+ - `buildFieldMetaEntry(snapshot = {}, column = {})`
113
+ - `collectKnownIdentifiers(expression = "")`
114
+ - `resolveImportsForField({ inputNormalizationExpression = "", outputNormalizationExpression = "" } = {})`
115
+ - `resolveOutputNormalizationExpression(column = {})`
116
+
117
+ ### `src/server/subcommands/resourceAst.js`
118
+ Exports
119
+ - `resolveCrudResourceDefaults(source = "", context = "crud-server-generator scaffold-field")`
120
+ - `applyCrudResourceFieldPatch(source = "", { fieldKey = "", outputSchemaExpression = "", createSchemaExpression = "", outputNormalizationExpression = "", inputNormalizationExpression = "", fieldMetaEntry = null, normalizeImportNames = [], databaseRuntimeImportNames = [], databaseRuntimeRepositoryOptionsImportNames = [], context = "crud-server-generator scaffold-field" } = {})`
121
+ Local functions
122
+ - `isIdentifierName(value = "")`
123
+ - `parseModule(source = "", context = "crud-server-generator scaffold-field")`
124
+ - `parseExpression(source = "", context = "crud-server-generator scaffold-field")`
125
+ - `parseStatement(source = "", context = "crud-server-generator scaffold-field")`
126
+ - `resolveNodeKeyName(keyNode, { computed = false } = {})`
127
+ - `createObjectPropertyKeyNode(key = "")`
128
+ - `findVariableDeclarator(programNode, variableName = "")`
129
+ - `requireVariableDeclarator(programNode, variableName = "", context = "crud-server-generator scaffold-field")`
130
+ - `requireSchemaPropertiesObject(programNode, variableName = "", context = "crud-server-generator scaffold-field")`
131
+ - `requireObjectFreezePayloadObject(programNode, variableName = "", context = "crud-server-generator scaffold-field")`
132
+ - `findObjectPropertyByName(objectNode, propertyName = "")`
133
+ - `requireNormalizeFunctionBody(programNode, variableName = "", context = "crud-server-generator scaffold-field")`
134
+ - `requireNormalizedObjectLiteral(functionBody, context = "crud-server-generator scaffold-field")`
135
+ - `hasObjectProperty(objectNode, propertyName = "")`
136
+ - `insertObjectProperty(objectNode, propertyName = "", valueExpressionSource = "", { context = "crud-server-generator scaffold-field", insertBeforeComputed = false } = {})`
137
+ - `hasNormalizeIfInSourceCall(functionBody, fieldKey = "")`
138
+ - `resolveReturnNormalizedIndex(functionBody)`
139
+ - `hasResourceFieldMetaEntry(programNode, fieldKey = "")`
140
+ - `sortImportSpecifiers(importDeclaration)`
141
+ - `ensureNamedImport(programNode, modulePath = "", importName = "")`
142
+ - `resolveObjectPropertyStringValue(objectNode, propertyName = "")`
143
+ - `renderResourceFieldMetaPushStatement(entry = {})`
144
+
145
+ ### `src/shared/crud/crudResource.js`
146
+ Exports
147
+ - `crudResource`
148
+
149
+ ### `src/shared/index.js`
150
+ Exports
151
+ - `crudResource`
152
+
153
+ ### templates
154
+
155
+ ### `templates/migrations/crud_initial.cjs`
156
+ Exports
157
+ - None
158
+
159
+ ### `templates/src/local-package/package.descriptor.mjs`
160
+ Exports
161
+ - None
162
+
163
+ ### `templates/src/local-package/server/actionIds.js`
164
+ Exports
165
+ - `actionIds`
166
+
167
+ ### `templates/src/local-package/server/actions.js`
168
+ Exports
169
+ - `createActions({ surface = "" } = {})`
170
+ Local functions
171
+ - `requireActionSurface(surface = "")`
172
+
173
+ ### `templates/src/local-package/server/CrudProvider.js`
174
+ Exports
175
+ - `${option:namespace|pascal`
176
+ Local functions
177
+ - `resolveCrudPolicyFromApp(app)`
178
+
179
+ ### `templates/src/local-package/server/listConfig.js`
180
+ Exports
181
+ - `LIST_CONFIG`
182
+
183
+ ### `templates/src/local-package/server/registerRoutes.js`
184
+ Exports
185
+ - `registerRoutes(app, { routeOwnershipFilter = "public", routeSurface = "", routeRelativePath = "" } = {})`
186
+
187
+ ### `templates/src/local-package/server/repository.js`
188
+ Exports
189
+ - `createRepository(knex, options = {})`
190
+
191
+ ### `templates/src/local-package/server/service.js`
192
+ Exports
193
+ - `createService({ ${option:namespace|camel}Repository, fieldAccess = DEFAULT_FIELD_ACCESS } = {})`
194
+ - `serviceEvents`
195
+
196
+ ### `templates/src/local-package/shared/crudResource.js`
197
+ Exports
198
+ - `resource`
199
+
200
+ ### `templates/src/local-package/shared/index.js`
201
+ Exports
202
+ - `resource`
203
+
204
+ ### root
205
+
206
+ ### `package.descriptor.mjs`
207
+ Exports
208
+ - None
209
+
210
+ ### test-support
211
+
212
+ ### `test-support/templateServerFixture.js`
213
+ Exports
214
+ - `resource`
215
+ - `createTemplateServerFixture(options = {})`
216
+ Local functions
217
+ - `buildTemplateReplacements({ surfaceRequiresWorkspace = true, requiresNamedPermissions = surfaceRequiresWorkspace === true, surfaceId = surfaceRequiresWorkspace ? "admin" : "home" } = {})`
218
+ - `applyTemplateReplacements(sourceText = "", options = {})`
219
+ - `buildResourceStubSource()`
220
+ - `renderServerTemplateFile(targetServerDirectory, fileName, options)`
@@ -0,0 +1,154 @@
1
+ # packages/crud-ui-generator
2
+
3
+ Generated by `npm run agent-docs:build`.
4
+ Do not edit manually.
5
+
6
+ Generated inventory for `packages/crud-ui-generator`.
7
+ Use this on demand; do not load the full index at startup.
8
+
9
+ ## Scope
10
+ - Source: `packages/crud-ui-generator/**/*{.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/buildTemplateContext.js`
18
+ Exports
19
+ - `buildUiTemplateContext({ appRoot, options } = {})`
20
+ Local functions
21
+ - `resolveAllowedValues(schema = {}, fallbackValues = [])`
22
+ - `splitTextIntoWords(value = "")`
23
+ - `wordsToKebab(words = [])`
24
+ - `wordsToTitle(words = [])`
25
+ - `toSingularKebab(value = "")`
26
+ - `toPluralKebab(value = "")`
27
+ - `toTitleFromKebab(value = "", fallback = "")`
28
+ - `normalizeRelativeAppPath(value = "")`
29
+ - `requireTargetRootOption(options = {})`
30
+ - `resolveListTargetFile(targetRoot = "")`
31
+ - `parseOperationsOption(options)`
32
+ - `parseDisplayFieldsOption(options)`
33
+ - `validateDisplayFieldsForOperation(selectedFieldKeys, fields, operationName)`
34
+ - `filterDisplayFields(selectedFieldKeys, fields)`
35
+ - `filterDefaultHiddenListFields(selectedFieldKeys, fields, { recordIdFieldKey = "" } = {})`
36
+ - `ensureFields(fields, fallbackFields = createFieldDefinitions({}))`
37
+ - `resolveViewTitleFallbackFieldKey(fields = [])`
38
+ - `resolveResourceNamespace(resource = {}, pageTarget = {}, options = {})`
39
+ - `resolveResourceLabels(namespace = "", pageTarget = {})`
40
+ - `resolveTargetRootRelativeRoutePath(pageTarget = {})`
41
+ - `resolveMenuToPropLine(linkTo = "")`
42
+ - `resolveCrudRelativePath(namespace = "")`
43
+
44
+ ### `src/server/resourceSupport.js`
45
+ Exports
46
+ - `normalizeText`
47
+ - `requireOption(options, optionName, { context = "ui-generator" } = {})`
48
+ - `resolveResourceModulePath(appRoot, resourceFile, { context = "ui-generator" } = {})`
49
+ - `loadResourceDefinition({ appRoot, options = {}, context = "ui-generator" } = {})`
50
+ - `requireOperation(resource, operationName, { context = "ui-generator" } = {})`
51
+ - `resolveOperationRealtimeEvents(operation = {}, { defaultEvents = [], context = "ui-generator" } = {})`
52
+ - `requireOutputSchema(operation, operationName, { context = "ui-generator" } = {})`
53
+ - `requireBodySchema(operation, operationName, { context = "ui-generator" } = {})`
54
+ - `requireObjectProperties(schema, contextLabel, { context = "ui-generator" } = {})`
55
+ - `resolveListItemProperties(listOutputSchema, { context = "ui-generator" } = {})`
56
+ - `resolveLookupContainerKey(resource = {}, { context = "ui-generator" } = {})`
57
+ - `buildResourceFieldMetaMap(resource = {})`
58
+ - `createFieldDefinitions(properties = {}, { fieldMetaMap = {}, lookupContainerKey = "lookups" } = {})`
59
+ - `createFormFieldDefinitions(properties = {}, { fieldMetaMap = {}, lookupContainerKey = "lookups", parentRouteParamKey = "" } = {})`
60
+ - `resolveNearestParentRouteParamKey(routePath = "", { recordIdParam = "recordId" } = {})`
61
+ - `buildListHeaderColumns(fields = [])`
62
+ - `buildListRowColumns(fields = [])`
63
+ - `buildViewColumns(fields = [])`
64
+ - `buildFormColumns(fields = [])`
65
+ - `resolveRecordIdFieldKey(fields = [])`
66
+ - `renderObjectPushLines(arrayName, entries = [])`
67
+ - `resolveRecordChangedEventName`
68
+ - `resolveRecordIdExpression(fields = [])`
69
+ Local functions
70
+ - `normalizeRealtimeEventList(events = [])`
71
+ - `resolveUnionSchemaVariant(schema = {})`
72
+ - `resolveSchemaType(schema)`
73
+ - `toFieldLabel(key)`
74
+ - `isSupportedSelectOptionValue(value)`
75
+ - `toSelectOptionLabel(value)`
76
+ - `toSelectOptionIdentity(value)`
77
+ - `normalizeFieldUiOptions(rawOptions, { context = "resource fieldMeta ui.options" } = {})`
78
+ - `stripLookupIdSuffix(key = "")`
79
+ - `resolveFieldLabel(key = "", relation = null)`
80
+ - `extractDynamicRouteParamKeys(routePath = "")`
81
+ - `normalizeLookupRelation(relation = {})`
82
+ - `toLookupRelation(fieldMetaMap = {}, fieldKey = "", { lookupContainerKey = "lookups" } = {})`
83
+ - `resolveFormInputType(fieldType, fieldFormat)`
84
+ - `resolveFormFieldComponent(fieldType, relation = null)`
85
+ - `toPositiveInteger(value)`
86
+ - `toAccessorExpression(baseName, fieldKey)`
87
+ - `toOptionalAccessorExpression(baseName, fieldKey)`
88
+ - `escapeHtml(value)`
89
+ - `serializeTemplateBindingValue(value)`
90
+ - `isLookupField(field = {})`
91
+ - `toLookupDisplayFieldDescriptor(field = {})`
92
+ - `toLookupDisplayFieldExpression(field = {})`
93
+
94
+ ### `src/server/subcommands/addField.js`
95
+ Exports
96
+ - `runGeneratorSubcommand({ appRoot, subcommand = "", args = [], options = {}, dryRun = false } = {})`
97
+ Local functions
98
+ - `toPosixPath(value = "")`
99
+ - `resolveOperation(rawOperation = "")`
100
+ - `resolveTargetFilePath(appRoot, targetFile)`
101
+ - `resolvePathWithinAppRoot(appRoot, absolutePath)`
102
+ - `inferResourceOptionsFromSource(screenSource = "")`
103
+ - `resolveResourceOptions(options = {}, inferredOptions = {})`
104
+ - `resolveOperationFields(resource, operationName)`
105
+ - `resolveFieldDefinition(fields = [], fieldKey = "")`
106
+ - `insertBeforeAnchor(source, { anchor = "", snippet = "" } = {})`
107
+ - `resolveAnchorScopeStart(source = "", { anchorIndex = -1, anchor = "" } = {})`
108
+ - `buildAnchorInsertions(operationName, field)`
109
+ - `resolveGeneratedTargetComment(source = "", commentName = "")`
110
+ - `resolveOperationTargetFiles({ appRoot, operationName, targetAbsolutePath, source = "" } = {})`
111
+ - `parseSubcommandArgs(args = [])`
112
+
113
+ ### templates
114
+
115
+ ### `templates/src/pages/admin/ui-generator/AddEditForm.vue`
116
+ Exports
117
+ - None
118
+ Local functions
119
+ - `resolveCancelTo(target)`
120
+
121
+ ### `templates/src/pages/admin/ui-generator/AddEditFormFields.js`
122
+ Exports
123
+ - `UI_CREATE_FORM_FIELDS`
124
+ - `UI_EDIT_FORM_FIELDS`
125
+
126
+ ### `templates/src/pages/admin/ui-generator/EditElement.vue`
127
+ Exports
128
+ - None
129
+
130
+ ### `templates/src/pages/admin/ui-generator/EditWrapperElement.vue`
131
+ Exports
132
+ - None
133
+
134
+ ### `templates/src/pages/admin/ui-generator/ListElement.vue`
135
+ Exports
136
+ - None
137
+
138
+ ### `templates/src/pages/admin/ui-generator/NewElement.vue`
139
+ Exports
140
+ - None
141
+
142
+ ### `templates/src/pages/admin/ui-generator/NewWrapperElement.vue`
143
+ Exports
144
+ - None
145
+
146
+ ### `templates/src/pages/admin/ui-generator/ViewElement.vue`
147
+ Exports
148
+ - None
149
+
150
+ ### root
151
+
152
+ ### `package.descriptor.mjs`
153
+ Exports
154
+ - None