@jskit-ai/agent-docs 0.1.256 → 0.1.258

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 (230) hide show
  1. package/guide/agent/app-extras/assistant-conversation.md +88 -35
  2. package/guide/agent/app-extras/assistant.md +28 -28
  3. package/guide/agent/app-setup/authentication.md +36 -17
  4. package/guide/agent/app-setup/database-layer.md +116 -17
  5. package/guide/agent/app-setup/existing-application-migration.md +29 -25
  6. package/guide/agent/app-setup/multi-homing.md +94 -48
  7. package/guide/agent/app-setup/run-an-accounts-hub.md +6 -4
  8. package/guide/agent/framework/client-features.md +496 -0
  9. package/guide/agent/framework/crud-operations.md +5 -5
  10. package/guide/agent/framework/translation.md +4 -3
  11. package/guide/agent/framework/typed-features.md +1104 -0
  12. package/guide/agent/framework/ui-operations.md +2 -2
  13. package/guide/agent/index.md +6 -1
  14. package/package.json +1 -1
  15. package/patterns/feature-package/PATTERN.md +104 -10
  16. package/patterns/feature-package/example/booking-engine/package.json +9 -4
  17. package/patterns/feature-package/example/booking-engine/src/server/BookingEngineFeature.js +24 -0
  18. package/patterns/feature-package/example/booking-engine/src/server/bookingAvailability.js +10 -0
  19. package/patterns/feature-package/example/booking-engine/src/server/bookingEngine.js +29 -0
  20. package/patterns/feature-package/example/booking-engine/src/server/bookingEngineActions.js +26 -0
  21. package/patterns/feature-package/example/booking-engine/src/server/inputSchemas.js +1 -2
  22. package/patterns/feature-package/example/booking-engine/src/server/types.js +12 -0
  23. package/patterns/feature-package/example/variations/AvailabilityEngineFeature.js +19 -0
  24. package/patterns/feature-package/example/variations/InvoiceRollupFeature.js +23 -0
  25. package/patterns/feature-package/example/variations/availabilityEngineActions.js +26 -0
  26. package/patterns/feature-package/example/variations/customKnexRepository.js +32 -26
  27. package/patterns/feature-package/example/variations/invoiceRollupActions.js +26 -0
  28. package/patterns/feature-package/example/variations/orchestratorService.js +24 -19
  29. package/patterns/feature-package/example/variations/types.js +7 -0
  30. package/patterns/minimal-foundation/PATTERN.md +30 -1
  31. package/patterns/minimal-foundation/example/AGENTS.md +14 -0
  32. package/patterns/minimal-foundation/example/bin/develop.js +10 -5
  33. package/patterns/minimal-foundation/example/eslint.config.mjs +21 -2
  34. package/patterns/minimal-foundation/example/package.json +5 -4
  35. package/patterns/minimal-foundation/example/playwright.config.mjs +1 -1
  36. package/patterns/minimal-foundation/example/server/lib/envFile.js +19 -0
  37. package/patterns/minimal-foundation/example/server/lib/loggerOptions.js +15 -0
  38. package/patterns/minimal-foundation/example/server/lib/runtimeEnv.js +17 -17
  39. package/patterns/minimal-foundation/example/server.js +32 -29
  40. package/patterns/minimal-foundation/example/tests/server/smoke.test.js +2 -1
  41. package/patterns/shell-foundation/PATTERN.md +29 -0
  42. package/patterns/shell-foundation/example/AGENTS.md +14 -0
  43. package/patterns/shell-foundation/example/bin/develop.js +10 -5
  44. package/patterns/shell-foundation/example/eslint.config.mjs +21 -2
  45. package/patterns/shell-foundation/example/package.json +6 -5
  46. package/patterns/shell-foundation/example/packages/main/package.json +1 -1
  47. package/patterns/shell-foundation/example/packages/main/src/client/providers/MainClientProvider.js +1 -0
  48. package/patterns/shell-foundation/example/playwright.config.mjs +1 -1
  49. package/patterns/shell-foundation/example/server/lib/envFile.js +19 -0
  50. package/patterns/shell-foundation/example/server/lib/loggerOptions.js +15 -0
  51. package/patterns/shell-foundation/example/server/lib/runtimeEnv.js +17 -17
  52. package/patterns/shell-foundation/example/server.js +32 -29
  53. package/patterns/shell-foundation/example/tests/server/smoke.test.js +2 -1
  54. package/reference/autogen/KERNEL_MAP.md +14 -8
  55. package/reference/autogen/PATTERN_INDEX.md +37 -37
  56. package/reference/autogen/README.md +2 -0
  57. package/reference/autogen/packages/agent-docs.md +70 -26
  58. package/reference/autogen/packages/agent-runtime.md +129 -0
  59. package/reference/autogen/packages/agent.md +149 -0
  60. package/reference/autogen/packages/architecture-inspector.md +97 -44
  61. package/reference/autogen/packages/assistant-core.md +786 -292
  62. package/reference/autogen/packages/assistant-runtime.md +182 -57
  63. package/reference/autogen/packages/assistant-voice-sherpa.md +4 -0
  64. package/reference/autogen/packages/assistant-voice.md +54 -8
  65. package/reference/autogen/packages/auth-core.md +44 -13
  66. package/reference/autogen/packages/auth-provider-local-core.md +86 -34
  67. package/reference/autogen/packages/auth-provider-local-db-core.md +1 -2
  68. package/reference/autogen/packages/auth-provider-oidc-core.md +10 -4
  69. package/reference/autogen/packages/auth-provider-supabase-core.md +52 -66
  70. package/reference/autogen/packages/auth-web.md +19 -11
  71. package/reference/autogen/packages/connectors-catalog.md +71 -43
  72. package/reference/autogen/packages/connectors-core.md +42 -4
  73. package/reference/autogen/packages/console-core.md +27 -14
  74. package/reference/autogen/packages/crud-core.md +178 -170
  75. package/reference/autogen/packages/database-runtime-mysql.md +0 -2
  76. package/reference/autogen/packages/database-runtime-postgres.md +0 -2
  77. package/reference/autogen/packages/database-runtime.md +39 -10
  78. package/reference/autogen/packages/http-runtime.md +79 -57
  79. package/reference/autogen/packages/json-rest-api-core.md +11 -8
  80. package/reference/autogen/packages/kernel.md +144 -83
  81. package/reference/autogen/packages/oidc-issuer-core.md +49 -20
  82. package/reference/autogen/packages/payments-core.md +20 -3
  83. package/reference/autogen/packages/realtime.md +47 -22
  84. package/reference/autogen/packages/resource-core.md +1 -1
  85. package/reference/autogen/packages/resource-crud-core.md +64 -26
  86. package/reference/autogen/packages/rewarded-core.md +47 -36
  87. package/reference/autogen/packages/shell-web.md +7 -10
  88. package/reference/autogen/packages/storage-runtime.md +6 -2
  89. package/reference/autogen/packages/uploads-runtime.md +10 -2
  90. package/reference/autogen/packages/users-core.md +73 -71
  91. package/reference/autogen/packages/workspaces-core.md +121 -106
  92. package/reference/autogen/packages/workspaces-web.md +1 -2
  93. package/reference/autogen/tooling/config-eslint.md +302 -0
  94. package/reference/autogen/tooling/jskit-catalog.md +28 -18
  95. package/reference/autogen/tooling/jskit-release.md +35 -20
  96. package/reference/autogen/tooling/testUtils.md +3 -1
  97. package/skills/jskit/SKILL.md +3 -2
  98. package/skills/jskit/references/app-operations.md +1 -1
  99. package/skills/jskit/references/client-features.md +491 -0
  100. package/skills/jskit/references/crud-form-actions.md +1 -1
  101. package/skills/jskit/references/crud-operations.md +7 -7
  102. package/skills/jskit/references/existing-application-migration.md +31 -27
  103. package/skills/jskit/references/heuristics/INDEX.md +5 -1
  104. package/skills/jskit/references/heuristics/child-cruds.md +1 -1
  105. package/skills/jskit/references/heuristics/client-features.md +66 -0
  106. package/skills/jskit/references/heuristics/client-requests.md +1 -1
  107. package/skills/jskit/references/heuristics/crud-authoring.md +12 -2
  108. package/skills/jskit/references/heuristics/crud-links.md +1 -1
  109. package/skills/jskit/references/heuristics/crud-repository-mapping.md +3 -3
  110. package/skills/jskit/references/heuristics/filters.md +1 -1
  111. package/skills/jskit/references/heuristics/live-actions.md +1 -1
  112. package/skills/jskit/references/heuristics/page-redirects.md +1 -1
  113. package/skills/jskit/references/heuristics/page-scaffolding.md +1 -1
  114. package/skills/jskit/references/heuristics/placements.md +1 -1
  115. package/skills/jskit/references/heuristics/row-policies.md +1 -1
  116. package/skills/jskit/references/heuristics/server-search.md +1 -1
  117. package/skills/jskit/references/heuristics/surfaces.md +1 -1
  118. package/skills/jskit/references/heuristics/typed-features.md +100 -0
  119. package/skills/jskit/references/heuristics/ui-contract.md +1 -1
  120. package/skills/jskit/references/heuristics/ui-testing.md +4 -4
  121. package/skills/jskit/references/material-3.md +2 -2
  122. package/skills/jskit/references/multi-homing.md +96 -50
  123. package/skills/jskit/references/pattern-index.md +37 -37
  124. package/skills/jskit/references/patterns/app/minimal-foundation/PATTERN.md +30 -1
  125. package/skills/jskit/references/patterns/app/minimal-foundation/example/AGENTS.md +14 -0
  126. package/skills/jskit/references/patterns/app/minimal-foundation/example/bin/develop.js +10 -5
  127. package/skills/jskit/references/patterns/app/minimal-foundation/example/eslint.config.mjs +21 -2
  128. package/skills/jskit/references/patterns/app/minimal-foundation/example/package.json +5 -4
  129. package/skills/jskit/references/patterns/app/minimal-foundation/example/playwright.config.mjs +1 -1
  130. package/skills/jskit/references/patterns/app/minimal-foundation/example/server/lib/envFile.js +19 -0
  131. package/skills/jskit/references/patterns/app/minimal-foundation/example/server/lib/loggerOptions.js +15 -0
  132. package/skills/jskit/references/patterns/app/minimal-foundation/example/server/lib/runtimeEnv.js +17 -17
  133. package/skills/jskit/references/patterns/app/minimal-foundation/example/server.js +32 -29
  134. package/skills/jskit/references/patterns/app/minimal-foundation/example/tests/server/smoke.test.js +2 -1
  135. package/skills/jskit/references/patterns/app/shell-foundation/PATTERN.md +29 -0
  136. package/skills/jskit/references/patterns/app/shell-foundation/example/AGENTS.md +14 -0
  137. package/skills/jskit/references/patterns/app/shell-foundation/example/bin/develop.js +10 -5
  138. package/skills/jskit/references/patterns/app/shell-foundation/example/eslint.config.mjs +21 -2
  139. package/skills/jskit/references/patterns/app/shell-foundation/example/package.json +6 -5
  140. package/skills/jskit/references/patterns/app/shell-foundation/example/packages/main/package.json +1 -1
  141. package/skills/jskit/references/patterns/app/shell-foundation/example/packages/main/src/client/providers/MainClientProvider.js +1 -0
  142. package/skills/jskit/references/patterns/app/shell-foundation/example/playwright.config.mjs +1 -1
  143. package/skills/jskit/references/patterns/app/shell-foundation/example/server/lib/envFile.js +19 -0
  144. package/skills/jskit/references/patterns/app/shell-foundation/example/server/lib/loggerOptions.js +15 -0
  145. package/skills/jskit/references/patterns/app/shell-foundation/example/server/lib/runtimeEnv.js +17 -17
  146. package/skills/jskit/references/patterns/app/shell-foundation/example/server.js +32 -29
  147. package/skills/jskit/references/patterns/app/shell-foundation/example/tests/server/smoke.test.js +2 -1
  148. package/skills/jskit/references/patterns/assistant/assistant-surface/example/src/ApplicationAiFeature.js +4 -2
  149. package/skills/jskit/references/patterns/auth/accounts-hub/PATTERN.md +2 -1
  150. package/skills/jskit/references/patterns/auth/accounts-hub/example/package.json +2 -2
  151. package/skills/jskit/references/patterns/auth/accounts-hub/example/server/hubPaths.js +9 -3
  152. package/skills/jskit/references/patterns/auth/auth-surface/PATTERN.md +25 -12
  153. package/skills/jskit/references/patterns/auth/auth-surface/example/tools/preview-identity +7 -1
  154. package/skills/jskit/references/patterns/auth/oidc-sign-in/example/package.json +2 -2
  155. package/skills/jskit/references/patterns/auth/supabase-auth/example/package.json +1 -1
  156. package/skills/jskit/references/patterns/connectors/ai-connections/PATTERN.md +16 -1
  157. package/skills/jskit/references/patterns/connectors/ai-connections/example/ai-model.js +12 -3
  158. package/skills/jskit/references/patterns/connectors/ai-connections/example/perplexity-answer.js +15 -4
  159. package/skills/jskit/references/patterns/connectors/api-key-connection/PATTERN.md +9 -1
  160. package/skills/jskit/references/patterns/connectors/api-key-connection/example/connections.js +5 -2
  161. package/skills/jskit/references/patterns/connectors/aws-storage-queries/PATTERN.md +13 -3
  162. package/skills/jskit/references/patterns/connectors/aws-storage-queries/example/s3-transfer.js +14 -3
  163. package/skills/jskit/references/patterns/connectors/calendar-cli/PATTERN.md +8 -0
  164. package/skills/jskit/references/patterns/connectors/calendar-cli/example/knexfile.js +1 -1
  165. package/skills/jskit/references/patterns/connectors/calendar-cli/example/package.json +4 -4
  166. package/skills/jskit/references/patterns/connectors/calendar-cli/example/scripts/calendar.js +8 -4
  167. package/skills/jskit/references/patterns/connectors/event-delivery/PATTERN.md +1 -1
  168. package/skills/jskit/references/patterns/connectors/firebase-messaging/PATTERN.md +10 -0
  169. package/skills/jskit/references/patterns/connectors/firebase-messaging/example/server/notifications.js +8 -0
  170. package/skills/jskit/references/patterns/connectors/google-ads-search/PATTERN.md +18 -7
  171. package/skills/jskit/references/patterns/connectors/google-ads-search/example/ads-setup.js +13 -5
  172. package/skills/jskit/references/patterns/connectors/oauth-connection/PATTERN.md +1 -1
  173. package/skills/jskit/references/patterns/connectors/paddle-catalogue/PATTERN.md +11 -2
  174. package/skills/jskit/references/patterns/connectors/paddle-catalogue/example/create-products.js +5 -2
  175. package/skills/jskit/references/patterns/connectors/public-image/PATTERN.md +10 -1
  176. package/skills/jskit/references/patterns/connectors/public-image/example/logo-url.js +4 -1
  177. package/skills/jskit/references/patterns/connectors/redshift-queries/PATTERN.md +1 -1
  178. package/skills/jskit/references/patterns/connectors/source-scanning/PATTERN.md +13 -2
  179. package/skills/jskit/references/patterns/connectors/source-scanning/example/source-scanner.js +9 -0
  180. package/skills/jskit/references/patterns/crud/json-api-resource-package/PATTERN.md +102 -23
  181. package/skills/jskit/references/patterns/crud/json-api-resource-package/example/packages/books/package.json +3 -2
  182. package/skills/jskit/references/patterns/crud/json-api-resource-package/example/packages/books/src/server/types.js +5 -0
  183. package/skills/jskit/references/patterns/crud/resource-contract/PATTERN.md +54 -1
  184. package/skills/jskit/references/patterns/database/mysql-application/PATTERN.md +16 -5
  185. package/skills/jskit/references/patterns/database/mysql-application/example/knexfile.js +2 -2
  186. package/skills/jskit/references/patterns/database/mysql-application/example/package.json +1 -1
  187. package/skills/jskit/references/patterns/database/mysql-application/example/scripts/prepare-database.js +1 -1
  188. package/skills/jskit/references/patterns/database/postgres-application/PATTERN.md +16 -5
  189. package/skills/jskit/references/patterns/database/postgres-application/example/knexfile.js +2 -2
  190. package/skills/jskit/references/patterns/database/postgres-application/example/package.json +1 -1
  191. package/skills/jskit/references/patterns/database/postgres-application/example/scripts/prepare-database.js +1 -1
  192. package/skills/jskit/references/patterns/realtime/realtime-application/example/package.json +2 -2
  193. package/skills/jskit/references/patterns/rewards/google-rewarded/example/GoogleRewardedDeliveryProvider.js +1 -1
  194. package/skills/jskit/references/patterns/rewards/google-rewarded/example/googlePublisherTag.js +5 -11
  195. package/skills/jskit/references/patterns/server/feature-package/PATTERN.md +104 -10
  196. package/skills/jskit/references/patterns/server/feature-package/example/booking-engine/package.json +9 -4
  197. package/skills/jskit/references/patterns/server/feature-package/example/booking-engine/src/server/BookingEngineFeature.js +24 -0
  198. package/skills/jskit/references/patterns/server/feature-package/example/booking-engine/src/server/bookingAvailability.js +10 -0
  199. package/skills/jskit/references/patterns/server/feature-package/example/booking-engine/src/server/bookingEngine.js +29 -0
  200. package/skills/jskit/references/patterns/server/feature-package/example/booking-engine/src/server/bookingEngineActions.js +26 -0
  201. package/skills/jskit/references/patterns/server/feature-package/example/booking-engine/src/server/inputSchemas.js +1 -2
  202. package/skills/jskit/references/patterns/server/feature-package/example/booking-engine/src/server/types.js +12 -0
  203. package/skills/jskit/references/patterns/server/feature-package/example/variations/AvailabilityEngineFeature.js +19 -0
  204. package/skills/jskit/references/patterns/server/feature-package/example/variations/InvoiceRollupFeature.js +23 -0
  205. package/skills/jskit/references/patterns/server/feature-package/example/variations/availabilityEngineActions.js +26 -0
  206. package/skills/jskit/references/patterns/server/feature-package/example/variations/customKnexRepository.js +32 -26
  207. package/skills/jskit/references/patterns/server/feature-package/example/variations/invoiceRollupActions.js +26 -0
  208. package/skills/jskit/references/patterns/server/feature-package/example/variations/orchestratorService.js +24 -19
  209. package/skills/jskit/references/patterns/server/feature-package/example/variations/types.js +7 -0
  210. package/skills/jskit/references/patterns/users/user-administration-server/PATTERN.md +16 -1
  211. package/skills/jskit/references/patterns/users/user-administration-server/example/packages/users/package.json +3 -2
  212. package/skills/jskit/references/patterns/users/user-administration-server/example/packages/users/src/server/types.js +5 -0
  213. package/skills/jskit/references/patterns/users/user-administration-server/example/packages/users-workspace/package.json +4 -3
  214. package/skills/jskit/references/patterns/users/user-administration-server/example/packages/users-workspace/src/server/UsersWorkspaceFeature.js +2 -9
  215. package/skills/jskit/references/patterns/users/user-administration-server/example/packages/users-workspace/src/server/types.js +5 -0
  216. package/skills/jskit/references/patterns/workspaces/workspace-server/PATTERN.md +42 -17
  217. package/skills/jskit/references/patterns/workspaces/workspace-server/example/packages/main/src/server/WorkspaceInvitationsFeature.js +27 -0
  218. package/skills/jskit/references/patterns/workspaces/workspace-server/example/packages/main/src/server/email/workspaceInviteEmail.js +11 -10
  219. package/skills/jskit/references/patterns/workspaces/workspace-server/example/packages/main/src/server/email/workspaceInviteMailer.js +27 -0
  220. package/skills/jskit/references/translation.md +5 -4
  221. package/skills/jskit/references/typed-features.md +1099 -0
  222. package/skills/jskit/references/ui-operations.md +3 -3
  223. package/patterns/feature-package/example/booking-engine/src/server/BookingEngineProvider.js +0 -33
  224. package/patterns/feature-package/example/booking-engine/src/server/actions.js +0 -24
  225. package/patterns/feature-package/example/variations/AvailabilityEngineProvider.js +0 -31
  226. package/patterns/feature-package/example/variations/InvoiceRollupProvider.js +0 -36
  227. package/skills/jskit/references/patterns/server/feature-package/example/booking-engine/src/server/BookingEngineProvider.js +0 -33
  228. package/skills/jskit/references/patterns/server/feature-package/example/booking-engine/src/server/actions.js +0 -24
  229. package/skills/jskit/references/patterns/server/feature-package/example/variations/AvailabilityEngineProvider.js +0 -31
  230. package/skills/jskit/references/patterns/server/feature-package/example/variations/InvoiceRollupProvider.js +0 -36
@@ -16,42 +16,27 @@ 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, workspaceMembershipOptionalSurfaceIds = [], workspaceSurfaceIds = [] } = {})`
20
- Local functions
21
- - `normalizeWorkspaceSurfaceIds(surfaceIds = [])`
19
+ - `createWorkspaceActionContextContributor({ workspaceService, workspaceMembershipOptionalSurfaceIds, workspaceSurfaceIds })`
22
20
 
23
21
  ### `src/server/common/contributors/workspaceAuthPolicyContextResolver.js`
24
22
  Exports
25
- - `createWorkspaceAuthPolicyContextResolver({ workspaceService, workspaceMembershipOptionalSurfaceIds = [] } = {})`
23
+ - `createWorkspaceAuthPolicyContextResolver({ workspaceService, workspaceMembershipOptionalSurfaceIds })`
26
24
 
27
25
  ### `src/server/common/contributors/workspaceRouteVisibilityResolver.js`
28
26
  Exports
29
- - `createWorkspaceRouteVisibilityResolver({ workspaceService, workspaceMembershipOptionalSurfaceIds = [] } = {})`
27
+ - `createWorkspaceRouteVisibilityResolver({ workspaceService, workspaceMembershipOptionalSurfaceIds })`
30
28
  Local functions
31
29
  - `buildVisibilityContribution({ visibility, scopeOwnerId = null, userId = null } = {})`
32
30
 
33
31
  ### `src/server/common/formatters/workspaceFormatter.js`
34
32
  Exports
35
33
  - `mapMembershipSummary(membership, workspace)`
36
- - `mapWorkspaceSettingsPublic(workspaceSettings, { workspaceInvitationsEnabled = true } = {})`
34
+ - `mapWorkspaceSettingsPublic(workspaceSettings, { workspaceInvitationsEnabled })`
37
35
  - `mapWorkspaceSummary(workspace, membership, roleCatalog = null)`
38
36
 
39
- ### `src/server/common/repositories/repositoryUtils.js`
40
- Exports
41
- - `toIsoString`
42
- - `retryDeadlocks`
43
- - `isDuplicateEntryError`
44
- - `normalizeText`
45
- - `normalizeLowerText`
46
- - `normalizeRecordId`
47
- - `normalizeDbRecordId`
48
- - `uniqueSorted(values)`
49
- - `parseJson(value, fallback = {})`
50
- - `toDbJson(value, fallback = {})`
51
-
52
37
  ### `src/server/common/repositories/workspaceInvitesRepository.js`
53
38
  Exports
54
- - `createRepository({ api } = {})`
39
+ - `createRepository({ api })`
55
40
  - `normalizeInviteRecord(payload)`
56
41
  - `normalizeInviteWithWorkspace(payload = {})`
57
42
  Local functions
@@ -59,55 +44,40 @@ Local functions
59
44
 
60
45
  ### `src/server/common/repositories/workspaceMembershipsRepository.js`
61
46
  Exports
62
- - `createRepository({ api } = {})`
47
+ - `createRepository({ api })`
63
48
  - `normalizeMembershipRecord(payload)`
64
49
  - `normalizeMemberSummaryRow(row)`
65
- Local functions
66
- - `normalizeMembershipPatchPayload(payload = {})`
67
50
 
68
51
  ### `src/server/common/repositories/workspacesRepository.js`
69
52
  Exports
70
- - `createRepository({ api } = {})`
53
+ - `createRepository({ api })`
71
54
  Local functions
72
55
  - `normalizeWorkspaceRecord(payload = null)`
73
56
 
74
- ### `src/server/common/services/workspaceContextService.js`
57
+ ### `src/server/common/services/workspaceDirectoryService.js`
75
58
  Exports
76
- - `createService({ appConfig = {}, workspacesRepository, workspaceMembershipsRepository, workspaceSettingsRepository } = {})`
59
+ - `buildWorkspaceName(user)`
60
+ - `createService({ tenancyProfile, roleCatalog, personalWorkspaceName, workspacesRepository, workspaceMembershipsRepository, workspaceSettingsRepository })`
77
61
  Local functions
78
62
  - `toSlugPart(value)`
79
- - `buildWorkspaceBaseSlug(user = {})`
80
- - `buildWorkspaceName(user = {})`
81
- - `buildPermissionsFromMembership(membership, appConfig = {})`
82
- - `hashInviteToken(token)`
83
- - `normalizeWorkspaceCreationInput(payload = {})`
84
-
85
- ### `src/server/common/support/deepFreeze.js`
86
- Exports
87
- - `deepFreeze`
63
+ - `buildWorkspaceBaseSlug(user)`
88
64
 
89
65
  ### `src/server/common/support/realtimeServiceEvents.js`
90
66
  Exports
91
67
  - `INVITE_RECIPIENT_BOOTSTRAP_AUDIENCE`
92
68
  - `createInviteDecisionEvents()`
93
- - `createWorkspaceEntityAndBootstrapEvents({ workspaceEntity, workspaceOperation, workspaceRealtimeEvent, bootstrapEntityId = workspaceId, bootstrapAudience = "event_scope" } = {})`
69
+ - `createWorkspaceEntityAndBootstrapEvents({ workspaceEntity, workspaceOperation, workspaceRealtimeEvent, bootstrapEntityId = workspaceId, bootstrapAudience = "event_scope" })`
94
70
  Local functions
95
- - `resultValue({ result } = {})`
96
- - `actorId({ context } = {})`
71
+ - `actorId({ context })`
97
72
  - `workspaceId(execution = {})`
98
73
  - `workspaceSlugPayload(execution = {})`
99
74
  - `createActorEvent({ source, entity, realtimeEvent })`
100
75
  - `createWorkspaceAudienceEvent({ entity, realtimeEvent })`
101
76
  - `onlyAccepted(builder)`
102
77
 
103
- ### `src/server/common/support/resolveActionUser.js`
78
+ ### `src/server/common/support/workspaceRecordId.js`
104
79
  Exports
105
- - `resolveActionUser(context, input)`
106
-
107
- ### `src/server/common/support/workspaceRoutePaths.js`
108
- Exports
109
- - `WORKSPACE_ROUTE_BASE_PATH`
110
- - `resolveWorkspaceRoutePath(relativePath = "/")`
80
+ - `resolveWorkspaceRecordId(record, context = {})`
111
81
 
112
82
  ### `src/server/common/validators/routeParamsValidator.js`
113
83
  Exports
@@ -121,133 +91,159 @@ Exports
121
91
  ### `src/server/support/resolveWorkspace.js`
122
92
  Exports
123
93
  - `resolveWorkspace(context = {}, input = {})`
124
- Local functions
125
- - `resolveRequest(context = {})`
126
94
 
127
95
  ### `src/server/support/workspaceActionSurfaces.js`
128
96
  Exports
129
97
  - `resolveWorkspaceSurfaceIdsFromAppConfig(appConfig = {})`
130
98
  - `resolveWorkspaceMembershipOptionalSurfaceIdsFromAppConfig(appConfig = {})`
131
99
  - `resolveDefaultWorkspaceRouteSurfaceIdFromAppConfig(appConfig = {})`
132
- - `materializeWorkspaceActionSurfaces(actions = [], { workspaceSurfaceIds = [] } = {})`
133
- - `materializeWorkspaceActionSurfacesFromAppConfig(actions = [], { appConfig = {} } = {})`
134
100
  Local functions
135
101
  - `normalizeSurfaceIds(surfaceIds = [])`
136
102
  - `resolveSurfaceIdsFromAppConfig(appConfig = {}, predicate)`
137
103
 
104
+ ### `src/server/support/workspaceCrud.js`
105
+ Exports
106
+ - `WORKSPACE_CRUD_SCOPE`
107
+ Local functions
108
+ - `workspaceCrudScopeInput(request)`
109
+
138
110
  ### `src/server/support/workspaceInvitationsPolicy.js`
139
111
  Exports
140
- - `normalizeWorkspaceInvitationsConfig(appConfig = {})`
141
- - `resolveWorkspaceInvitationsPolicy({ appConfig = {}, tenancyProfile = null } = {})`
112
+ - `resolveWorkspaceInvitationsPolicy({ appConfig, tenancyProfile })`
113
+ Local functions
114
+ - `normalizeWorkspaceInvitationsConfig(appConfig)`
142
115
 
143
116
  ### `src/server/support/workspaceRouteInput.js`
144
117
  Exports
145
118
  - `readWorkspaceSlugFromRouteParams(params = {})`
146
119
  - `buildWorkspaceInputFromRouteParams(params = {})`
120
+ - `requestedWorkspaceScope(request)`
147
121
 
148
- ### `src/server/workspaceBootstrapContributor.js`
122
+ ### `src/server/support/workspaceRoutePaths.js`
149
123
  Exports
150
- - `createWorkspaceBootstrapContributor({ workspaceService, workspacePendingInvitationsService, userProfilesRepository, workspaceInvitationsEnabled = false, appConfig = {}, tenancyProfile = null } = {})`
151
- Local functions
152
- - `normalizeQueryPayload(value = {})`
153
- - `resolveBootstrapWorkspaceSlug({ query = {}, request = null } = {})`
154
- - `normalizeRequestedWorkspaceStatus(value = "")`
155
- - `createRequestedWorkspacePayload(workspaceSlug = "", status = "")`
156
- - `resolveRequestedWorkspaceStatusFromError(error)`
157
- - `resolveBootstrapTenancyProfile(tenancyProfile = null, appConfig = {})`
124
+ - `WORKSPACE_ROUTE_BASE_PATH`
125
+ - `resolveWorkspaceRoutePath(relativePath)`
126
+
127
+ ### `src/server/types.js`
128
+ Exports
129
+ - `type WorkspacesCore`
130
+ - `type WorkspaceDirectoryService`
131
+ - `type WorkspaceMembersService`
132
+ - `type WorkspacePendingInvitationsService`
133
+ - `type WorkspaceSettingsService`
134
+ - `type WorkspacesRepository`
135
+ - `type WorkspaceMembershipsRepository`
136
+ - `type WorkspaceInvitesRepository`
137
+ - `type WorkspaceSettingsRepository`
138
+ - `type WorkspaceRoleCatalog`
139
+ - `type WorkspaceTenancyProfile`
140
+ - `type WorkspaceInviteUrlBuilder`
141
+ - `type WorkspacesServerI18n`
142
+ - `type WorkspaceInviteMailer`
143
+ - `type WorkspaceInviteEmailTemplate`
144
+ - `type WorkspaceInviteAcceptanceParticipant`
145
+ - `type PersonalWorkspaceName`
158
146
 
159
- ### `src/server/workspaceDirectory/bootWorkspaceDirectoryRoutes.js`
147
+ ### `src/server/workspaceBootstrapContributor.js`
160
148
  Exports
161
- - `registerWorkspaceDirectoryRoutes(router, { config = {}, workspaceSelfCreateEnabled = false } = {})`
149
+ - `createWorkspaceBootstrapContributor({ workspaceService, workspacePendingInvitationsService, userProfilesRepository, workspaceInvitationsEnabled, tenancyProfile })`
162
150
  Local functions
163
- - `resolveWorkspaceRecordId(record = {}, context = {})`
151
+ - `resolveBootstrapWorkspaceSlug({ query, request })`
152
+ - `normalizeRequestedWorkspaceStatus(value)`
153
+ - `buildRequestedWorkspacePayload(workspaceSlug, status)`
154
+ - `resolveRequestedWorkspaceStatusFromError(error)`
164
155
 
165
156
  ### `src/server/workspaceDirectory/workspaceDirectoryActions.js`
166
157
  Exports
167
- - `workspaceDirectoryActionSpecifications`
168
- - `buildWorkspaceDirectoryActions({ workspaceService } = {})`
158
+ - `createWorkspaceDirectoryActions({ workspaceService })`
169
159
  Local functions
170
160
  - `workspaceAssistantSummary({ id, slug, name, ownerUserId, avatarUrl })`
171
161
 
172
- ### `src/server/workspaceMembers/bootWorkspaceMembers.js`
162
+ ### `src/server/workspaceDirectory/workspaceDirectoryRoutes.js`
173
163
  Exports
174
- - `registerWorkspaceMembersRoutes(router, { config = {}, workspaceInvitationsEnabled = false } = {})`
175
- Local functions
176
- - `resolveWorkspaceAggregateRecordId(record = {}, context = {})`
164
+ - `registerWorkspaceDirectoryRoutes(router, { config, workspaceSelfCreateEnabled })`
177
165
 
178
166
  ### `src/server/workspaceMembers/defaultWorkspaceInviteEmail.js`
179
167
  Exports
180
- - `renderDefaultWorkspaceInviteEmail({ inviteUrl = "", workspace = {}, inviter = null, roleSid = "member", roleLabel = "", expiresAt = "", t = english } = {})`
168
+ - `renderDefaultWorkspaceInviteEmail({ inviteUrl, workspace, inviter, roleSid, roleLabel, expiresAt, t })`
181
169
  Local functions
182
- - `english(key, params)`
183
- - `escapeHtml(value = "")`
170
+ - `escapeHtml(value)`
171
+
172
+ ### `src/server/workspaceMembers/unconfiguredWorkspaceInviteMailer.js`
173
+ Exports
174
+ - `buildMailerUnconfiguredDelivery()`
175
+ - `unconfiguredWorkspaceInviteMailer`
184
176
 
185
177
  ### `src/server/workspaceMembers/workspaceInviteUrls.js`
186
178
  Exports
187
- - `buildInvitePath(token, pathTemplate = "/invite/:token")`
188
- - `createWorkspaceInviteUrlBuilder({ appConfig = {}, env = {} } = {})`
179
+ - `createWorkspaceInviteUrlBuilder({ appConfig, env })`
189
180
  Local functions
190
- - `normalizeInvitePathTemplate(value = "")`
191
- - `normalizeBaseUrl(value = "")`
181
+ - `normalizeInvitePathTemplate(value)`
182
+ - `buildInvitePath(token, template)`
183
+ - `normalizeBaseUrl(value)`
192
184
 
193
185
  ### `src/server/workspaceMembers/workspaceMembersActions.js`
194
186
  Exports
195
- - `workspaceMembersActionSpecifications`
196
- - `buildWorkspaceMembersActions({ workspaceMembersService } = {})`
187
+ - `createWorkspaceMembersActions({ workspaceMembersService })`
188
+
189
+ ### `src/server/workspaceMembers/workspaceMembersRoutes.js`
190
+ Exports
191
+ - `registerWorkspaceMembersRoutes(router, { config, workspaceInvitationsEnabled })`
197
192
 
198
193
  ### `src/server/workspaceMembers/workspaceMembersService.js`
199
194
  Exports
200
- - `createService({ workspaceMembershipsRepository, workspaceInvitesRepository, inviteExpiresInMs, roleCatalog = null, workspaceInvitationsEnabled = true, inviteUrlBuilder = null, workspaceInviteMailer = null, workspaceInviteEmailTemplate = renderDefaultWorkspaceInviteEmail, i18n = createWorkspacesServerI18n(), userProfilesRepository = null, userSettingsRepository = null } = {})`
195
+ - `createService({ workspaceMembershipsRepository, workspaceInvitesRepository, inviteExpiresInMs, roleCatalog, workspaceInvitationsEnabled, inviteUrlBuilder, workspaceInviteMailer, workspaceInviteEmailTemplate, i18n, userProfilesRepository, userSettingsRepository })`
201
196
  Local functions
202
197
  - `roleNotAssignableError()`
198
+ - `memberUserIdRequiredError()`
199
+ - `inviteIdRequiredError()`
203
200
 
204
- ### `src/server/workspacePendingInvitations/bootWorkspacePendingInvitations.js`
201
+ ### `src/server/workspacePendingInvitations/noInviteAcceptanceParticipant.js`
205
202
  Exports
206
- - `registerWorkspacePendingInvitationsRoutes(router)`
207
- Local functions
208
- - `resolveAuthenticatedUserRecordId(_record, context = {})`
209
- - `resolveInviteResolutionRecordId(record = {})`
203
+ - `noInviteAcceptanceParticipant()`
210
204
 
211
205
  ### `src/server/workspacePendingInvitations/workspacePendingInvitationsActions.js`
212
206
  Exports
213
- - `workspacePendingInvitationsActionSpecifications`
214
- - `buildWorkspacePendingInvitationsActions({ workspacePendingInvitationsService } = {})`
207
+ - `createWorkspacePendingInvitationsActions({ workspacePendingInvitationsService })`
215
208
 
216
- ### `src/server/workspacePendingInvitations/workspacePendingInvitationsService.js`
209
+ ### `src/server/workspacePendingInvitations/workspacePendingInvitationsRoutes.js`
217
210
  Exports
218
- - `createService({ workspaceInvitesRepository, workspaceMembershipsRepository, roleCatalog = null } = {})`
211
+ - `registerWorkspacePendingInvitationsRoutes(router)`
212
+ Local functions
213
+ - `resolveAuthenticatedUserRecordId(_record, context)`
214
+ - `resolveInviteResolutionRecordId(record)`
219
215
 
220
- ### `src/server/workspaceSettings/bootWorkspaceSettings.js`
216
+ ### `src/server/workspacePendingInvitations/workspacePendingInvitationsService.js`
221
217
  Exports
222
- - `registerWorkspaceSettingsRoutes(router, { config = {} } = {})`
223
- Local functions
224
- - `resolveWorkspaceSettingsRecordId(record = {}, context = {})`
218
+ - `createService({ workspaceInvitesRepository, workspaceMembershipsRepository, roleCatalog, acceptanceParticipant })`
225
219
 
226
220
  ### `src/server/workspaceSettings/workspaceSettingsActions.js`
227
221
  Exports
228
- - `workspaceSettingsActionSpecifications`
229
- - `buildWorkspaceSettingsActions({ workspaceSettingsService } = {})`
222
+ - `createWorkspaceSettingsActions({ workspaceSettingsService })`
230
223
 
231
224
  ### `src/server/workspaceSettings/workspaceSettingsRepository.js`
232
225
  Exports
233
- - `createRepository({ api, defaultInvitesEnabled = true, defaultColorSettings = {} } = {})`
226
+ - `createRepository({ api, defaultInvitesEnabled, defaultColorSettings })`
234
227
  Local functions
235
- - `createDefaultWorkspaceSettingsCreatePayload(workspaceId, defaultInvitesEnabled, defaultColorSettings = {})`
228
+ - `buildDefaultWorkspaceSettingsCreatePayload(workspaceId, defaultInvitesEnabled, defaultColorSettings)`
229
+
230
+ ### `src/server/workspaceSettings/workspaceSettingsRoutes.js`
231
+ Exports
232
+ - `registerWorkspaceSettingsRoutes(router, { config })`
236
233
 
237
234
  ### `src/server/workspaceSettings/workspaceSettingsService.js`
238
235
  Exports
239
- - `createService({ workspaceSettingsRepository, workspaceInvitationsEnabled = true, roleCatalog = null } = {})`
236
+ - `createService({ workspaceSettingsRepository, workspaceInvitationsEnabled, roleCatalog })`
240
237
 
241
238
  ### `src/server/WorkspacesFeature.js`
242
239
  Exports
243
240
  - `WorkspacesFeature`
244
- - `createWorkspacesRuntime({ appRoot = "", config, env, jsonRestApi, users = null } = {})`
245
- - `installWorkspaceResources(jsonRestApi)`
246
- Local functions
247
- - `requirePositiveInteger(value, label)`
248
- - `requireBoolean(value, label)`
249
- - `requireWorkspaceColorDefaults(defaults)`
250
- - `resolveInviteEmailTemplate(config)`
241
+ - `buildWorkspaceName`
242
+ - `createWorkspacesRuntime`
243
+ - `installWorkspaceResources`
244
+ - `noInviteAcceptanceParticipant`
245
+ - `renderDefaultWorkspaceInviteEmail`
246
+ - `unconfiguredWorkspaceInviteMailer`
251
247
 
252
248
  ### `src/server/WorkspacesIntegrationsProvider.js`
253
249
  Exports
@@ -255,6 +251,15 @@ Exports
255
251
  Local functions
256
252
  - `resolveWorkspaceRealtimeScopes(workspaceMemberships, actorId)`
257
253
 
254
+ ### `src/server/workspacesRuntime.js`
255
+ Exports
256
+ - `createWorkspacesRuntime({ appRoot, config, env, inviteMailer, inviteEmailTemplate, inviteAcceptanceParticipant, personalWorkspaceName, jsonRestApi, users })`
257
+ - `installWorkspaceResources(jsonRestApi)`
258
+ Local functions
259
+ - `requirePositiveInteger(value, label)`
260
+ - `requireBoolean(value, label)`
261
+ - `requireWorkspaceColorDefaults(defaults)`
262
+
258
263
  ### `src/shared/jsonApiTransports.js`
259
264
  Exports
260
265
  - `WORKSPACES_TRANSPORT`
@@ -271,7 +276,7 @@ Exports
271
276
 
272
277
  ### `src/shared/operationMessages.js`
273
278
  Exports
274
- - `createOperationMessages({ validationMessage = "Validation failed.", apiValidationMessage = validationMessage } = {})`
279
+ - `OPERATION_MESSAGES`
275
280
 
276
281
  ### `src/shared/resources/workspaceAssistantOutputs.js`
277
282
  Exports
@@ -297,6 +302,7 @@ Exports
297
302
  ### `src/shared/resources/workspaceResource.js`
298
303
  Exports
299
304
  - `workspaceResource`
305
+ - `WORKSPACE_PATCH_FIELD_KEYS`
300
306
  - `workspaceListItemOutputValidator`
301
307
  Local functions
302
308
  - `normalizeWorkspaceAvatarUrl(value)`
@@ -320,6 +326,7 @@ Exports
320
326
  - `ADMIN_ROLE_ID`
321
327
  - `MEMBER_ROLE_ID`
322
328
  - `resolveRolePermissions(roleSid, appConfig = {})`
329
+ - `listCatalogRolePermissions(roleCatalog, roleSid)`
323
330
  - `listRoleDescriptors(appConfig = {})`
324
331
  - `createWorkspaceRoleCatalog(appConfig = {})`
325
332
  - `cloneWorkspaceRoleCatalog(roleCatalog = null)`
@@ -417,4 +424,12 @@ Exports
417
424
 
418
425
  ### `patterns/workspace-server/example/packages/main/src/server/email/workspaceInviteEmail.js`
419
426
  Exports
420
- - `renderWorkspaceInviteEmail({ inviteUrl = "", workspace = {}, inviter = null, roleSid = "member", expiresAt = "" } = {})`
427
+ - `renderWorkspaceInviteEmail({ inviteUrl, workspace, inviter, roleSid, roleLabel, expiresAt })`
428
+
429
+ ### `patterns/workspace-server/example/packages/main/src/server/email/workspaceInviteMailer.js`
430
+ Exports
431
+ - `createWorkspaceInviteMailer({ env })`
432
+
433
+ ### `patterns/workspace-server/example/packages/main/src/server/WorkspaceInvitationsFeature.js`
434
+ Exports
435
+ - `WorkspaceInvitationsFeature`
@@ -262,7 +262,7 @@ Exports
262
262
  - `WORKSPACE_BOOTSTRAP_STATUS_FORBIDDEN`
263
263
  - `WORKSPACE_BOOTSTRAP_STATUS_UNAUTHENTICATED`
264
264
  - `WORKSPACE_BOOTSTRAP_STATUS_ERROR`
265
- - `createBootstrapPlacementRuntime({ bootstrapRuntime, placementRuntime, realtime = null, router = null, vueApp = null, logger = null } = {})`
265
+ - `createBootstrapPlacementRuntime({ bootstrapRuntime, placementRuntime, realtime = null, router = null, vueApp = null, logger })`
266
266
 
267
267
  ### `src/client/runtime/bootstrapPlacementRuntimeConstants.js`
268
268
  Exports
@@ -279,7 +279,6 @@ Exports
279
279
  ### `src/client/runtime/bootstrapPlacementRuntimeHelpers.js`
280
280
  Exports
281
281
  - `countPendingInvites(entries = [])`
282
- - `createProviderLogger(logger)`
283
282
  - `fetchBootstrapPayload(workspaceSlug = "")`
284
283
  - `isGuardDenied(outcome)`
285
284
  - `normalizeSearch(search = "")`