@jskit-ai/agent-docs 0.1.257 → 0.1.259

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 +9 -8
  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
@@ -32,17 +32,42 @@ Exports
32
32
  Exports
33
33
  - `baseConfig`
34
34
 
35
+ ### `clientFeatures.js`
36
+ Exports
37
+ - `clientFeaturesConfig(files, severity = "error")`
38
+ Local functions
39
+ - `clientFeaturesRules(severity)`
40
+ - `componentRules(severity)`
41
+
42
+ ### `formatter.js`
43
+ Exports
44
+ - `formatterConfig(files, { ignores = [] } = {})`
45
+
35
46
  ### `index.js`
36
47
  Exports
37
48
  - `baseConfig`
38
49
  - `nodeConfig`
39
50
  - `webConfig`
40
51
  - `vueConfig`
52
+ - `sizeLimitsConfig`
53
+ - `typedFeaturesConfig`
54
+ - `clientFeaturesConfig`
55
+ - `formatterConfig`
56
+ - `jskitPlugin`
41
57
 
42
58
  ### `node.js`
43
59
  Exports
44
60
  - `nodeConfig`
45
61
 
62
+ ### `typedFeatures.js`
63
+ Exports
64
+ - `sizeLimitRules(severity)`
65
+ - `sizeLimitsConfig(files, { ignores = [] } = {})`
66
+ - `typedFeaturesConfig(files, severity = "error")`
67
+ Local functions
68
+ - `typedFeaturesRules(severity)`
69
+ - `requireGlobs(name, files)`
70
+
46
71
  ### `vue.js`
47
72
  Exports
48
73
  - `vueConfig`
@@ -50,3 +75,280 @@ Exports
50
75
  ### `web.js`
51
76
  Exports
52
77
  - `webConfig`
78
+
79
+ ### plugin
80
+
81
+ ### `plugin/factoryResults.js`
82
+ Exports
83
+ - `CREATE_NAME`
84
+ - `FUNCTION_TYPES`
85
+ - `VUE_STATE_CALLS`
86
+ - `definedName(fn)`
87
+ - `definitionOf(sourceCode, identifier)`
88
+ - `enclosingFunction(sourceCode, node)`
89
+ - `holdsBehaviour(sourceCode, object)`
90
+ - `isInlineFunction(property)`
91
+ - `isVueStateCall(node)`
92
+ - `localFunction(sourceCode, identifier)`
93
+ - `makesVueState(sourceCode, fn)`
94
+ - `returnedFrom(sourceCode, node)`
95
+ - `returnsOnlyData(sourceCode, fn)`
96
+ Local functions
97
+ - `findVariable(scope, name)`
98
+ - `refersToFunction(sourceCode, property)`
99
+
100
+ ### `plugin/index.js`
101
+ Exports
102
+ - `jskitPlugin`
103
+
104
+ ### `plugin/packageSources.js`
105
+ Exports
106
+ - `clientSourceFiles(directory, files = [])`
107
+ - `createSourceMemo(read, unreadable)`
108
+ - `isGeneratedMirror(file)`
109
+ - `isServerOrSharedFile(file, packageDirectory)`
110
+ - `packageRootOf(file)`
111
+ - `packageSourceFiles(directory, files = [])`
112
+ - `toPosixPath(file)`
113
+ Local functions
114
+ - `isPackageDirectory(directory)`
115
+
116
+ ### `plugin/rules/actionCreator.js`
117
+ Exports
118
+ - `actionCreator`
119
+ Local functions
120
+ - `isCrudCustomAction(definition)`
121
+
122
+ ### `plugin/rules/actionExecuteShape.js`
123
+ Exports
124
+ - `actionExecuteShape`
125
+ Local functions
126
+ - `isPlainCallee(node)`
127
+ - `unwrapCall(node)`
128
+ - `shapeProblem(value)`
129
+
130
+ ### `plugin/rules/allowCommentForm.js`
131
+ Exports
132
+ - `allowCommentForm`
133
+ Local functions
134
+ - `holdsFunction(node)`
135
+ - `excusedNode(sourceCode, comment)`
136
+ - `allowLines(comment, opening = 2)`
137
+
138
+ ### `plugin/rules/appErrorCode.js`
139
+ Exports
140
+ - `appErrorCode`
141
+ Local functions
142
+ - `objectHasKey(node, name)`
143
+ - `hasSpread(node)`
144
+ - `setsOwnCode(classBody, sourceCode)`
145
+ - `parameterIndex(parameters, name)`
146
+ - `superCall(constructor)`
147
+ - `forwardsRest(target, superOptions)`
148
+ - `optionsIndex(parameters, superOptions)`
149
+ - `localErrorClasses(program, sourceCode)`
150
+ - `passesCode(node, { code, options })`
151
+ - `literalText(node)`
152
+
153
+ ### `plugin/rules/collaboratorProps.js`
154
+ Exports
155
+ - `collaboratorProps`
156
+ Local functions
157
+ - `declaredProps(node)`
158
+ - `unchain(node)`
159
+ - `calledProp(callee, propsBinding, inTemplate)`
160
+ - `optionText(sourceCode, prop, name)`
161
+
162
+ ### `plugin/rules/fixedResultShape.js`
163
+ Exports
164
+ - `fixedResultShape`
165
+ Local functions
166
+ - `calleeName(call)`
167
+ - `addsBehaviour(sourceCode, value)`
168
+ - `unwrapAwait(node)`
169
+ - `callbackFactoryCall(call)`
170
+ - `resultOwner(sourceCode, identifier)`
171
+
172
+ ### `plugin/rules/frozenFactoryResult.js`
173
+ Exports
174
+ - `frozenFactoryResult`
175
+
176
+ ### `plugin/rules/jsdocDescriptionInside.js`
177
+ Exports
178
+ - `jsdocDescriptionInside`
179
+ Local functions
180
+ - `startsItsLine(lines, comment)`
181
+
182
+ ### `plugin/rules/namedRepeatedType.js`
183
+ Exports
184
+ - `namedRepeatedType`
185
+ Local functions
186
+ - `balanced(text, start, open, close)`
187
+ - `repeatableTypes(type)`
188
+ - `moduleKey(specifier, directory)`
189
+ - `importedNames(text, directory)`
190
+ - `typeKey(text, file, imports)`
191
+ - `commentTypes(text)`
192
+
193
+ ### `plugin/rules/noDualShape.js`
194
+ Exports
195
+ - `noDualShape`
196
+ Local functions
197
+ - `unwrapChain(node)`
198
+ - `referenceText(sourceCode, node)`
199
+ - `dualShape(sourceCode, member, fallback)`
200
+
201
+ ### `plugin/rules/noDuplicateHelper.js`
202
+ Exports
203
+ - `noDuplicateHelper`
204
+ Local functions
205
+ - `topLevelFunctions(program)`
206
+ - `isNamedNoOp(fn)`
207
+ - `topLevelHelpers(program, text)`
208
+ - `comparisonRoot(file, packageDirectory)`
209
+ - `compareCopies(left, right)`
210
+
211
+ ### `plugin/rules/noEnvDefault.js`
212
+ Exports
213
+ - `noEnvDefault`
214
+ Local functions
215
+ - `isProcessEnv(node)`
216
+
217
+ ### `plugin/rules/noFactorySpread.js`
218
+ Exports
219
+ - `noFactorySpread`
220
+ Local functions
221
+ - `unwrap(node)`
222
+ - `factoryCall(sourceCode, argument)`
223
+ - `spreadFactory(sourceCode, argument, factoryName)`
224
+ - `returnedApi(sourceCode, object)`
225
+
226
+ ### `plugin/rules/noFrozenVueState.js`
227
+ Exports
228
+ - `noFrozenVueState`
229
+ Local functions
230
+ - `holdsVueState(sourceCode, value)`
231
+
232
+ ### `plugin/rules/noIdempotency.js`
233
+ Exports
234
+ - `noIdempotency`
235
+
236
+ ### `plugin/rules/noModuleRegistry.js`
237
+ Exports
238
+ - `noModuleRegistry`
239
+ Local functions
240
+ - `moduleBindings(program)`
241
+
242
+ ### `plugin/rules/noModuleState.js`
243
+ Exports
244
+ - `noModuleState`
245
+ Local functions
246
+ - `moduleDeclarations(program)`
247
+
248
+ ### `plugin/rules/noOptionalAfterDefault.js`
249
+ Exports
250
+ - `noOptionalAfterDefault`
251
+ Local functions
252
+ - `isPresentDefault(node)`
253
+ - `defaultedNames(pattern, found = [])`
254
+
255
+ ### `plugin/rules/noPatchedError.js`
256
+ Exports
257
+ - `noPatchedError`
258
+ Local functions
259
+ - `calleeName(node)`
260
+ - `isConstructedError(node)`
261
+
262
+ ### `plugin/rules/noSlotSetter.js`
263
+ Exports
264
+ - `noSlotSetter`
265
+
266
+ ### `plugin/rules/noTestOnlyExport.js`
267
+ Exports
268
+ - `noTestOnlyExport`
269
+ Local functions
270
+ - `exportedNames(node)`
271
+
272
+ ### `plugin/rules/oneLineAction.js`
273
+ Exports
274
+ - `oneLineAction`
275
+ Local functions
276
+ - `executeOf(definition)`
277
+ - `isCrudCustomAction(definition)`
278
+ - `definitionLiteral(element)`
279
+
280
+ ### `plugin/rules/onePropertyPerLine.js`
281
+ Exports
282
+ - `onePropertyPerLine`
283
+ Local functions
284
+ - `calleeName(call)`
285
+ - `checkedPlace(object)`
286
+ - `splitObjectLines(sourceCode, object)`
287
+
288
+ ### `plugin/rules/releasedListeners.js`
289
+ Exports
290
+ - `releasedListeners`
291
+ Local functions
292
+ - `calleeName(node)`
293
+ - `eventType(sourceCode, node)`
294
+ - `releasesItself(options)`
295
+ - `keptAs(sourceCode, node)`
296
+ - `listenedObject(sourceCode, node)`
297
+
298
+ ### `plugin/rules/requiredCollaborators.js`
299
+ Exports
300
+ - `requiredCollaborators`
301
+ Local functions
302
+ - `positionalCollaboratorDefaults(fn, visitorKeys)`
303
+
304
+ ### `plugin/rules/typedDependencies.js`
305
+ Exports
306
+ - `typedDependencies`
307
+ Local functions
308
+ - `hasParamJsdoc(sourceCode, node)`
309
+
310
+ ### `plugin/rules/typedInject.js`
311
+ Exports
312
+ - `typedInject`
313
+ Local functions
314
+ - `isTypedInjection(sourceCode, call)`
315
+
316
+ ### `plugin/support.js`
317
+ Exports
318
+ - `ABSENT_DEFAULT`
319
+ - `CLIENT_GUIDE_URL`
320
+ - `GUIDE_URL`
321
+ - `compactText(sourceCode, node)`
322
+ - `createReporter(context, ruleName)`
323
+ - `deepFreezeNames(program)`
324
+ - `factoryDependencies(fn, sourceCode, client = false)`
325
+ - `followsOptionalLink(node)`
326
+ - `functionName(fn)`
327
+ - `functionSite(fn)`
328
+ - `isActionDefinition(object)`
329
+ - `isActionExecute(node, owner)`
330
+ - `isActionsFile(filename)`
331
+ - `isFreezeCall(node)`
332
+ - `isFrozenValue(node, deepFreezing)`
333
+ - `isFactory(fn, client = false)`
334
+ - `isClientLint(context)`
335
+ - `isInAction(context, node)`
336
+ - `isWrittenActionDefinition(object)`
337
+ - `keyName(property)`
338
+ - `receivingFunction(context, node, name)`
339
+ - `ruleMeta(description, messages, section, guide = GUIDE_URL)`
340
+ - `walk(node, visitorKeys, visit)`
341
+ Local functions
342
+ - `enclosingFunctionLine(node)`
343
+ - `templateElementLine(node)`
344
+ - `isConstructor(fn)`
345
+ - `collaboratorNames(fn, names, visitorKeys)`
346
+ - `bodyDestructuring(fn, parameterName)`
347
+ - `dependenciesPattern(fn, first)`
348
+
349
+ ### `plugin/vueSources.js`
350
+ Exports
351
+ - `hasJsdocBefore(sourceCode, node, tag)`
352
+ - `hasTypeCast(sourceCode, node)`
353
+ - `scriptSetupRanges(sourceCode)`
354
+ - `vueImportNames(program, exported)`
@@ -23,12 +23,15 @@ Local functions
23
23
  - `buildCatalog({ repoRoot, packagesRoot, outputPath })`
24
24
  - `main()`
25
25
 
26
+ ### `scripts/files.mjs`
27
+ Exports
28
+ - `fileExists(absolutePath)`
29
+ - `toPosixPath(value = "")`
30
+
26
31
  ### `scripts/framework-packages.mjs`
27
32
  Exports
28
33
  - `collectSingletonPackageIds(packageJsons)`
29
34
  - `discoverFrameworkPackages(packagesRoot)`
30
- Local functions
31
- - `fileExists(filePath)`
32
35
 
33
36
  ### `scripts/i18n.mjs`
34
37
  Exports
@@ -77,7 +80,6 @@ Exports
77
80
  - `parsePatternDocument(source = "", { documentPath = PATTERN_DOCUMENT_NAME } = {})`
78
81
  Local functions
79
82
  - `normalizeText(value = "")`
80
- - `normalizePath(value = "")`
81
83
  - `sortedUniqueStrings(values = [])`
82
84
  - `parseCommaSeparatedValue(value = "")`
83
85
  - `requirePatternFrontMatter(source = "", { documentPath = PATTERN_DOCUMENT_NAME } = {})`
@@ -85,6 +87,26 @@ Local functions
85
87
  - `directoryExists(directoryPath)`
86
88
  - `collectFiles(rootDirectory)`
87
89
 
90
+ ### `scripts/project-install.mjs`
91
+ Exports
92
+ - `readOptionalFile(absolutePath)`
93
+ - `restoreProjectFiles(updates, packageLockPath, packageLockSnapshot)`
94
+ - `runNpmInstall(projectRoot)`
95
+ - `writeManifestUpdates(updates = [])`
96
+ Local functions
97
+ - `spawnNpmInstall(projectRoot)`
98
+
99
+ ### `scripts/project-manifests.mjs`
100
+ Exports
101
+ - `discoverProjectManifests(projectRoot, additionalManifests = [])`
102
+ - `readJsonRecord(absolutePath)`
103
+ - `serializePackageJson(value, originalContents = "")`
104
+ Local functions
105
+ - `normalizeWorkspacePatterns(value)`
106
+ - `globToRegExp(pattern = "")`
107
+ - `createWorkspaceMatcher(workspaces)`
108
+ - `collectNestedPackageJsonPaths(directory, results = [])`
109
+
88
110
  ### `scripts/project-packages.mjs`
89
111
  Exports
90
112
  - `CATALOG_PACKAGE_ID`
@@ -95,30 +117,17 @@ Exports
95
117
  - `checkInstalledGraph({ catalog, manifestPaths = [], sourcePackages = {} } = {})`
96
118
  - `resolveInstalledPackage(consumerDirectory, packageId)`
97
119
  - `collectLockInstallations(packageLock = {})`
98
- - `discoverProjectManifests(projectRoot, additionalManifests = [])`
120
+ - `discoverProjectManifests`
99
121
  - `normalizeCatalog(catalog = {})`
100
122
  - `updateProject({ projectRoot = process.cwd(), catalog, install = true, installProject = runNpmInstall, additionalManifests = [] } = {})`
101
123
  Local functions
102
- - `toPosixPath(value = "")`
103
- - `normalizeWorkspacePatterns(value)`
104
- - `globToRegExp(pattern = "")`
105
- - `createWorkspaceMatcher(workspaces)`
106
- - `fileExists(absolutePath)`
107
- - `readJsonRecord(absolutePath)`
108
- - `collectNestedPackageJsonPaths(directory, results = [])`
109
- - `serializePackageJson(value, originalContents = "")`
110
124
  - `collectManifestDeclarations(manifests, projectRoot)`
111
125
  - `collectLocalPackageNames(manifests)`
112
126
  - `resolveLockPackageName(packagePath = "", record = {})`
113
127
  - `collectJskitOverridePaths(value, currentPath = "overrides", results = [])`
114
- - `writeManifestUpdates(updates = [])`
115
- - `readOptionalFile(absolutePath)`
116
- - `restoreProjectFiles(updates, packageLockPath, packageLockSnapshot)`
117
128
  - `removeJskitDependencyRecords(dependencies = {}, localPackageNames = new Set())`
118
129
  - `alignLockManifestRecord(lockRecord, manifest, localPackageNames)`
119
130
  - `preparePackageLockForInstall(projectRoot, manifests, packageLockPath)`
120
- - `spawnNpmInstall(projectRoot)`
121
- - `runNpmInstall(projectRoot)`
122
131
 
123
132
  ### `scripts/verify-packages.mjs`
124
133
  Exports
@@ -129,9 +138,10 @@ Exports
129
138
  - `validateProviderList(packageRecord, side)`
130
139
  - `validateSingletonPeerDependencies(packages)`
131
140
  Local functions
132
- - `fileExists(filePath)`
133
141
  - `requireStringArray(value, label)`
134
142
  - `requireArchitectureId(value, label)`
135
143
  - `validateCapabilityMap(value, label)`
136
144
  - `validateProviderDefinition(value, label)`
145
+ - `validateMigrationsAfter(packageJson)`
146
+ - `validateMigrationDirectory(packageName, absoluteDirectory, relativeDirectory, migrationOwners)`
137
147
  - `validatePackage(packageRecord, localVersions, migrationOwners)`
@@ -14,6 +14,31 @@ Use this on demand; do not load the full index at startup.
14
14
 
15
15
  ### src
16
16
 
17
+ ### `src/manifests.mjs`
18
+ Exports
19
+ - `DEPENDENCY_FIELDS`
20
+ - `bumpPatch(version)`
21
+ - `collectPatternPackageJsonPaths(packageRoot, nestedManifests = ["patterns", "examples"])`
22
+ - `collectPublishDependencies(packageJson, localNames)`
23
+ - `collectVersionMismatches(packageJson, versions, source)`
24
+ - `currentVersionMap(records)`
25
+ - `discoverManifests(repoRoot)`
26
+ - `discoverReleasePackages(repoRoot)`
27
+ - `fileExists(absolutePath)`
28
+ - `prepareManifests(records, versions, repoRoot, config)`
29
+ - `readJsonFile(absolutePath)`
30
+ - `releaseConfig(repoRoot)`
31
+ - `serializeJson(value)`
32
+ - `toPosixPath(value)`
33
+ - `topologicalPublishOrder(records)`
34
+ - `updatePackageDependencyVersions(packageJson, versions, changes = [])`
35
+ - `updatePatternPackageJsonContents(contents, versions)`
36
+ - `validateReleaseState(records, repoRoot)`
37
+ Local functions
38
+ - `followVersion(declared, version)`
39
+ - `expandWorkspacePattern(repoRoot, pattern)`
40
+ - `versionFilePaths(record)`
41
+
17
42
  ### `src/npm-publication.mjs`
18
43
  Exports
19
44
  - `createPublicationInspection({ directory, registry, configPath = "", env = process.env })`
@@ -30,31 +55,21 @@ Local functions
30
55
  ### `src/release.mjs`
31
56
  Exports
32
57
  - `assertMainReleaseCheckout(repoRoot)`
33
- - `bumpPatch(version)`
34
- - `collectPublishDependencies(packageJson, localNames)`
35
- - `collectPatternPackageJsonPaths(packageRoot, nestedManifests = ["patterns", "examples"])`
36
- - `collectVersionMismatches(packageJson, versions, source)`
58
+ - `bumpPatch`
59
+ - `collectPublishDependencies`
60
+ - `collectPatternPackageJsonPaths`
61
+ - `collectVersionMismatches`
37
62
  - `commitAndPush(repoRoot, message)`
38
- - `discoverManifests(repoRoot)`
39
- - `discoverReleasePackages(repoRoot)`
63
+ - `discoverManifests`
64
+ - `discoverReleasePackages`
40
65
  - `main(argv = process.argv.slice(2))`
41
66
  - `parseArgs(argv = [])`
42
- - `topologicalPublishOrder(records)`
43
- - `updatePackageDependencyVersions(packageJson, versions, changes = [])`
44
- - `updatePatternPackageJsonContents(contents, versions)`
45
- - `validateReleaseState(records, repoRoot)`
67
+ - `topologicalPublishOrder`
68
+ - `updatePackageDependencyVersions`
69
+ - `updatePatternPackageJsonContents`
70
+ - `validateReleaseState`
46
71
  Local functions
47
72
  - `normalizeRegistryUrl(value)`
48
- - `fileExists(absolutePath)`
49
- - `readJsonFile(absolutePath)`
50
- - `serializeJson(value)`
51
- - `toPosixPath(value)`
52
- - `followVersion(declared, version)`
53
- - `expandWorkspacePattern(repoRoot, pattern)`
54
- - `releaseConfig(repoRoot)`
55
- - `currentVersionMap(records)`
56
- - `prepareManifests(records, versions, repoRoot, config)`
57
- - `versionFilePaths(record)`
58
73
  - `runCommand(command, args, { cwd, env = process.env } = {})`
59
74
  - `compareVersions(left, right)`
60
75
  - `assertNoNewerVersions(records, inspection)`
@@ -24,4 +24,6 @@ Exports
24
24
 
25
25
  ### `fakeFastify.mjs`
26
26
  Exports
27
- - `createFakeFastifyPolicyRuntime({ csrfHandler, autoRunPlugin = null } = {})`
27
+ - `createFakeFastifyPolicyRuntime({ csrfHandler = passCsrfProtection } = {})`
28
+ Local functions
29
+ - `passCsrfProtection(_request, _reply, done)`
@@ -38,11 +38,12 @@ manifests, migrations, tests, and runtime behaviour are the evidence.
38
38
  1. Read the request and nearest `AGENTS.md`.
39
39
  2. Inspect `package.json`, `package-lock.json`, installed package metadata, the
40
40
  existing tree, and the current diff when reviewing changes.
41
- 3. Read the project's product documentation and current source. JSKIT does not
42
- own a second project brain or prescribe a particular agent orchestrator.
41
+ 3. Read the project's product documentation and current source; JSKIT owns no
42
+ second project brain or agent orchestrator.
43
43
  4. Load only relevant references:
44
44
  - [port guide](references/existing-application-migration.md) for existing apps.
45
45
  - [heuristics index](references/heuristics/INDEX.md) for recurring traps.
46
+ - Before writing server code, read [typed features](references/typed-features.md) and its heuristic; client code, [client features](references/client-features.md). `npm run lint` checks both.
46
47
  - [multi-homing](references/multi-homing.md) for workspaces or invitations.
47
48
  - [translation](references/translation.md) for languages, translated texts
48
49
  or error codes.
@@ -90,8 +91,8 @@ schema work—never valuable data. For UI, respect surface/placements, compact
90
91
  layout, all operational states, permissions/ownership, and browser
91
92
  verification.
92
93
  Check every page for meaningful Back navigation: previous page by default,
93
- with justified omissions or explicitly named fixed destinations. Follow UI
94
- operations for the existing navigation seams, placement, and direct-entry fallback.
94
+ with justified omissions or explicitly named fixed destinations. UI operations
95
+ has navigation seams, placement and direct-entry fallback.
95
96
 
96
97
  ## Caller-owned verification
97
98
 
@@ -104,10 +105,10 @@ unless requested in the current task.
104
105
 
105
106
  For review-only work, report without editing. Check dead or duplicated code,
106
107
  accidental abstraction, incomplete states, missed high-level JSKIT seams,
107
- invalid ownership or migration choices, UI quality, and verification. Run the
108
- Material 3 audit for affected UI, including Back's presence, positioning, label,
109
- and actual destination. Do not treat a hardcoded parent link as previous-page
110
- navigation. Put findings first by severity and file.
108
+ invalid ownership or migration choices, UI quality, and verification. Server
109
+ code follows typed features, client code client features; `npm run lint` is
110
+ clean. Run the Material 3 audit for affected UI, Back included; a hardcoded
111
+ parent link is not previous-page navigation. Findings first by severity and file.
111
112
 
112
113
  ## Verify
113
114
 
@@ -1,4 +1,4 @@
1
- <!-- Generated from `packages/agent-docs/site/guide/framework/application-operations.md` by `npm run agent-docs:build`. -->
1
+ <!-- Generated from `packages/agent-docs/site/guide/framework/application-operations.md`. -->
2
2
 
3
3
  # Application operations
4
4