@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
@@ -14,40 +14,68 @@ Use this on demand; do not load the full index at startup.
14
14
 
15
15
  ### patterns
16
16
 
17
- ### `patterns/feature-package/example/booking-engine/src/server/actions.js`
17
+ ### `patterns/feature-package/example/booking-engine/src/server/bookingAvailability.js`
18
+ Exports
19
+ - `everyScopeOpen()`
20
+
21
+ ### `patterns/feature-package/example/booking-engine/src/server/bookingEngine.js`
22
+ Exports
23
+ - `createBookingEngine({ availability })`
24
+
25
+ ### `patterns/feature-package/example/booking-engine/src/server/bookingEngineActions.js`
18
26
  Exports
19
27
  - `ACTION_GET_STATUS`
20
- - `createActions({ bookingEngine } = {})`
28
+ - `createBookingEngineActions({ bookingEngine })`
21
29
 
22
- ### `patterns/feature-package/example/booking-engine/src/server/BookingEngineProvider.js`
30
+ ### `patterns/feature-package/example/booking-engine/src/server/BookingEngineFeature.js`
23
31
  Exports
24
- - `BookingEngineProvider`
32
+ - `BookingEngineFeature`
25
33
 
26
34
  ### `patterns/feature-package/example/booking-engine/src/server/inputSchemas.js`
27
35
  Exports
28
36
  - `statusQueryInputValidator`
29
37
 
30
- ### `patterns/feature-package/example/variations/AvailabilityEngineProvider.js`
38
+ ### `patterns/feature-package/example/booking-engine/src/server/types.js`
39
+ Exports
40
+ - `type BookingEngine`
41
+ - `type BookingEngineAvailability`
42
+
43
+ ### `patterns/feature-package/example/variations/availabilityEngineActions.js`
44
+ Exports
45
+ - `ACTION_GET_AVAILABILITY_STATUS`
46
+ - `createAvailabilityEngineActions({ availabilityEngine })`
47
+
48
+ ### `patterns/feature-package/example/variations/AvailabilityEngineFeature.js`
31
49
  Exports
32
- - `AvailabilityEngineProvider`
50
+ - `AvailabilityEngineFeature`
33
51
 
34
52
  ### `patterns/feature-package/example/variations/customKnexRepository.js`
35
53
  Exports
36
- - `createRepository({ knex } = {})`
54
+ - `createInvoiceRollup({ knex })`
55
+
56
+ ### `patterns/feature-package/example/variations/invoiceRollupActions.js`
57
+ Exports
58
+ - `ACTION_GET_ROLLUP_STATUS`
59
+ - `createInvoiceRollupActions({ invoiceRollup })`
37
60
 
38
- ### `patterns/feature-package/example/variations/InvoiceRollupProvider.js`
61
+ ### `patterns/feature-package/example/variations/InvoiceRollupFeature.js`
39
62
  Exports
40
- - `InvoiceRollupProvider`
63
+ - `InvoiceRollupFeature`
41
64
 
42
65
  ### `patterns/feature-package/example/variations/orchestratorService.js`
43
66
  Exports
44
- - `createService()`
67
+ - `createAvailabilityEngine()`
68
+
69
+ ### `patterns/feature-package/example/variations/types.js`
70
+ Exports
71
+ - `type AvailabilityEngine`
72
+ - `type InvoiceRollup`
45
73
 
46
74
  ### `patterns/minimal-foundation/example/bin/develop.js`
47
75
  Exports
48
76
  - None
49
77
  Local functions
50
- - `requiredPort(value, fallback = 3000)`
78
+ - `requiredPort(value)`
51
79
  - `waitForChild(child)`
52
80
  - `requestShutdown(signal)`
53
81
 
@@ -85,22 +113,30 @@ Exports
85
113
 
86
114
  ### `patterns/minimal-foundation/example/server.js`
87
115
  Exports
88
- - `createServer({ runtimeEnv = resolveRuntimeEnv() } = {})`
89
- - `startServer(options = {})`
116
+ - `createServer({ runtimeEnv })`
117
+ - `startServer({ host, port } = {})`
118
+ - `type RuntimeEnv`
90
119
  Local functions
91
- - `toRequestPathname(urlValue)`
92
120
  - `isApiPath(pathname)`
93
121
  - `hasFileExtension(pathname)`
94
- - `resolveGlobalUiPaths(runtimeGlobalUiPaths = [])`
95
- - `resolveStaticFilePath(pathname)`
122
+ - `buildGlobalUiPaths(runtimeGlobalUiPaths)`
123
+ - `toStaticFilePath(pathname)`
96
124
  - `canServeStaticFile(distRoot, relativePath)`
97
125
 
126
+ ### `patterns/minimal-foundation/example/server/lib/envFile.js`
127
+ Exports
128
+ - `loadEnvFile()`
129
+
130
+ ### `patterns/minimal-foundation/example/server/lib/loggerOptions.js`
131
+ Exports
132
+ - `buildLoggerOptions()`
133
+
98
134
  ### `patterns/minimal-foundation/example/server/lib/runtimeEnv.js`
99
135
  Exports
136
+ - `DEFAULT_PORT`
100
137
  - `resolveRuntimeEnv()`
101
138
  Local functions
102
- - `toPort(value, fallback = 3000)`
103
- - `ensureRuntimeEnvLoaded()`
139
+ - `toPort(value, fallback)`
104
140
 
105
141
  ### `patterns/minimal-foundation/example/server/lib/surfaceRuntime.js`
106
142
  Exports
@@ -136,7 +172,7 @@ Local functions
136
172
  Exports
137
173
  - None
138
174
  Local functions
139
- - `requiredPort(value, fallback = 3000)`
175
+ - `requiredPort(value)`
140
176
  - `waitForChild(child)`
141
177
  - `requestShutdown(signal)`
142
178
 
@@ -182,22 +218,30 @@ Exports
182
218
 
183
219
  ### `patterns/shell-foundation/example/server.js`
184
220
  Exports
185
- - `createServer({ runtimeEnv = resolveRuntimeEnv() } = {})`
186
- - `startServer(options = {})`
221
+ - `createServer({ runtimeEnv })`
222
+ - `startServer({ host, port } = {})`
223
+ - `type RuntimeEnv`
187
224
  Local functions
188
- - `toRequestPathname(urlValue)`
189
225
  - `isApiPath(pathname)`
190
226
  - `hasFileExtension(pathname)`
191
- - `resolveGlobalUiPaths(runtimeGlobalUiPaths = [])`
192
- - `resolveStaticFilePath(pathname)`
227
+ - `buildGlobalUiPaths(runtimeGlobalUiPaths)`
228
+ - `toStaticFilePath(pathname)`
193
229
  - `canServeStaticFile(distRoot, relativePath)`
194
230
 
231
+ ### `patterns/shell-foundation/example/server/lib/envFile.js`
232
+ Exports
233
+ - `loadEnvFile()`
234
+
235
+ ### `patterns/shell-foundation/example/server/lib/loggerOptions.js`
236
+ Exports
237
+ - `buildLoggerOptions()`
238
+
195
239
  ### `patterns/shell-foundation/example/server/lib/runtimeEnv.js`
196
240
  Exports
241
+ - `DEFAULT_PORT`
197
242
  - `resolveRuntimeEnv()`
198
243
  Local functions
199
- - `toPort(value, fallback = 3000)`
200
- - `ensureRuntimeEnvLoaded()`
244
+ - `toPort(value, fallback)`
201
245
 
202
246
  ### `patterns/shell-foundation/example/server/lib/surfaceRuntime.js`
203
247
  Exports
@@ -0,0 +1,129 @@
1
+ # packages/agent-runtime
2
+
3
+ Generated by `npm run agent-docs:build`.
4
+ Do not edit manually.
5
+
6
+ Generated inventory for `packages/agent-runtime`.
7
+ Use this on demand; do not load the full index at startup.
8
+
9
+ ## Scope
10
+ - Source: `packages/agent-runtime/**/*{.js,.mjs,.cjs,.vue}`
11
+ - Excludes: `.build/`, `.git/`, `.jscpd/`, `.jskit/`, `coverage/`, `dist/`, `docs/`, `node_modules/`, `test/`, `tests/`, `__tests__/`, `.vitepress/cache/`, `.vitepress/dist/`, `skills/jskit/references/patterns/`, `*.test.*`, `*.spec.*`, `*.vitest.*`
12
+
13
+ ## Sections
14
+
15
+ ### src
16
+
17
+ ### `src/server/executors.js`
18
+ Exports
19
+ - `gvisorExecutor(settings = {})`
20
+ - `localExecutor()`
21
+ - `GVISOR`
22
+ Local functions
23
+ - `onPath(program)`
24
+
25
+ ### `src/server/goals.js`
26
+ Exports
27
+ - `roundPrompt(goal)`
28
+ - `goalTools(operations)`
29
+ - `createGoals({ knex, runs, table = "agent_goals", channel = "agent-goals", notices, limits = GOAL_LIMITS, find, respond, claim, record, notify = notifyNoPages, owner = noOwnerColumns, spent = nothingSpent, track = runUnmetered, background = leaveRunning })`
30
+ - `GOAL_LIMITS`
31
+ Local functions
32
+ - `notifyNoPages()`
33
+ - `nothingSpent()`
34
+ - `runUnmetered(_goal, work)`
35
+ - `leaveRunning(work)`
36
+ - `noOwnerColumns()`
37
+
38
+ ### `src/server/index.js`
39
+ Exports
40
+ - `createRuns`
41
+ - `startResumer`
42
+ - `RUN_LIMITS`
43
+ - `createGoals`
44
+ - `goalTools`
45
+ - `roundPrompt`
46
+ - `GOAL_LIMITS`
47
+ - `createSummaries`
48
+ - `planningTools`
49
+ - `planningNotes`
50
+ - `currentTodos`
51
+ - `PLANNING_TABLES`
52
+ - `defaultTools`
53
+ - `fileTools`
54
+ - `inWorkspace`
55
+ - `FILE_LIMITS`
56
+ - `createCommands`
57
+ - `commandTools`
58
+ - `COMMAND_LIMITS`
59
+ - `askInReplyTools`
60
+ - `askTools`
61
+ - `gvisorExecutor`
62
+ - `localExecutor`
63
+ - `GVISOR`
64
+
65
+ ### `src/server/notices.js`
66
+ Exports
67
+ - `NO_NOTICES`
68
+ Local functions
69
+ - `publishToNoOne()`
70
+ - `listenToNoOne()`
71
+ - `stopListening()`
72
+
73
+ ### `src/server/planning.js`
74
+ Exports
75
+ - `currentTodos(knex, conversationId, tables = PLANNING_TABLES)`
76
+ - `planningTools({ knex, conversationId, post, tables = PLANNING_TABLES })`
77
+ - `planningNotes(knex, conversationId, tables = PLANNING_TABLES)`
78
+ - `PLANNING_TABLES`
79
+
80
+ ### `src/server/runs.js`
81
+ Exports
82
+ - `createRuns({ knex, table = "agent_runs", limits = RUN_LIMITS })`
83
+ - `startResumer({ runs, resume, resumable, everyMs = 30000 })`
84
+ - `RUN_LIMITS`
85
+
86
+ ### `src/server/summaryStore.js`
87
+ Exports
88
+ - `createSummaries({ knex, model, app = "the app", history, track = runSummaryUnmetered, notices, tables = { summaries: "agent_summaries", queue: "agent_summary_queue" }, channel = "agent-summaries", summarize = (input) => writeSummary({ model, app, ...input, limits }), limits = SUMMARY_LIMITS })`
89
+ Local functions
90
+ - `runSummaryUnmetered(_conversationId, work)`
91
+
92
+ ### `src/server/tools/ask.js`
93
+ Exports
94
+ - `askTools({ post })`
95
+ - `askInReplyTools()`
96
+
97
+ ### `src/server/tools/commands.js`
98
+ Exports
99
+ - `createCommands({ knex, executor, table = "agent_commands", outputDir = path.join(os.tmpdir(), "agent-runs"), onEnd = ignoreEnd, limits = COMMAND_LIMITS, server = `${os.hostname()}:${process.pid}` })`
100
+ - `commandTools({ commands, conversationId, root })`
101
+ - `COMMAND_LIMITS`
102
+ Local functions
103
+ - `ignoreEnd()`
104
+
105
+ ### `src/server/tools/defaults.js`
106
+ Exports
107
+ - `defaultTools({ root, commands = null, knex = null, conversationId, post = null, goals = null, tables })`
108
+
109
+ ### `src/server/tools/files.js`
110
+ Exports
111
+ - `inWorkspace(root, wanted = ".")`
112
+ - `fileTools({ root, limits = FILE_LIMITS })`
113
+ - `FILE_LIMITS`
114
+ Local functions
115
+ - `untrusted(text)`
116
+
117
+ ### `src/server/types.js`
118
+ Exports
119
+ - `type AgentNotices`
120
+ - `type AgentRuns`
121
+ - `type AgentGoalOperations`
122
+ - `type AgentCommands`
123
+ - `type AgentExecutor`
124
+
125
+ ### migrations
126
+
127
+ ### `migrations/agent_initial.cjs`
128
+ Exports
129
+ - None
@@ -0,0 +1,149 @@
1
+ # packages/agent
2
+
3
+ Generated by `npm run agent-docs:build`.
4
+ Do not edit manually.
5
+
6
+ Generated inventory for `packages/agent`.
7
+ Use this on demand; do not load the full index at startup.
8
+
9
+ ## Scope
10
+ - Source: `packages/agent/**/*{.js,.mjs,.cjs,.vue}`
11
+ - Excludes: `.build/`, `.git/`, `.jscpd/`, `.jskit/`, `coverage/`, `dist/`, `docs/`, `node_modules/`, `test/`, `tests/`, `__tests__/`, `.vitepress/cache/`, `.vitepress/dist/`, `skills/jskit/references/patterns/`, `*.test.*`, `*.spec.*`, `*.vitest.*`
12
+
13
+ ## Sections
14
+
15
+ ### src
16
+
17
+ ### `src/server/callbacks.js`
18
+ Exports
19
+ - `assertCallbacks(entry, callbacks)`
20
+
21
+ ### `src/server/checks.js`
22
+ Exports
23
+ - `checkTexts(app)`
24
+ - `withoutClosingWords(transcript)`
25
+ - `withoutMarkup(text)`
26
+ - `toolRecord(transcript = [], events = [], app = "The app")`
27
+ - `unsupportedClaims({ model, reply, record })`
28
+ - `stoppedShort(text)`
29
+ - `LEAKED_MARKUP`
30
+ - `reportsActions(text)`
31
+
32
+ ### `src/server/context.js`
33
+ Exports
34
+ - `withinBudget(history, maxTokens = HISTORY_MAX_TOKENS)`
35
+ - `summaryNote(summary)`
36
+ - `trimOldResults(messages, left = new Set(), limits = TURN_LIMITS)`
37
+ - `clipOldResult(message)`
38
+ - `windowLimits(contextTokens = WINDOW_TOKENS)`
39
+ - `HISTORY_MAX_TOKENS`
40
+ - `TURN_LIMITS`
41
+ - `OLD_RESULT_CHARS`
42
+ - `WINDOW_TOKENS`
43
+ Local functions
44
+ - `partTokens(part)`
45
+
46
+ ### `src/server/index.js`
47
+ Exports
48
+ - `createTool`
49
+ - `modelTools`
50
+ - `toolSchema`
51
+ - `chatModel`
52
+ - `generateOnce`
53
+ - `REASONING`
54
+ - `LOOP_OUTPUT_TOKENS`
55
+ - `MODEL_RETRIES`
56
+ - `runLoop`
57
+ - `cleanTranscript`
58
+ - `REPLY_DEADLINE_MS`
59
+ - `estimateTokens`
60
+ - `textPart`
61
+ - `READ_LIMIT`
62
+ - `sameGist`
63
+ - `stripNotes`
64
+ - `withinBudget`
65
+ - `summaryNote`
66
+ - `trimOldResults`
67
+ - `clipOldResult`
68
+ - `windowLimits`
69
+ - `TURN_LIMITS`
70
+ - `HISTORY_MAX_TOKENS`
71
+ - `OLD_RESULT_CHARS`
72
+ - `WINDOW_TOKENS`
73
+ - `checkTexts`
74
+ - `stoppedShort`
75
+ - `withoutClosingWords`
76
+ - `LEAKED_MARKUP`
77
+ - `withoutMarkup`
78
+ - `reportsActions`
79
+ - `toolRecord`
80
+ - `unsupportedClaims`
81
+ - `compactMessages`
82
+ - `writeSummary`
83
+ - `transcriptText`
84
+ - `cutPoint`
85
+ - `SUMMARY_LIMITS`
86
+ - `hearWhileWorking`
87
+ - `remindOnRepeat`
88
+ - `assertCallbacks`
89
+
90
+ ### `src/server/loop.js`
91
+ Exports
92
+ - `runLoop({ model, name, instructions, history, tools = {}, summary = "", state = "", maxSteps, onSteps = saveNoSteps, onStep = ignoreStep, onText = null, signal = null, carriesOn = false, quietIfEmpty = false, clean = stripNotes, throwIf = neverThrow, reasoning = REASONING.on, maxOutputTokens = LOOP_OUTPUT_TOKENS, turnLimits = TURN_LIMITS, deadlineMs = REPLY_DEADLINE_MS })`
93
+ - `cleanTranscript(messages = [])`
94
+ - `REPLY_DEADLINE_MS(Number(process.env.AGENT_REPLY_MINUTES) || 15) * 60 * 1000; /** * The agent loop: call the model, run the tools it asks for, feed the results back, until it * answers without a tool call, runs out of steps or reaches its deadline. Every step reasons; old * tool results give way inside a long turn; each finished step can be saved. A reply always ends * with a message: one that stops early ends with the model's own account of where it got to. * * `history` is the conversation as model messages. The summary, the state note and any other * system messages in it go into the system prompt, after the instructions, in that order. * Returns { text, transcript, unfinished?, account? }; `unfinished` (out of steps or time) means the * job can carry on from here, and `account` is the account the reply ends with, when it ends with * one, so a check that sends a reply back can leave the engine's own words alone. With `onText(text)` the reply streams: each step's words so far, as they * come. `onStep(step)` hears each finished step. Aborting `signal` (the person pressed Stop, or a * tool's outcome is unknown) ends the run at once with the signal's reason, without an account. * When `throwIf(error, steps)` says so, a failed call ends the run with its error instead of an * account (an app that shows errors itself, when nothing was done yet). Each callback option is a * function, or left out for its named default; anything else is refused with a TypeError naming it. */ export async function runLoop({ model, name, instructions, history, tools = {}, summary = "", state = "", maxSteps, onSteps = saveNoSteps, onStep = ignoreStep, onText = null, signal = null, carriesOn = false, quietIfEmpty = false, clean = stripNotes, throwIf = neverThrow, reasoning = REASONING.on, maxOutputTokens = LOOP_OUTPUT_TOKENS, turnLimits = TURN_LIMITS, deadlineMs = REPLY_DEADLINE_MS }) { assertCallbacks("runLoop", { onSteps, onStep, clean, throwIf }); const messages = [...history]; // A transcript cut mid-way must not start with a tool result. while (messages.length && messages[0].role === "tool") messages.shift(); if (summary) messages.unshift({ role: "system", content: summaryNote(summary) }); if (state) messages.splice(Math.max(0, messages.length - 1), 0, { role: "system", content: state }); const system = [instructions, ...messages.filter((message)`
95
+ Local functions
96
+ - `saveNoSteps()`
97
+ - `ignoreStep()`
98
+ - `neverThrow()`
99
+ - `streamed(call, onText)`
100
+ - `systemPrompt(model, parts)`
101
+ - `replyText(transcript)`
102
+ - `stepLog(steps)`
103
+ - `sumUp({ model, name, conversation, steps, reason, carriesOn, clean })`
104
+
105
+ ### `src/server/model.js`
106
+ Exports
107
+ - `chatModel({ apiKey, model, baseURL, anthropicURL = "", fetch: fetchImpl })`
108
+ - `generateOnce({ model, system, messages, reasoning = REASONING.off, maxOutputTokens })`
109
+ - `REASONING`
110
+ - `LOOP_OUTPUT_TOKENS`
111
+ - `MODEL_RETRIES`
112
+
113
+ ### `src/server/schema.js`
114
+ Exports
115
+ - `toolSchema(schema)`
116
+ Local functions
117
+ - `describe(node, constraints)`
118
+ - `rewrite(node)`
119
+
120
+ ### `src/server/summaries.js`
121
+ Exports
122
+ - `transcriptText(modelMessages, { named = false } = {})`
123
+ - `writeSummary({ model, app, previous, text, limits = SUMMARY_LIMITS })`
124
+ - `cutPoint(messages, sizes, limits = SUMMARY_LIMITS)`
125
+ - `compactMessages({ model, app = "the app", messages, saved = null, previous = "", limits = SUMMARY_LIMITS, summarize = (input) => writeSummary({ model, app, ...input, limits }), onCompacting = ignoreCompacting })`
126
+ - `SUMMARY_LIMITS`
127
+ Local functions
128
+ - `prompt(app)`
129
+ - `ignoreCompacting()`
130
+
131
+ ### `src/server/text.js`
132
+ Exports
133
+ - `estimateTokens(messages)`
134
+ - `textPart(text, fromLine = 1)`
135
+ - `sameGist(a, b)`
136
+ - `stripNotes(text)`
137
+ - `READ_LIMIT`
138
+
139
+ ### `src/server/tool.js`
140
+ Exports
141
+ - `createTool(definition)`
142
+ - `modelTools(tools = {})`
143
+
144
+ ### `src/server/turn.js`
145
+ Exports
146
+ - `hearWhileWorking(tool, inbox)`
147
+ - `remindOnRepeat(tool, repeats)`
148
+ Local functions
149
+ - `sortedJson(value)`
@@ -36,19 +36,36 @@ Local functions
36
36
  - `emptyEnvironment()`
37
37
  - `normalizedSegment(value)`
38
38
 
39
+ ### `src/calls/external.js`
40
+ Exports
41
+ - `NODE_GLOBALS`
42
+ - `createExternalValues({ checker, symbols, fileOf })`
43
+ - `isComponentFile(file)`
44
+ Local functions
45
+ - `isNullish(expression)`
46
+
39
47
  ### `src/calls/features.js`
40
48
  Exports
41
49
  - `bindFeatures({ calls, symbols, evaluator })`
42
50
  Local functions
43
51
  - `memberNamed(objectLiteral, name)`
44
52
  - `isActionObject(node)`
53
+ - `objectLiteral(expression, symbols, depth = 0)`
54
+ - `memberValue(member)`
55
+ - `executeFunctions(member, symbols)`
56
+ - `collectCrudActions(declarations, { symbols, evaluator })`
57
+ - `crudNamespace(config, { symbols, evaluator })`
45
58
  - `collectFeatureActions(features, { symbols, evaluator })`
46
59
 
47
60
  ### `src/calls/functions.js`
48
61
  Exports
49
62
  - `collectFileFunctions({ file, hash, sourceFile, checker })`
63
+ - `isCalledInPlace(fn)`
50
64
  - `isFunctionLike(node)`
65
+ - `owningParameter(declaration)`
66
+ - `parameterNames(fn)`
51
67
  - `point(sourceFile, position)`
68
+ - `runsDuring(node, fn)`
52
69
  - `safeAliased(checker, symbol)`
53
70
  - `unwrapExpression(node)`
54
71
  Local functions
@@ -80,13 +97,8 @@ Exports
80
97
  Local functions
81
98
  - `weakerVia(left, right)`
82
99
  - `isAnyType(type)`
83
- - `isComponentFile(file)`
84
- - `isNullish(expression)`
85
100
  - `compatibleSides(left, right)`
86
101
  - `libraryMemberNames(program)`
87
- - `isCalledInPlace(fn)`
88
- - `runsDuring(node, fn)`
89
- - `parameterNames(fn)`
90
102
  - `constructorOf(implementation)`
91
103
 
92
104
  ### `src/calls/symbols.js`
@@ -109,6 +121,13 @@ Local functions
109
121
  - `matchSegments(client, route, clientIndex = 0, routeIndex = 0, score = { literal: 0, wildcard: 0 })`
110
122
  - `routeLiterals(route)`
111
123
 
124
+ ### `src/calls/types.js`
125
+ Exports
126
+ - `type FileOf`
127
+ - `type CallSymbols`
128
+ - `type CallEvaluator`
129
+ - `type FeatureBindings`
130
+
112
131
  ### `src/cli.js`
113
132
  Exports
114
133
  - None
@@ -124,44 +143,47 @@ Local functions
124
143
  Exports
125
144
  - `inspectVueArchitecture({ projectRoot, input, aliases = {}, httpScope = "", apiBasePath = "", calls = false, apiPrefixAliases = [] })`
126
145
  Local functions
127
- - `hashBytes(source)`
128
- - `isCanonicalPath(value)`
129
- - `propertyKey(entry)`
130
- - `isStaticObjectProperty(entry)`
131
- - `objectProperty(node, key)`
132
- - `hasOnlyStaticProperties(node)`
133
- - `isFunctionNode(node)`
134
- - `directoryPrefixes(filePath)`
135
- - `nodeRecord(node, parent)`
136
- - `collectNodes(root)`
137
- - `staticValue(node, bindings, seen = new Set(), environment = null)`
138
- - `staticObjectValue(node, bindings, seen, environment)`
139
- - `bindingNode(node, bindings, seen = new Set())`
140
- - `isShadowed({ ancestors }, name)`
141
- - `isLocalCall(record, names)`
142
- - `importedNames(module, source, imported)`
143
- - `findRecord(module, node)`
144
- - `kebabCase(name)`
145
- - `templateTagImport(module, tag)`
146
- - `sourcePoint(module, index)`
147
- - `sourceEvidence(module, node, offset = 0)`
148
- - `pageTitle(file)`
149
146
  - `validateInput({ projectRoot, input, aliases, apiPrefixAliases })`
150
147
  - `createOutput({ input, calls })`
151
- - `warn(inspection, code, message, source)`
152
- - `readDeclaredSource(inspection, filePath)`
148
+ - `importSpecifierName(specifier)`
149
+ - `isTypeOnlyImport(node)`
150
+ - `collectImports(inspection)`
151
+ - `parentIdForFile(inspection, file)`
152
+ - `discoverCalls(inspection)`
153
+ - `inspectCallsAndCache(inspection, { sources, hashes, keys, location, reuse })`
154
+
155
+ ### `src/previewLocator.js`
156
+ Exports
157
+ - None
158
+
159
+ ### `src/vue/modules.js`
160
+ Exports
161
+ - `MAX_RESOURCE_HOPS`
162
+ - `SCRIPT_FILE_PATTERN`
163
+ - `SOURCES`
164
+ - `loadModule(inspection, filePath)`
153
165
  - `projectHttpScope(inspection)`
166
+ - `readDeclaredSource(inspection, filePath)`
167
+ - `resolveImport(inspection, from, specifier)`
168
+ - `resolvePackageImport(inspection, from, specifier)`
154
169
  - `utf8Source(bytes, filePath)`
155
- - `loadModule(inspection, filePath)`
170
+ - `warn(inspection, code, message, source)`
171
+ Local functions
156
172
  - `scriptUnits(inspection, module)`
157
173
  - `indexScriptUnit(inspection, module, unit)`
158
174
  - `indexDeclaration(module, node, parent)`
159
- - `resolveImport(inspection, from, specifier)`
160
175
  - `resolvePackageEntryFile(inspection, from, specifier)`
161
- - `resolvePackageImport(inspection, from, specifier)`
176
+ - `packageEntryTarget(entry, importPath)`
177
+
178
+ ### `src/vue/pages.js`
179
+ Exports
180
+ - `crudOperationKey(inspection, surface, namespace, operation, apiSuffix)`
181
+ - `discoverComponents(inspection)`
182
+ - `discoverPages(inspection, discoveries)`
162
183
  - `resolveCrudResource(inspection, module, node, seen = new Set())`
184
+ Local functions
185
+ - `pageTitle(file)`
163
186
  - `resolveExportedCrudResource(inspection, module, name, seen)`
164
- - `crudOperationKey(inspection, surface, namespace, operation, apiSuffix)`
165
187
  - `recordPage(inspection, { file, discovery, identity, registrationModule, registrationNode, parentId = null })`
166
188
  - `isSupportedFilesystemOptions(options)`
167
189
  - `discoverFilesystemPages(inspection, discovery, module, registrationPath)`
@@ -170,9 +192,7 @@ Local functions
170
192
  - `discoverRegisteredPages(inspection, discovery, module, registrationPath)`
171
193
  - `routeComponentSpecifier(module, component)`
172
194
  - `recordRegisteredRoutes(inspection, { routes, discovery, module, registrationPath })`
173
- - `discoverPages(inspection, discoveries)`
174
195
  - `readTemplate(module)`
175
- - `discoverComponents(inspection)`
176
196
  - `recordComponentUse(inspection, { module, file, parentId, tag, pending })`
177
197
  - `recordPackageComponent(inspection, { module, file, tag, imported })`
178
198
  - `crudScreenKind(component)`
@@ -182,10 +202,28 @@ Local functions
182
202
  - `recordCrudScreenUse(inspection, { module, file, parentId, tag })`
183
203
  - `isGlobalFetchCall(module, { node, ancestors })`
184
204
  - `recordFetchUses(inspection, { module, parentId, eventHandlers })`
205
+
206
+ ### `src/vue/routes.js`
207
+ Exports
185
208
  - `discoverEntryOperations(inspection)`
209
+ Local functions
186
210
  - `crudControllerOperations(module, config, resource)`
187
211
  - `recordCrudController(inspection, { module, file, record })`
188
- - `recordFeatureRoute(inspection, { module, file, record, featureFactories })`
212
+ - `recordCrudActionRoutes(inspection, { module, record, config, namespace, apiSuffix })`
213
+ - `objectDeclaration(inspection, module, node, seen = new Set())`
214
+ - `exportedObjectDeclaration(inspection, module, source, name, seen)`
215
+ - `recordFeatureRoutes(inspection, { module, record })`
216
+ - `featureSetup(module, definition)`
217
+ - `isNamedMember(node, name)`
218
+ - `setupRouter(setup)`
219
+ - `parameterRouter(parameter)`
220
+ - `bindsWithin(record, fn, name)`
221
+ - `recordRouterRoutes(inspection, { module, fn, router, depth, seen })`
222
+ - `recordRouterRoute(inspection, module, record)`
223
+ - `routeLiteral(module, node, seen = new Set())`
224
+ - `projectFunction(inspection, module, name, seen = new Set())`
225
+ - `exportedFunction(inspection, module, source, name, seen)`
226
+ - `localFunction(module, name)`
189
227
  - `scopeOption(inspection, module, node, fallback)`
190
228
  - `importedConstant(inspection, module, name, seen)`
191
229
  - `exportedConstant(inspection, module, name, seen)`
@@ -196,13 +234,28 @@ Local functions
196
234
  - `unrolledEnvironments(module, { node, ancestors })`
197
235
  - `recordActionRouteScopes(inspection, { module, file })`
198
236
  - `recordScopedRoute(inspection, { module, file, routeBase, registration, kind })`
199
- - `importSpecifierName(specifier)`
200
- - `isTypeOnlyImport(node)`
201
- - `collectImports(inspection)`
202
- - `parentIdForFile(inspection, file)`
203
- - `discoverCalls(inspection)`
204
- - `inspectCallsAndCache(inspection, { sources, hashes, keys, location, reuse })`
205
237
 
206
- ### `src/previewLocator.js`
238
+ ### `src/vue/syntax.js`
207
239
  Exports
208
- - None
240
+ - `bindingNode(node, bindings, seen = new Set())`
241
+ - `collectNodes(root)`
242
+ - `directoryPrefixes(filePath)`
243
+ - `findRecord(module, node)`
244
+ - `hasOnlyStaticProperties(node)`
245
+ - `hashBytes(source)`
246
+ - `importedNames(module, source, imported)`
247
+ - `isCanonicalPath(value)`
248
+ - `isFunctionNode(node)`
249
+ - `isLocalCall(record, names)`
250
+ - `isShadowed({ ancestors }, name)`
251
+ - `isStaticObjectProperty(entry)`
252
+ - `objectProperty(node, key)`
253
+ - `propertyKey(entry)`
254
+ - `sourceEvidence(module, node, offset = 0)`
255
+ - `staticValue(node, bindings, seen = new Set(), environment = null)`
256
+ - `templateTagImport(module, tag)`
257
+ Local functions
258
+ - `nodeRecord(node, parent)`
259
+ - `staticObjectValue(node, bindings, seen, environment)`
260
+ - `kebabCase(name)`
261
+ - `sourcePoint(module, index)`