vibe64 0.1.21

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 (1694) hide show
  1. package/.jskit/lock.json +485 -0
  2. package/bin/dev.js +49 -0
  3. package/bin/run.js +410 -0
  4. package/bin/server.js +49 -0
  5. package/config/public.js +42 -0
  6. package/config/server.js +1 -0
  7. package/config/surfaceAccessPolicies.js +3 -0
  8. package/dist/assets/ProjectTypeGate-DStq4W4X.js +1 -0
  9. package/dist/assets/ProjectTypeGate-Dh2ycSoM.css +1 -0
  10. package/dist/assets/SetupReadinessGate-CrNkQiVF.css +1 -0
  11. package/dist/assets/SetupReadinessGate-DkkorR2Y.js +1 -0
  12. package/dist/assets/ShellLayout-BcKS2HG9.js +1 -0
  13. package/dist/assets/ShellLayout-iIToXwhu.css +1 -0
  14. package/dist/assets/VTabs-BJ8MKoig.js +1 -0
  15. package/dist/assets/VTabs-CeSUETEY.css +1 -0
  16. package/dist/assets/error-CwT53qTu.js +1 -0
  17. package/dist/assets/favicon-B93tlu1U.svg +7 -0
  18. package/dist/assets/history-DlGwVMJG.css +1 -0
  19. package/dist/assets/history-HQ_XliX2.js +1 -0
  20. package/dist/assets/home-B89EbUmA.js +1 -0
  21. package/dist/assets/home-BFMergZX.css +1 -0
  22. package/dist/assets/index-16P0GeGq.js +134 -0
  23. package/dist/assets/index-BJxDQvyK.js +1 -0
  24. package/dist/assets/index-Bf6YPMks.css +1 -0
  25. package/dist/assets/index-CEtTJqh9.css +1 -0
  26. package/dist/assets/index-CY-wDjNv.js +51 -0
  27. package/dist/assets/index-eMhOXhf_.css +1 -0
  28. package/dist/assets/placement-7FCYadh2.js +1 -0
  29. package/dist/assets/placementTopology-DzizQX71.js +1 -0
  30. package/dist/assets/route-block-B_A1xBdJ.js +1 -0
  31. package/dist/assets/setup-BTfwzKoL.css +1 -0
  32. package/dist/assets/setup-BzzdD38G.js +4 -0
  33. package/dist/assets/streamEvents-Ba9kHw-1.js +1 -0
  34. package/dist/assets/studioGateApi-hkZdLr1Y.js +1 -0
  35. package/dist/assets/target-scripts-8hczu84t.js +1 -0
  36. package/dist/assets/target-scripts-BlbS3u6b.css +1 -0
  37. package/dist/assets/useStudioTerminal-D9TNb50w.js +1 -0
  38. package/dist/assets/vibe64SessionPanelModel-DvY_IbW3.js +1 -0
  39. package/dist/assets/xterm-6GBZ9nXN.css +32 -0
  40. package/dist/assets/xterm-BADreHn8.js +38 -0
  41. package/dist/index.html +14 -0
  42. package/node_modules/@jskit-ai/kernel/_testable/index.js +4 -0
  43. package/node_modules/@jskit-ai/kernel/client/appConfig.js +47 -0
  44. package/node_modules/@jskit-ai/kernel/client/appConfig.test.js +71 -0
  45. package/node_modules/@jskit-ai/kernel/client/componentInteraction.js +51 -0
  46. package/node_modules/@jskit-ai/kernel/client/componentInteraction.test.js +111 -0
  47. package/node_modules/@jskit-ai/kernel/client/descriptorSections.js +75 -0
  48. package/node_modules/@jskit-ai/kernel/client/index.d.ts +95 -0
  49. package/node_modules/@jskit-ai/kernel/client/index.js +4 -0
  50. package/node_modules/@jskit-ai/kernel/client/logging.js +38 -0
  51. package/node_modules/@jskit-ai/kernel/client/mobileLaunchRouting.js +231 -0
  52. package/node_modules/@jskit-ai/kernel/client/mobileLaunchRouting.test.js +230 -0
  53. package/node_modules/@jskit-ai/kernel/client/moduleBootstrap.js +664 -0
  54. package/node_modules/@jskit-ai/kernel/client/moduleBootstrap.test.js +420 -0
  55. package/node_modules/@jskit-ai/kernel/client/pageRedirects.d.ts +5 -0
  56. package/node_modules/@jskit-ai/kernel/client/pageRedirects.js +45 -0
  57. package/node_modules/@jskit-ai/kernel/client/pageRedirects.test.js +71 -0
  58. package/node_modules/@jskit-ai/kernel/client/shellBootstrap.js +252 -0
  59. package/node_modules/@jskit-ai/kernel/client/shellBootstrap.test.js +195 -0
  60. package/node_modules/@jskit-ai/kernel/client/shellRouting.js +321 -0
  61. package/node_modules/@jskit-ai/kernel/client/shellRouting.test.js +113 -0
  62. package/node_modules/@jskit-ai/kernel/client/vite/clientBootstrapPlugin.js +260 -0
  63. package/node_modules/@jskit-ai/kernel/client/vite/clientBootstrapPlugin.test.js +563 -0
  64. package/node_modules/@jskit-ai/kernel/client/vite/index.js +3 -0
  65. package/node_modules/@jskit-ai/kernel/internal/node/fileSystem.js +21 -0
  66. package/node_modules/@jskit-ai/kernel/internal/node/installedPackageDescriptor.js +125 -0
  67. package/node_modules/@jskit-ai/kernel/package.json +58 -0
  68. package/node_modules/@jskit-ai/kernel/server/actions/ActionRuntimeServiceProvider.js +304 -0
  69. package/node_modules/@jskit-ai/kernel/server/actions/ActionRuntimeServiceProvider.test.js +558 -0
  70. package/node_modules/@jskit-ai/kernel/server/actions/index.js +6 -0
  71. package/node_modules/@jskit-ai/kernel/server/container/ContainerCoreServiceProvider.js +27 -0
  72. package/node_modules/@jskit-ai/kernel/server/container/index.js +10 -0
  73. package/node_modules/@jskit-ai/kernel/server/exportPolicy.test.js +68 -0
  74. package/node_modules/@jskit-ai/kernel/server/http/HttpFastifyServiceProvider.js +25 -0
  75. package/node_modules/@jskit-ai/kernel/server/http/_testable/index.js +2 -0
  76. package/node_modules/@jskit-ai/kernel/server/http/index.js +1 -0
  77. package/node_modules/@jskit-ai/kernel/server/http/lib/controller.js +183 -0
  78. package/node_modules/@jskit-ai/kernel/server/http/lib/controller.test.js +143 -0
  79. package/node_modules/@jskit-ai/kernel/server/http/lib/errors.js +12 -0
  80. package/node_modules/@jskit-ai/kernel/server/http/lib/httpRuntime.js +83 -0
  81. package/node_modules/@jskit-ai/kernel/server/http/lib/index.js +17 -0
  82. package/node_modules/@jskit-ai/kernel/server/http/lib/kernel.js +15 -0
  83. package/node_modules/@jskit-ai/kernel/server/http/lib/kernel.test.js +1565 -0
  84. package/node_modules/@jskit-ai/kernel/server/http/lib/middlewareRuntime.js +149 -0
  85. package/node_modules/@jskit-ai/kernel/server/http/lib/requestActionExecutor.js +265 -0
  86. package/node_modules/@jskit-ai/kernel/server/http/lib/requestScope.js +57 -0
  87. package/node_modules/@jskit-ai/kernel/server/http/lib/routeRegistration.js +415 -0
  88. package/node_modules/@jskit-ai/kernel/server/http/lib/routeSupport.js +45 -0
  89. package/node_modules/@jskit-ai/kernel/server/http/lib/routeTransport.js +126 -0
  90. package/node_modules/@jskit-ai/kernel/server/http/lib/routeValidator.js +404 -0
  91. package/node_modules/@jskit-ai/kernel/server/http/lib/routeValidator.test.js +581 -0
  92. package/node_modules/@jskit-ai/kernel/server/http/lib/router.js +239 -0
  93. package/node_modules/@jskit-ai/kernel/server/kernel/KernelCoreServiceProvider.js +27 -0
  94. package/node_modules/@jskit-ai/kernel/server/kernel/index.js +10 -0
  95. package/node_modules/@jskit-ai/kernel/server/platform/PlatformServerRuntimeServiceProvider.js +30 -0
  96. package/node_modules/@jskit-ai/kernel/server/platform/index.js +5 -0
  97. package/node_modules/@jskit-ai/kernel/server/platform/providerRuntime/descriptorCatalog.js +170 -0
  98. package/node_modules/@jskit-ai/kernel/server/platform/providerRuntime/helpers.js +45 -0
  99. package/node_modules/@jskit-ai/kernel/server/platform/providerRuntime/lockfile.js +27 -0
  100. package/node_modules/@jskit-ai/kernel/server/platform/providerRuntime/providerLoader.js +283 -0
  101. package/node_modules/@jskit-ai/kernel/server/platform/providerRuntime.js +153 -0
  102. package/node_modules/@jskit-ai/kernel/server/platform/providerRuntime.test.js +329 -0
  103. package/node_modules/@jskit-ai/kernel/server/platform/runtime.js +40 -0
  104. package/node_modules/@jskit-ai/kernel/server/platform/surfaceRuntime.js +150 -0
  105. package/node_modules/@jskit-ai/kernel/server/platform/surfaceRuntime.test.js +136 -0
  106. package/node_modules/@jskit-ai/kernel/server/registries/actionSurfaceSourceRegistry.js +148 -0
  107. package/node_modules/@jskit-ai/kernel/server/registries/bootstrapPayloadContributorRegistry.js +51 -0
  108. package/node_modules/@jskit-ai/kernel/server/registries/domainEventListenerRegistry.js +58 -0
  109. package/node_modules/@jskit-ai/kernel/server/registries/index.js +32 -0
  110. package/node_modules/@jskit-ai/kernel/server/registries/primitives.js +63 -0
  111. package/node_modules/@jskit-ai/kernel/server/registries/routeVisibilityResolverRegistry.js +84 -0
  112. package/node_modules/@jskit-ai/kernel/server/registries/serviceRegistrationRegistry.js +428 -0
  113. package/node_modules/@jskit-ai/kernel/server/runtime/ServerRuntimeCoreServiceProvider.js +64 -0
  114. package/node_modules/@jskit-ai/kernel/server/runtime/ServerRuntimeCoreServiceProvider.test.js +53 -0
  115. package/node_modules/@jskit-ai/kernel/server/runtime/apiRoutePolicyParity.test.js +109 -0
  116. package/node_modules/@jskit-ai/kernel/server/runtime/apiRouteRegistration.js +65 -0
  117. package/node_modules/@jskit-ai/kernel/server/runtime/bootBootstrapRoutes.js +29 -0
  118. package/node_modules/@jskit-ai/kernel/server/runtime/bootBootstrapRoutes.test.js +69 -0
  119. package/node_modules/@jskit-ai/kernel/server/runtime/bootstrapContributors.test.js +166 -0
  120. package/node_modules/@jskit-ai/kernel/server/runtime/canonicalJson.js +74 -0
  121. package/node_modules/@jskit-ai/kernel/server/runtime/composition.js +142 -0
  122. package/node_modules/@jskit-ai/kernel/server/runtime/domainEvents.test.js +114 -0
  123. package/node_modules/@jskit-ai/kernel/server/runtime/domainRules.js +50 -0
  124. package/node_modules/@jskit-ai/kernel/server/runtime/domainRules.test.js +87 -0
  125. package/node_modules/@jskit-ai/kernel/server/runtime/entityChangeEvents.js +182 -0
  126. package/node_modules/@jskit-ai/kernel/server/runtime/entityChangeEvents.test.js +211 -0
  127. package/node_modules/@jskit-ai/kernel/server/runtime/errors.js +68 -0
  128. package/node_modules/@jskit-ai/kernel/server/runtime/errors.test.js +73 -0
  129. package/node_modules/@jskit-ai/kernel/server/runtime/fastifyBootstrap.js +553 -0
  130. package/node_modules/@jskit-ai/kernel/server/runtime/fastifyBootstrap.test.js +380 -0
  131. package/node_modules/@jskit-ai/kernel/server/runtime/index.js +6 -0
  132. package/node_modules/@jskit-ai/kernel/server/runtime/integers.js +13 -0
  133. package/node_modules/@jskit-ai/kernel/server/runtime/moduleConfig.js +223 -0
  134. package/node_modules/@jskit-ai/kernel/server/runtime/moduleConfig.test.js +165 -0
  135. package/node_modules/@jskit-ai/kernel/server/runtime/pagination.js +13 -0
  136. package/node_modules/@jskit-ai/kernel/server/runtime/realtimeNormalization.js +21 -0
  137. package/node_modules/@jskit-ai/kernel/server/runtime/requestUrl.js +38 -0
  138. package/node_modules/@jskit-ai/kernel/server/runtime/routeUtils.js +20 -0
  139. package/node_modules/@jskit-ai/kernel/server/runtime/runtimeAssembly.js +113 -0
  140. package/node_modules/@jskit-ai/kernel/server/runtime/runtimeKernel.js +55 -0
  141. package/node_modules/@jskit-ai/kernel/server/runtime/securityAudit.js +269 -0
  142. package/node_modules/@jskit-ai/kernel/server/runtime/securityAudit.test.js +41 -0
  143. package/node_modules/@jskit-ai/kernel/server/runtime/serviceAuthorization.js +113 -0
  144. package/node_modules/@jskit-ai/kernel/server/runtime/serviceAuthorization.test.js +100 -0
  145. package/node_modules/@jskit-ai/kernel/server/runtime/serviceRegistration.test.js +197 -0
  146. package/node_modules/@jskit-ai/kernel/server/support/SupportCoreServiceProvider.js +27 -0
  147. package/node_modules/@jskit-ai/kernel/server/support/appConfig.js +128 -0
  148. package/node_modules/@jskit-ai/kernel/server/support/appConfig.test.js +195 -0
  149. package/node_modules/@jskit-ai/kernel/server/support/appConfigFiles.js +80 -0
  150. package/node_modules/@jskit-ai/kernel/server/support/appConfigFiles.test.js +94 -0
  151. package/node_modules/@jskit-ai/kernel/server/support/defaultMissingHandler.js +7 -0
  152. package/node_modules/@jskit-ai/kernel/server/support/importFreshModuleFromAbsolutePath.js +23 -0
  153. package/node_modules/@jskit-ai/kernel/server/support/importFreshModuleFromAbsolutePath.test.js +36 -0
  154. package/node_modules/@jskit-ai/kernel/server/support/index.js +24 -0
  155. package/node_modules/@jskit-ai/kernel/server/support/pageTargets.js +772 -0
  156. package/node_modules/@jskit-ai/kernel/server/support/pageTargets.test.js +659 -0
  157. package/node_modules/@jskit-ai/kernel/server/support/path.js +20 -0
  158. package/node_modules/@jskit-ai/kernel/server/support/routePolicyConfig.js +51 -0
  159. package/node_modules/@jskit-ai/kernel/server/support/shellOutlets.js +612 -0
  160. package/node_modules/@jskit-ai/kernel/server/support/shellOutlets.test.js +339 -0
  161. package/node_modules/@jskit-ai/kernel/server/support/symlinkSafeRequire.js +78 -0
  162. package/node_modules/@jskit-ai/kernel/server/support/symlinkSafeRequire.test.js +27 -0
  163. package/node_modules/@jskit-ai/kernel/server/surface/SurfaceRoutingServiceProvider.js +27 -0
  164. package/node_modules/@jskit-ai/kernel/server/surface/index.js +19 -0
  165. package/node_modules/@jskit-ai/kernel/shared/actions/actionContributorHelpers.js +28 -0
  166. package/node_modules/@jskit-ai/kernel/shared/actions/actionContributorHelpers.test.js +16 -0
  167. package/node_modules/@jskit-ai/kernel/shared/actions/actionDefinitions.js +375 -0
  168. package/node_modules/@jskit-ai/kernel/shared/actions/actionDefinitions.test.js +193 -0
  169. package/node_modules/@jskit-ai/kernel/shared/actions/audit.js +7 -0
  170. package/node_modules/@jskit-ai/kernel/shared/actions/executionContext.js +86 -0
  171. package/node_modules/@jskit-ai/kernel/shared/actions/executionContext.test.js +66 -0
  172. package/node_modules/@jskit-ai/kernel/shared/actions/idempotency.js +62 -0
  173. package/node_modules/@jskit-ai/kernel/shared/actions/index.js +2 -0
  174. package/node_modules/@jskit-ai/kernel/shared/actions/observability.js +10 -0
  175. package/node_modules/@jskit-ai/kernel/shared/actions/pipeline.js +287 -0
  176. package/node_modules/@jskit-ai/kernel/shared/actions/policies.js +198 -0
  177. package/node_modules/@jskit-ai/kernel/shared/actions/policies.test.js +222 -0
  178. package/node_modules/@jskit-ai/kernel/shared/actions/registry.js +187 -0
  179. package/node_modules/@jskit-ai/kernel/shared/actions/registry.test.js +355 -0
  180. package/node_modules/@jskit-ai/kernel/shared/actions/requestMeta.js +36 -0
  181. package/node_modules/@jskit-ai/kernel/shared/actions/textNormalization.js +3 -0
  182. package/node_modules/@jskit-ai/kernel/shared/actions/withActionDefaults.js +34 -0
  183. package/node_modules/@jskit-ai/kernel/shared/index.js +2 -0
  184. package/node_modules/@jskit-ai/kernel/shared/runtime/application.js +323 -0
  185. package/node_modules/@jskit-ai/kernel/shared/runtime/container.js +261 -0
  186. package/node_modules/@jskit-ai/kernel/shared/runtime/containerErrors.js +22 -0
  187. package/node_modules/@jskit-ai/kernel/shared/runtime/index.js +18 -0
  188. package/node_modules/@jskit-ai/kernel/shared/runtime/kernelErrors.js +20 -0
  189. package/node_modules/@jskit-ai/kernel/shared/runtime/serviceProvider.js +13 -0
  190. package/node_modules/@jskit-ai/kernel/shared/support/containerToken.js +8 -0
  191. package/node_modules/@jskit-ai/kernel/shared/support/crudFieldContract.js +322 -0
  192. package/node_modules/@jskit-ai/kernel/shared/support/crudFieldContract.test.js +67 -0
  193. package/node_modules/@jskit-ai/kernel/shared/support/crudListFilters.js +838 -0
  194. package/node_modules/@jskit-ai/kernel/shared/support/crudListFilters.test.js +305 -0
  195. package/node_modules/@jskit-ai/kernel/shared/support/crudLookup.js +179 -0
  196. package/node_modules/@jskit-ai/kernel/shared/support/crudLookup.test.js +248 -0
  197. package/node_modules/@jskit-ai/kernel/shared/support/deepFreeze.js +18 -0
  198. package/node_modules/@jskit-ai/kernel/shared/support/formatDateTime.js +10 -0
  199. package/node_modules/@jskit-ai/kernel/shared/support/formatDateTime.test.js +15 -0
  200. package/node_modules/@jskit-ai/kernel/shared/support/generatedUiContract.js +542 -0
  201. package/node_modules/@jskit-ai/kernel/shared/support/generatedUiContract.test.js +208 -0
  202. package/node_modules/@jskit-ai/kernel/shared/support/index.js +15 -0
  203. package/node_modules/@jskit-ai/kernel/shared/support/linkPath.js +67 -0
  204. package/node_modules/@jskit-ai/kernel/shared/support/linkPath.test.js +35 -0
  205. package/node_modules/@jskit-ai/kernel/shared/support/listenerSet.js +26 -0
  206. package/node_modules/@jskit-ai/kernel/shared/support/normalize.js +379 -0
  207. package/node_modules/@jskit-ai/kernel/shared/support/normalize.test.js +326 -0
  208. package/node_modules/@jskit-ai/kernel/shared/support/packageDescriptor.test.js +147 -0
  209. package/node_modules/@jskit-ai/kernel/shared/support/permissions.js +50 -0
  210. package/node_modules/@jskit-ai/kernel/shared/support/pickOwnProperties.js +17 -0
  211. package/node_modules/@jskit-ai/kernel/shared/support/pickOwnProperties.test.js +25 -0
  212. package/node_modules/@jskit-ai/kernel/shared/support/policies.js +11 -0
  213. package/node_modules/@jskit-ai/kernel/shared/support/providerLogger.js +42 -0
  214. package/node_modules/@jskit-ai/kernel/shared/support/queryPath.js +51 -0
  215. package/node_modules/@jskit-ai/kernel/shared/support/queryPath.test.js +39 -0
  216. package/node_modules/@jskit-ai/kernel/shared/support/queryResilience.js +34 -0
  217. package/node_modules/@jskit-ai/kernel/shared/support/queryResilience.test.js +33 -0
  218. package/node_modules/@jskit-ai/kernel/shared/support/returnToPath.js +153 -0
  219. package/node_modules/@jskit-ai/kernel/shared/support/returnToPath.test.js +123 -0
  220. package/node_modules/@jskit-ai/kernel/shared/support/shellLayoutTargets.js +393 -0
  221. package/node_modules/@jskit-ai/kernel/shared/support/shellLayoutTargets.test.js +120 -0
  222. package/node_modules/@jskit-ai/kernel/shared/support/sorting.js +15 -0
  223. package/node_modules/@jskit-ai/kernel/shared/support/stringCase.js +26 -0
  224. package/node_modules/@jskit-ai/kernel/shared/support/tokens.js +1 -0
  225. package/node_modules/@jskit-ai/kernel/shared/support/tokens.test.js +17 -0
  226. package/node_modules/@jskit-ai/kernel/shared/support/visibility.js +93 -0
  227. package/node_modules/@jskit-ai/kernel/shared/support/visibility.test.js +63 -0
  228. package/node_modules/@jskit-ai/kernel/shared/surface/apiPaths.js +157 -0
  229. package/node_modules/@jskit-ai/kernel/shared/surface/apiPaths.test.js +31 -0
  230. package/node_modules/@jskit-ai/kernel/shared/surface/escapeRegExp.js +5 -0
  231. package/node_modules/@jskit-ai/kernel/shared/surface/index.js +10 -0
  232. package/node_modules/@jskit-ai/kernel/shared/surface/paths.js +273 -0
  233. package/node_modules/@jskit-ai/kernel/shared/surface/registry.js +137 -0
  234. package/node_modules/@jskit-ai/kernel/shared/surface/registry.test.js +44 -0
  235. package/node_modules/@jskit-ai/kernel/shared/surface/runtime.js +357 -0
  236. package/node_modules/@jskit-ai/kernel/shared/surface/runtime.test.js +319 -0
  237. package/node_modules/@jskit-ai/kernel/shared/validators/composeSchemaDefinitions.js +53 -0
  238. package/node_modules/@jskit-ai/kernel/shared/validators/composeSchemaDefinitions.test.js +156 -0
  239. package/node_modules/@jskit-ai/kernel/shared/validators/createCursorListValidator.js +29 -0
  240. package/node_modules/@jskit-ai/kernel/shared/validators/createCursorListValidator.test.js +33 -0
  241. package/node_modules/@jskit-ai/kernel/shared/validators/cursorPaginationQueryValidator.js +23 -0
  242. package/node_modules/@jskit-ai/kernel/shared/validators/cursorPaginationQueryValidator.test.js +36 -0
  243. package/node_modules/@jskit-ai/kernel/shared/validators/htmlTimeSchemas.js +15 -0
  244. package/node_modules/@jskit-ai/kernel/shared/validators/index.js +35 -0
  245. package/node_modules/@jskit-ai/kernel/shared/validators/inputNormalization.js +13 -0
  246. package/node_modules/@jskit-ai/kernel/shared/validators/jsonRestSchemaSupport.js +139 -0
  247. package/node_modules/@jskit-ai/kernel/shared/validators/mergeObjectSchemas.js +69 -0
  248. package/node_modules/@jskit-ai/kernel/shared/validators/mergeObjectSchemas.test.js +92 -0
  249. package/node_modules/@jskit-ai/kernel/shared/validators/recordIdParamsValidator.js +41 -0
  250. package/node_modules/@jskit-ai/kernel/shared/validators/recordIdParamsValidator.test.js +28 -0
  251. package/node_modules/@jskit-ai/kernel/shared/validators/resourceRequiredMetadata.js +41 -0
  252. package/node_modules/@jskit-ai/kernel/shared/validators/resourceRequiredMetadata.test.js +62 -0
  253. package/node_modules/@jskit-ai/kernel/shared/validators/schemaDefinitions.js +126 -0
  254. package/node_modules/@jskit-ai/kernel/shared/validators/schemaDefinitions.test.js +51 -0
  255. package/node_modules/@jskit-ai/kernel/shared/validators/schemaPayloadValidation.js +65 -0
  256. package/node_modules/@jskit-ai/kernel/test/barrelExposure.test.js +143 -0
  257. package/node_modules/@jskit-ai/kernel/test/dynamicImportPolicy.test.js +89 -0
  258. package/node_modules/@jskit-ai/kernel/test/exportsContract.test.js +174 -0
  259. package/node_modules/@jskit-ai/kernel/test/routeInputContractGuard.test.js +82 -0
  260. package/node_modules/@jskit-ai/kernel/test/stringCase.test.js +22 -0
  261. package/node_modules/@jskit-ai/kernel/test/surfaceIndependence.test.js +109 -0
  262. package/node_modules/@local/adapter-setup-doctor/package.descriptor.mjs +71 -0
  263. package/node_modules/@local/adapter-setup-doctor/package.json +17 -0
  264. package/node_modules/@local/adapter-setup-doctor/src/server/AdapterSetupDoctorProvider.js +60 -0
  265. package/node_modules/@local/adapter-setup-doctor/src/server/actions.js +32 -0
  266. package/node_modules/@local/adapter-setup-doctor/src/server/inputSchemas.js +49 -0
  267. package/node_modules/@local/adapter-setup-doctor/src/server/registerRoutes.js +33 -0
  268. package/node_modules/@local/adapter-setup-doctor/src/server/service.js +782 -0
  269. package/node_modules/@local/current-app/package.descriptor.mjs +80 -0
  270. package/node_modules/@local/current-app/package.json +22 -0
  271. package/node_modules/@local/current-app/src/server/CurrentAppProvider.js +68 -0
  272. package/node_modules/@local/current-app/src/server/actions.js +114 -0
  273. package/node_modules/@local/current-app/src/server/inputSchemas.js +49 -0
  274. package/node_modules/@local/current-app/src/server/registerRoutes.js +116 -0
  275. package/node_modules/@local/current-app/src/server/service.js +630 -0
  276. package/node_modules/@local/main/package.descriptor.mjs +71 -0
  277. package/node_modules/@local/main/package.json +15 -0
  278. package/node_modules/@local/main/src/client/index.js +13 -0
  279. package/node_modules/@local/main/src/client/providers/MainClientProvider.js +30 -0
  280. package/node_modules/@local/main/src/server/MainServiceProvider.js +20 -0
  281. package/node_modules/@local/main/src/server/index.js +1 -0
  282. package/node_modules/@local/main/src/server/loadAppConfig.js +9 -0
  283. package/node_modules/@local/main/src/shared/index.js +10 -0
  284. package/node_modules/@local/main/src/shared/schemas/index.js +22 -0
  285. package/node_modules/@local/project-setup-doctor/package.descriptor.mjs +69 -0
  286. package/node_modules/@local/project-setup-doctor/package.json +16 -0
  287. package/node_modules/@local/project-setup-doctor/src/server/ProjectSetupDoctorProvider.js +60 -0
  288. package/node_modules/@local/project-setup-doctor/src/server/actions.js +32 -0
  289. package/node_modules/@local/project-setup-doctor/src/server/inputSchemas.js +49 -0
  290. package/node_modules/@local/project-setup-doctor/src/server/registerRoutes.js +33 -0
  291. package/node_modules/@local/project-setup-doctor/src/server/service.js +1398 -0
  292. package/node_modules/@local/setup-doctor-core/README.md +9 -0
  293. package/node_modules/@local/setup-doctor-core/package.descriptor.mjs +49 -0
  294. package/node_modules/@local/setup-doctor-core/package.json +17 -0
  295. package/node_modules/@local/setup-doctor-core/src/index.js +1 -0
  296. package/node_modules/@local/setup-doctor-core/src/server/doctorPluginToolkit.js +564 -0
  297. package/node_modules/@local/setup-doctor-core/src/server/doctorPlugins.js +170 -0
  298. package/node_modules/@local/setup-doctor-core/src/server/doctorRoutes.js +201 -0
  299. package/node_modules/@local/setup-doctor-core/src/server/doctorStatusCache.js +265 -0
  300. package/node_modules/@local/setup-doctor-core/src/server/doctorStream.js +107 -0
  301. package/node_modules/@local/setup-doctor-core/src/server/doctorToolchain.js +140 -0
  302. package/node_modules/@local/setup-doctor-core/src/server/doctorToolchainCommands.js +55 -0
  303. package/node_modules/@local/setup-doctor-core/src/server/githubRemote.js +23 -0
  304. package/node_modules/@local/setup-doctor-core/src/server/githubRepoSetupScript.js +24 -0
  305. package/node_modules/@local/setup-doctor-core/src/server/index.js +10 -0
  306. package/node_modules/@local/setup-doctor-core/src/server/setupDoctorGit.js +820 -0
  307. package/node_modules/@local/setup-doctor-core/src/shared/index.js +1 -0
  308. package/node_modules/@local/studio-setup-doctor/package.descriptor.mjs +70 -0
  309. package/node_modules/@local/studio-setup-doctor/package.json +17 -0
  310. package/node_modules/@local/studio-setup-doctor/src/server/StudioSetupDoctorProvider.js +61 -0
  311. package/node_modules/@local/studio-setup-doctor/src/server/actions.js +31 -0
  312. package/node_modules/@local/studio-setup-doctor/src/server/containerEngine.js +18 -0
  313. package/node_modules/@local/studio-setup-doctor/src/server/inputSchemas.js +45 -0
  314. package/node_modules/@local/studio-setup-doctor/src/server/registerRoutes.js +33 -0
  315. package/node_modules/@local/studio-setup-doctor/src/server/service.js +704 -0
  316. package/node_modules/@local/studio-terminal-core/README.md +9 -0
  317. package/node_modules/@local/studio-terminal-core/package.descriptor.mjs +50 -0
  318. package/node_modules/@local/studio-terminal-core/package.json +17 -0
  319. package/node_modules/@local/studio-terminal-core/src/index.js +1 -0
  320. package/node_modules/@local/studio-terminal-core/src/server/containerRuntime.js +53 -0
  321. package/node_modules/@local/studio-terminal-core/src/server/dockerRuntime.js +30 -0
  322. package/node_modules/@local/studio-terminal-core/src/server/gitToolchainMounts.js +98 -0
  323. package/node_modules/@local/studio-terminal-core/src/server/index.js +14 -0
  324. package/node_modules/@local/studio-terminal-core/src/server/launchTargetTerminal.js +541 -0
  325. package/node_modules/@local/studio-terminal-core/src/server/managedDatabases.js +429 -0
  326. package/node_modules/@local/studio-terminal-core/src/server/runtimeContainers.js +912 -0
  327. package/node_modules/@local/studio-terminal-core/src/server/shellCommands.js +96 -0
  328. package/node_modules/@local/studio-terminal-core/src/server/shellScript.js +10 -0
  329. package/node_modules/@local/studio-terminal-core/src/server/studioRuntimeIdentity.js +51 -0
  330. package/node_modules/@local/studio-terminal-core/src/server/studioTerminalCleanup.js +453 -0
  331. package/node_modules/@local/studio-terminal-core/src/server/studioTerminalLabels.js +3 -0
  332. package/node_modules/@local/studio-terminal-core/src/server/studioToolHome.js +106 -0
  333. package/node_modules/@local/studio-terminal-core/src/server/targetScriptTerminal.js +223 -0
  334. package/node_modules/@local/studio-terminal-core/src/server/terminalSessions.js +558 -0
  335. package/node_modules/@local/studio-terminal-core/src/shared/index.js +1 -0
  336. package/node_modules/@local/vibe64-accounts/package.descriptor.mjs +74 -0
  337. package/node_modules/@local/vibe64-accounts/package.json +17 -0
  338. package/node_modules/@local/vibe64-accounts/src/server/Vibe64AccountsProvider.js +53 -0
  339. package/node_modules/@local/vibe64-accounts/src/server/actions.js +114 -0
  340. package/node_modules/@local/vibe64-accounts/src/server/inputSchemas.js +56 -0
  341. package/node_modules/@local/vibe64-accounts/src/server/registerRoutes.js +76 -0
  342. package/node_modules/@local/vibe64-accounts/src/server/service.js +583 -0
  343. package/node_modules/@local/vibe64-adapters/README.md +9 -0
  344. package/node_modules/@local/vibe64-adapters/package.descriptor.mjs +50 -0
  345. package/node_modules/@local/vibe64-adapters/package.json +18 -0
  346. package/node_modules/@local/vibe64-adapters/src/index.js +1 -0
  347. package/node_modules/@local/vibe64-adapters/src/server/adapter.js +351 -0
  348. package/node_modules/@local/vibe64-adapters/src/server/adapterBlueprints.js +21 -0
  349. package/node_modules/@local/vibe64-adapters/src/server/adapterHelpers/setupDatabaseConnections.js +82 -0
  350. package/node_modules/@local/vibe64-adapters/src/server/adapterHelpers/setupEnvFiles.js +157 -0
  351. package/node_modules/@local/vibe64-adapters/src/server/adapterHelpers/setupMariaDbChecks.js +324 -0
  352. package/node_modules/@local/vibe64-adapters/src/server/adapterHelpers/setupNodePackages.js +156 -0
  353. package/node_modules/@local/vibe64-adapters/src/server/adapterHelpers/setupNodeWebChecks.js +113 -0
  354. package/node_modules/@local/vibe64-adapters/src/server/adapterHelpers/setupPackageImports.js +135 -0
  355. package/node_modules/@local/vibe64-adapters/src/server/adapterHelpers/setupVerificationChecks.js +103 -0
  356. package/node_modules/@local/vibe64-adapters/src/server/adapterToolchains.js +114 -0
  357. package/node_modules/@local/vibe64-adapters/src/server/adapters/cpp/adapter.js +513 -0
  358. package/node_modules/@local/vibe64-adapters/src/server/adapters/cpp/blueprints/build-system/cmake.txt +3 -0
  359. package/node_modules/@local/vibe64-adapters/src/server/adapters/cpp/blueprints/build-system/make.txt +3 -0
  360. package/node_modules/@local/vibe64-adapters/src/server/adapters/cpp/blueprints/build-system/meson.txt +3 -0
  361. package/node_modules/@local/vibe64-adapters/src/server/adapters/cpp/blueprints/project-kind/executable.txt +3 -0
  362. package/node_modules/@local/vibe64-adapters/src/server/adapters/cpp/blueprints/project-kind/library.txt +3 -0
  363. package/node_modules/@local/vibe64-adapters/src/server/adapters/cpp/blueprints/standard/cpp17.txt +3 -0
  364. package/node_modules/@local/vibe64-adapters/src/server/adapters/cpp/blueprints/standard/cpp20.txt +3 -0
  365. package/node_modules/@local/vibe64-adapters/src/server/adapters/cpp/blueprints/standard/cpp23.txt +3 -0
  366. package/node_modules/@local/vibe64-adapters/src/server/adapters/cpp/blueprints/testing/enabled.txt +3 -0
  367. package/node_modules/@local/vibe64-adapters/src/server/adapters/cpp/blueprints/testing/none.txt +3 -0
  368. package/node_modules/@local/vibe64-adapters/src/server/adapters/cpp/config.js +201 -0
  369. package/node_modules/@local/vibe64-adapters/src/server/adapters/cpp/constants.js +15 -0
  370. package/node_modules/@local/vibe64-adapters/src/server/adapters/cpp/currentApp.js +264 -0
  371. package/node_modules/@local/vibe64-adapters/src/server/adapters/cpp/index.js +66 -0
  372. package/node_modules/@local/vibe64-adapters/src/server/adapters/cpp/manifest.js +40 -0
  373. package/node_modules/@local/vibe64-adapters/src/server/adapters/cpp/projectFiles.js +191 -0
  374. package/node_modules/@local/vibe64-adapters/src/server/adapters/cpp/prompts/execute_plan.txt +10 -0
  375. package/node_modules/@local/vibe64-adapters/src/server/adapters/cpp/prompts/generic.txt +9 -0
  376. package/node_modules/@local/vibe64-adapters/src/server/adapters/cpp/prompts/make_plan.txt +11 -0
  377. package/node_modules/@local/vibe64-adapters/src/server/adapters/cpp/prompts/prepare_for_merge.txt +9 -0
  378. package/node_modules/@local/vibe64-adapters/src/server/adapters/cpp/prompts/run_deep_ui_check.txt +9 -0
  379. package/node_modules/@local/vibe64-adapters/src/server/adapters/cpp/prompts/run_deslop.txt +9 -0
  380. package/node_modules/@local/vibe64-adapters/src/server/adapters/cpp/prompts/update_project_knowledge.txt +9 -0
  381. package/node_modules/@local/vibe64-adapters/src/server/adapters/cpp/seedProject.js +297 -0
  382. package/node_modules/@local/vibe64-adapters/src/server/adapters/cpp/setupDoctorPlugin.js +287 -0
  383. package/node_modules/@local/vibe64-adapters/src/server/adapters/cpp/toolchainIdentity.js +5 -0
  384. package/node_modules/@local/vibe64-adapters/src/server/adapters/jskit/adapter.js +440 -0
  385. package/node_modules/@local/vibe64-adapters/src/server/adapters/jskit/currentApp.js +220 -0
  386. package/node_modules/@local/vibe64-adapters/src/server/adapters/jskit/index.js +60 -0
  387. package/node_modules/@local/vibe64-adapters/src/server/adapters/jskit/launchTargets.js +352 -0
  388. package/node_modules/@local/vibe64-adapters/src/server/adapters/jskit/manifest.js +49 -0
  389. package/node_modules/@local/vibe64-adapters/src/server/adapters/jskit/prepareWorktree.sh +6 -0
  390. package/node_modules/@local/vibe64-adapters/src/server/adapters/jskit/prompts/agent_conversation.txt +26 -0
  391. package/node_modules/@local/vibe64-adapters/src/server/adapters/jskit/prompts/execute_plan.txt +28 -0
  392. package/node_modules/@local/vibe64-adapters/src/server/adapters/jskit/prompts/execute_seed_plan.txt +10 -0
  393. package/node_modules/@local/vibe64-adapters/src/server/adapters/jskit/prompts/generic.txt +20 -0
  394. package/node_modules/@local/vibe64-adapters/src/server/adapters/jskit/prompts/make_plan.txt +27 -0
  395. package/node_modules/@local/vibe64-adapters/src/server/adapters/jskit/prompts/make_seed_plan.txt +17 -0
  396. package/node_modules/@local/vibe64-adapters/src/server/adapters/jskit/prompts/prepare_for_merge.txt +8 -0
  397. package/node_modules/@local/vibe64-adapters/src/server/adapters/jskit/prompts/run_deep_ui_check.txt +6 -0
  398. package/node_modules/@local/vibe64-adapters/src/server/adapters/jskit/prompts/run_deslop.txt +24 -0
  399. package/node_modules/@local/vibe64-adapters/src/server/adapters/jskit/prompts/update_project_knowledge.txt +6 -0
  400. package/node_modules/@local/vibe64-adapters/src/server/adapters/jskit/setupDatabasePolicy.js +186 -0
  401. package/node_modules/@local/vibe64-adapters/src/server/adapters/jskit/setupDependencyChecks.js +9 -0
  402. package/node_modules/@local/vibe64-adapters/src/server/adapters/jskit/setupDoctorPlugin.js +234 -0
  403. package/node_modules/@local/vibe64-adapters/src/server/adapters/jskit/setupMariaDbRuntime.js +228 -0
  404. package/node_modules/@local/vibe64-adapters/src/server/adapters/jskit/setupProjectChecks.js +262 -0
  405. package/node_modules/@local/vibe64-adapters/src/server/adapters/jskit/setupScaffold.js +99 -0
  406. package/node_modules/@local/vibe64-adapters/src/server/adapters/jskit/toolchainIdentity.js +9 -0
  407. package/node_modules/@local/vibe64-adapters/src/server/adapters/laravel/adapter.js +443 -0
  408. package/node_modules/@local/vibe64-adapters/src/server/adapters/laravel/blueprints/authentication/laravel.txt +4 -0
  409. package/node_modules/@local/vibe64-adapters/src/server/adapters/laravel/blueprints/authentication/none.txt +4 -0
  410. package/node_modules/@local/vibe64-adapters/src/server/adapters/laravel/blueprints/authentication/workos.txt +5 -0
  411. package/node_modules/@local/vibe64-adapters/src/server/adapters/laravel/blueprints/boost/boost.txt +5 -0
  412. package/node_modules/@local/vibe64-adapters/src/server/adapters/laravel/blueprints/boost/none.txt +4 -0
  413. package/node_modules/@local/vibe64-adapters/src/server/adapters/laravel/blueprints/database-runtime/mariadb.txt +6 -0
  414. package/node_modules/@local/vibe64-adapters/src/server/adapters/laravel/blueprints/database-runtime/mysql.txt +6 -0
  415. package/node_modules/@local/vibe64-adapters/src/server/adapters/laravel/blueprints/database-runtime/postgres.txt +6 -0
  416. package/node_modules/@local/vibe64-adapters/src/server/adapters/laravel/blueprints/database-runtime/sqlite.txt +5 -0
  417. package/node_modules/@local/vibe64-adapters/src/server/adapters/laravel/blueprints/livewire-components/class.txt +4 -0
  418. package/node_modules/@local/vibe64-adapters/src/server/adapters/laravel/blueprints/livewire-components/single_file.txt +4 -0
  419. package/node_modules/@local/vibe64-adapters/src/server/adapters/laravel/blueprints/starter-kit/custom.txt +5 -0
  420. package/node_modules/@local/vibe64-adapters/src/server/adapters/laravel/blueprints/starter-kit/livewire.txt +5 -0
  421. package/node_modules/@local/vibe64-adapters/src/server/adapters/laravel/blueprints/starter-kit/none.txt +5 -0
  422. package/node_modules/@local/vibe64-adapters/src/server/adapters/laravel/blueprints/starter-kit/react.txt +5 -0
  423. package/node_modules/@local/vibe64-adapters/src/server/adapters/laravel/blueprints/starter-kit/svelte.txt +5 -0
  424. package/node_modules/@local/vibe64-adapters/src/server/adapters/laravel/blueprints/starter-kit/vue.txt +5 -0
  425. package/node_modules/@local/vibe64-adapters/src/server/adapters/laravel/blueprints/teams/none.txt +4 -0
  426. package/node_modules/@local/vibe64-adapters/src/server/adapters/laravel/blueprints/teams/teams.txt +4 -0
  427. package/node_modules/@local/vibe64-adapters/src/server/adapters/laravel/blueprints/testing/pest.txt +5 -0
  428. package/node_modules/@local/vibe64-adapters/src/server/adapters/laravel/blueprints/testing/phpunit.txt +5 -0
  429. package/node_modules/@local/vibe64-adapters/src/server/adapters/laravel/composerPackage.js +97 -0
  430. package/node_modules/@local/vibe64-adapters/src/server/adapters/laravel/config.js +54 -0
  431. package/node_modules/@local/vibe64-adapters/src/server/adapters/laravel/constants.js +7 -0
  432. package/node_modules/@local/vibe64-adapters/src/server/adapters/laravel/currentApp.js +187 -0
  433. package/node_modules/@local/vibe64-adapters/src/server/adapters/laravel/databaseRuntime.js +237 -0
  434. package/node_modules/@local/vibe64-adapters/src/server/adapters/laravel/index.js +60 -0
  435. package/node_modules/@local/vibe64-adapters/src/server/adapters/laravel/launchTargets.js +115 -0
  436. package/node_modules/@local/vibe64-adapters/src/server/adapters/laravel/manifest.js +41 -0
  437. package/node_modules/@local/vibe64-adapters/src/server/adapters/laravel/prepareWorktree.sh +8 -0
  438. package/node_modules/@local/vibe64-adapters/src/server/adapters/laravel/prompts/execute_plan.txt +9 -0
  439. package/node_modules/@local/vibe64-adapters/src/server/adapters/laravel/prompts/execute_seed_plan.txt +10 -0
  440. package/node_modules/@local/vibe64-adapters/src/server/adapters/laravel/prompts/generic.txt +9 -0
  441. package/node_modules/@local/vibe64-adapters/src/server/adapters/laravel/prompts/make_plan.txt +11 -0
  442. package/node_modules/@local/vibe64-adapters/src/server/adapters/laravel/prompts/make_seed_plan.txt +17 -0
  443. package/node_modules/@local/vibe64-adapters/src/server/adapters/laravel/prompts/prepare_for_merge.txt +9 -0
  444. package/node_modules/@local/vibe64-adapters/src/server/adapters/laravel/prompts/run_deep_ui_check.txt +9 -0
  445. package/node_modules/@local/vibe64-adapters/src/server/adapters/laravel/prompts/run_deslop.txt +9 -0
  446. package/node_modules/@local/vibe64-adapters/src/server/adapters/laravel/prompts/update_project_knowledge.txt +9 -0
  447. package/node_modules/@local/vibe64-adapters/src/server/adapters/laravel/setupDoctorPlugin.js +648 -0
  448. package/node_modules/@local/vibe64-adapters/src/server/adapters/laravel/toolchainIdentity.js +5 -0
  449. package/node_modules/@local/vibe64-adapters/src/server/adapters/nextjs/adapter.js +353 -0
  450. package/node_modules/@local/vibe64-adapters/src/server/adapters/nextjs/blueprints/data-layer/drizzle.txt +16 -0
  451. package/node_modules/@local/vibe64-adapters/src/server/adapters/nextjs/blueprints/data-layer/none.txt +7 -0
  452. package/node_modules/@local/vibe64-adapters/src/server/adapters/nextjs/blueprints/data-layer/prisma.txt +16 -0
  453. package/node_modules/@local/vibe64-adapters/src/server/adapters/nextjs/blueprints/database-runtime/mysql.txt +8 -0
  454. package/node_modules/@local/vibe64-adapters/src/server/adapters/nextjs/blueprints/database-runtime/none.txt +6 -0
  455. package/node_modules/@local/vibe64-adapters/src/server/adapters/nextjs/blueprints/database-runtime/postgres.txt +8 -0
  456. package/node_modules/@local/vibe64-adapters/src/server/adapters/nextjs/blueprints/seed-bundler/turbopack.txt +5 -0
  457. package/node_modules/@local/vibe64-adapters/src/server/adapters/nextjs/blueprints/seed-bundler/webpack.txt +5 -0
  458. package/node_modules/@local/vibe64-adapters/src/server/adapters/nextjs/blueprints/seed-language/javascript.txt +5 -0
  459. package/node_modules/@local/vibe64-adapters/src/server/adapters/nextjs/blueprints/seed-language/typescript.txt +5 -0
  460. package/node_modules/@local/vibe64-adapters/src/server/adapters/nextjs/blueprints/seed-linter/biome.txt +5 -0
  461. package/node_modules/@local/vibe64-adapters/src/server/adapters/nextjs/blueprints/seed-linter/eslint.txt +5 -0
  462. package/node_modules/@local/vibe64-adapters/src/server/adapters/nextjs/blueprints/seed-linter/none.txt +5 -0
  463. package/node_modules/@local/vibe64-adapters/src/server/adapters/nextjs/blueprints/seed-source-layout/root.txt +5 -0
  464. package/node_modules/@local/vibe64-adapters/src/server/adapters/nextjs/blueprints/seed-source-layout/src.txt +5 -0
  465. package/node_modules/@local/vibe64-adapters/src/server/adapters/nextjs/blueprints/seed-styling/none.txt +5 -0
  466. package/node_modules/@local/vibe64-adapters/src/server/adapters/nextjs/blueprints/seed-styling/tailwind.txt +5 -0
  467. package/node_modules/@local/vibe64-adapters/src/server/adapters/nextjs/config.js +251 -0
  468. package/node_modules/@local/vibe64-adapters/src/server/adapters/nextjs/constants.js +23 -0
  469. package/node_modules/@local/vibe64-adapters/src/server/adapters/nextjs/currentApp.js +128 -0
  470. package/node_modules/@local/vibe64-adapters/src/server/adapters/nextjs/databaseRuntime.js +199 -0
  471. package/node_modules/@local/vibe64-adapters/src/server/adapters/nextjs/index.js +68 -0
  472. package/node_modules/@local/vibe64-adapters/src/server/adapters/nextjs/launchTargets.js +124 -0
  473. package/node_modules/@local/vibe64-adapters/src/server/adapters/nextjs/manifest.js +47 -0
  474. package/node_modules/@local/vibe64-adapters/src/server/adapters/nextjs/prepareWorktree.sh +8 -0
  475. package/node_modules/@local/vibe64-adapters/src/server/adapters/nextjs/prompts/execute_plan.txt +9 -0
  476. package/node_modules/@local/vibe64-adapters/src/server/adapters/nextjs/prompts/generic.txt +9 -0
  477. package/node_modules/@local/vibe64-adapters/src/server/adapters/nextjs/prompts/make_plan.txt +11 -0
  478. package/node_modules/@local/vibe64-adapters/src/server/adapters/nextjs/prompts/prepare_for_merge.txt +9 -0
  479. package/node_modules/@local/vibe64-adapters/src/server/adapters/nextjs/prompts/run_deep_ui_check.txt +9 -0
  480. package/node_modules/@local/vibe64-adapters/src/server/adapters/nextjs/prompts/run_deslop.txt +9 -0
  481. package/node_modules/@local/vibe64-adapters/src/server/adapters/nextjs/prompts/update_project_knowledge.txt +9 -0
  482. package/node_modules/@local/vibe64-adapters/src/server/adapters/nextjs/setupDoctorPlugin.js +405 -0
  483. package/node_modules/@local/vibe64-adapters/src/server/adapters/node-web/adapter.js +350 -0
  484. package/node_modules/@local/vibe64-adapters/src/server/adapters/node-web/config.js +89 -0
  485. package/node_modules/@local/vibe64-adapters/src/server/adapters/node-web/constants.js +7 -0
  486. package/node_modules/@local/vibe64-adapters/src/server/adapters/node-web/currentApp.js +132 -0
  487. package/node_modules/@local/vibe64-adapters/src/server/adapters/node-web/index.js +60 -0
  488. package/node_modules/@local/vibe64-adapters/src/server/adapters/node-web/launchTargets.js +149 -0
  489. package/node_modules/@local/vibe64-adapters/src/server/adapters/node-web/manifest.js +40 -0
  490. package/node_modules/@local/vibe64-adapters/src/server/adapters/node-web/prepareWorktree.sh +8 -0
  491. package/node_modules/@local/vibe64-adapters/src/server/adapters/node-web/projectDetection.js +619 -0
  492. package/node_modules/@local/vibe64-adapters/src/server/adapters/node-web/prompts/execute_plan.txt +14 -0
  493. package/node_modules/@local/vibe64-adapters/src/server/adapters/node-web/prompts/generic.txt +17 -0
  494. package/node_modules/@local/vibe64-adapters/src/server/adapters/node-web/prompts/make_plan.txt +17 -0
  495. package/node_modules/@local/vibe64-adapters/src/server/adapters/node-web/prompts/prepare_for_merge.txt +6 -0
  496. package/node_modules/@local/vibe64-adapters/src/server/adapters/node-web/prompts/run_deep_ui_check.txt +6 -0
  497. package/node_modules/@local/vibe64-adapters/src/server/adapters/node-web/prompts/run_deslop.txt +6 -0
  498. package/node_modules/@local/vibe64-adapters/src/server/adapters/node-web/prompts/update_project_knowledge.txt +6 -0
  499. package/node_modules/@local/vibe64-adapters/src/server/adapters/node-web/setupDoctorPlugin.js +166 -0
  500. package/node_modules/@local/vibe64-adapters/src/server/adapters/registry.js +206 -0
  501. package/node_modules/@local/vibe64-adapters/src/server/adapters/vinext/adapter.js +362 -0
  502. package/node_modules/@local/vibe64-adapters/src/server/adapters/vinext/constants.js +7 -0
  503. package/node_modules/@local/vibe64-adapters/src/server/adapters/vinext/currentApp.js +132 -0
  504. package/node_modules/@local/vibe64-adapters/src/server/adapters/vinext/index.js +64 -0
  505. package/node_modules/@local/vibe64-adapters/src/server/adapters/vinext/launchTargets.js +175 -0
  506. package/node_modules/@local/vibe64-adapters/src/server/adapters/vinext/manifest.js +40 -0
  507. package/node_modules/@local/vibe64-adapters/src/server/adapters/vinext/packageManager.js +51 -0
  508. package/node_modules/@local/vibe64-adapters/src/server/adapters/vinext/prepareWorktree.sh +8 -0
  509. package/node_modules/@local/vibe64-adapters/src/server/adapters/vinext/prompts/execute_plan.txt +6 -0
  510. package/node_modules/@local/vibe64-adapters/src/server/adapters/vinext/prompts/generic.txt +6 -0
  511. package/node_modules/@local/vibe64-adapters/src/server/adapters/vinext/prompts/make_plan.txt +8 -0
  512. package/node_modules/@local/vibe64-adapters/src/server/adapters/vinext/prompts/prepare_for_merge.txt +8 -0
  513. package/node_modules/@local/vibe64-adapters/src/server/adapters/vinext/prompts/run_deep_ui_check.txt +6 -0
  514. package/node_modules/@local/vibe64-adapters/src/server/adapters/vinext/prompts/run_deslop.txt +6 -0
  515. package/node_modules/@local/vibe64-adapters/src/server/adapters/vinext/prompts/update_project_knowledge.txt +6 -0
  516. package/node_modules/@local/vibe64-adapters/src/server/adapters/vinext/setupDoctorPlugin.js +180 -0
  517. package/node_modules/@local/vibe64-adapters/src/server/applicationTypes.js +139 -0
  518. package/node_modules/@local/vibe64-adapters/src/server/codeIndexCommands.js +117 -0
  519. package/node_modules/@local/vibe64-adapters/src/server/codeIndexScripts/javascript.mjs +114 -0
  520. package/node_modules/@local/vibe64-adapters/src/server/codeIndexScripts/php.php +101 -0
  521. package/node_modules/@local/vibe64-adapters/src/server/configStore.js +532 -0
  522. package/node_modules/@local/vibe64-adapters/src/server/configValues.js +39 -0
  523. package/node_modules/@local/vibe64-adapters/src/server/currentAppInspection.js +199 -0
  524. package/node_modules/@local/vibe64-adapters/src/server/envFiles.js +30 -0
  525. package/node_modules/@local/vibe64-adapters/src/server/fakeAdapter.js +132 -0
  526. package/node_modules/@local/vibe64-adapters/src/server/index.js +24 -0
  527. package/node_modules/@local/vibe64-adapters/src/server/nodeCurrentApp.js +203 -0
  528. package/node_modules/@local/vibe64-adapters/src/server/nodePackage.js +184 -0
  529. package/node_modules/@local/vibe64-adapters/src/server/nodePackageDoctor.js +65 -0
  530. package/node_modules/@local/vibe64-adapters/src/server/nodePackageManagers.js +60 -0
  531. package/node_modules/@local/vibe64-adapters/src/server/nodeWebProject.js +236 -0
  532. package/node_modules/@local/vibe64-adapters/src/server/projectType.js +63 -0
  533. package/node_modules/@local/vibe64-adapters/src/server/promptMarkers.js +86 -0
  534. package/node_modules/@local/vibe64-adapters/src/server/promptQuestionPolicy.js +37 -0
  535. package/node_modules/@local/vibe64-adapters/src/server/promptRenderer.js +480 -0
  536. package/node_modules/@local/vibe64-adapters/src/server/systemPrompts/agent_conversation.txt +45 -0
  537. package/node_modules/@local/vibe64-adapters/src/server/systemPrompts/execute_plan.txt +28 -0
  538. package/node_modules/@local/vibe64-adapters/src/server/systemPrompts/generic.txt +33 -0
  539. package/node_modules/@local/vibe64-adapters/src/server/systemPrompts/make_plan.txt +22 -0
  540. package/node_modules/@local/vibe64-adapters/src/server/systemPrompts/prepare_for_merge.txt +32 -0
  541. package/node_modules/@local/vibe64-adapters/src/server/systemPrompts/resolve_pull_request.txt +28 -0
  542. package/node_modules/@local/vibe64-adapters/src/server/systemPrompts/run_deep_ui_check.txt +22 -0
  543. package/node_modules/@local/vibe64-adapters/src/server/systemPrompts/run_deslop.txt +25 -0
  544. package/node_modules/@local/vibe64-adapters/src/server/systemPrompts/update_project_knowledge.txt +22 -0
  545. package/node_modules/@local/vibe64-adapters/src/server/systemPrompts/write_report.txt +33 -0
  546. package/node_modules/@local/vibe64-adapters/src/server/workflowAdapter.js +463 -0
  547. package/node_modules/@local/vibe64-adapters/src/server/workflowCommandFacts.js +90 -0
  548. package/node_modules/@local/vibe64-adapters/src/server/workflowCommandTerminal/commitPush.js +89 -0
  549. package/node_modules/@local/vibe64-adapters/src/server/workflowCommandTerminal/factMetadata.js +113 -0
  550. package/node_modules/@local/vibe64-adapters/src/server/workflowCommandTerminal/issuePr.js +171 -0
  551. package/node_modules/@local/vibe64-adapters/src/server/workflowCommandTerminal/mergeSync.js +112 -0
  552. package/node_modules/@local/vibe64-adapters/src/server/workflowCommandTerminal/shellHelpers.js +203 -0
  553. package/node_modules/@local/vibe64-adapters/src/server/workflowCommandTerminal/worktreeDependencies.js +313 -0
  554. package/node_modules/@local/vibe64-adapters/src/server/workflowCommandTerminal.js +63 -0
  555. package/node_modules/@local/vibe64-adapters/src/server/workflowSessionActions.js +211 -0
  556. package/node_modules/@local/vibe64-adapters/src/shared/index.js +1 -0
  557. package/node_modules/@local/vibe64-artifacts/package.descriptor.mjs +73 -0
  558. package/node_modules/@local/vibe64-artifacts/package.json +15 -0
  559. package/node_modules/@local/vibe64-artifacts/src/server/Vibe64ArtifactsProvider.js +61 -0
  560. package/node_modules/@local/vibe64-artifacts/src/server/actions.js +83 -0
  561. package/node_modules/@local/vibe64-artifacts/src/server/inputSchemas.js +113 -0
  562. package/node_modules/@local/vibe64-artifacts/src/server/registerRoutes.js +148 -0
  563. package/node_modules/@local/vibe64-artifacts/src/server/service.js +182 -0
  564. package/node_modules/@local/vibe64-core/README.md +10 -0
  565. package/node_modules/@local/vibe64-core/package.descriptor.mjs +60 -0
  566. package/node_modules/@local/vibe64-core/package.json +24 -0
  567. package/node_modules/@local/vibe64-core/src/index.js +1 -0
  568. package/node_modules/@local/vibe64-core/src/server/core.js +54 -0
  569. package/node_modules/@local/vibe64-core/src/server/deepFreeze.js +17 -0
  570. package/node_modules/@local/vibe64-core/src/server/doctorCheckItems.js +129 -0
  571. package/node_modules/@local/vibe64-core/src/server/featureRoutes.js +145 -0
  572. package/node_modules/@local/vibe64-core/src/server/index.js +10 -0
  573. package/node_modules/@local/vibe64-core/src/server/localStudioRequest.js +73 -0
  574. package/node_modules/@local/vibe64-core/src/server/localhostCheckBypass.js +29 -0
  575. package/node_modules/@local/vibe64-core/src/server/serverResponses.js +76 -0
  576. package/node_modules/@local/vibe64-core/src/server/sessionRealtimeEvents.js +137 -0
  577. package/node_modules/@local/vibe64-core/src/server/studioRoots.js +51 -0
  578. package/node_modules/@local/vibe64-core/src/server/terminalWebSocketRoutes.js +158 -0
  579. package/node_modules/@local/vibe64-core/src/shared/index.js +33 -0
  580. package/node_modules/@local/vibe64-project/package.descriptor.mjs +73 -0
  581. package/node_modules/@local/vibe64-project/package.json +16 -0
  582. package/node_modules/@local/vibe64-project/src/server/Vibe64ProjectProvider.js +53 -0
  583. package/node_modules/@local/vibe64-project/src/server/actions.js +117 -0
  584. package/node_modules/@local/vibe64-project/src/server/inputSchemas.js +41 -0
  585. package/node_modules/@local/vibe64-project/src/server/registerRoutes.js +58 -0
  586. package/node_modules/@local/vibe64-project/src/server/service.js +290 -0
  587. package/node_modules/@local/vibe64-runtime/README.md +9 -0
  588. package/node_modules/@local/vibe64-runtime/package.descriptor.mjs +52 -0
  589. package/node_modules/@local/vibe64-runtime/package.json +19 -0
  590. package/node_modules/@local/vibe64-runtime/src/index.js +1 -0
  591. package/node_modules/@local/vibe64-runtime/src/server/currentStepInputHelperServer.js +308 -0
  592. package/node_modules/@local/vibe64-runtime/src/server/index.js +18 -0
  593. package/node_modules/@local/vibe64-runtime/src/server/registerCoreWorkflowModules.js +52 -0
  594. package/node_modules/@local/vibe64-runtime/src/server/runtime.js +1231 -0
  595. package/node_modules/@local/vibe64-runtime/src/server/sessionDebugLog.js +7 -0
  596. package/node_modules/@local/vibe64-runtime/src/server/sessionDebugLogCore.js +57 -0
  597. package/node_modules/@local/vibe64-runtime/src/server/sessionStore.js +1468 -0
  598. package/node_modules/@local/vibe64-runtime/src/server/setupReadiness.js +112 -0
  599. package/node_modules/@local/vibe64-runtime/src/server/terminalFailureFixRequest.js +143 -0
  600. package/node_modules/@local/vibe64-runtime/src/server/workflow.js +96 -0
  601. package/node_modules/@local/vibe64-runtime/src/server/workflowArtifacts.js +17 -0
  602. package/node_modules/@local/vibe64-runtime/src/server/workflowConditions.js +101 -0
  603. package/node_modules/@local/vibe64-runtime/src/server/workflowDefinitionBuilders.js +91 -0
  604. package/node_modules/@local/vibe64-runtime/src/server/workflowMachine.js +919 -0
  605. package/node_modules/@local/vibe64-runtime/src/server/workflowModules/coreCoding.js +1248 -0
  606. package/node_modules/@local/vibe64-runtime/src/server/workflowModules/coreLifecycle.js +1340 -0
  607. package/node_modules/@local/vibe64-runtime/src/server/workflowModules/coreMaintenance.js +209 -0
  608. package/node_modules/@local/vibe64-runtime/src/server/workflowPresentation.js +1281 -0
  609. package/node_modules/@local/vibe64-runtime/src/server/workflowRegistry.js +628 -0
  610. package/node_modules/@local/vibe64-runtime/src/server/workflowStepFactories.js +22 -0
  611. package/node_modules/@local/vibe64-runtime/src/server/workflowStepMachineHelpers.js +939 -0
  612. package/node_modules/@local/vibe64-runtime/src/server/workflowStepMachines.js +156 -0
  613. package/node_modules/@local/vibe64-runtime/src/shared/index.js +1 -0
  614. package/node_modules/@local/vibe64-sessions/package.descriptor.mjs +84 -0
  615. package/node_modules/@local/vibe64-sessions/package.json +21 -0
  616. package/node_modules/@local/vibe64-sessions/src/server/Vibe64SessionsProvider.js +78 -0
  617. package/node_modules/@local/vibe64-sessions/src/server/actions.js +272 -0
  618. package/node_modules/@local/vibe64-sessions/src/server/inputSchemas.js +204 -0
  619. package/node_modules/@local/vibe64-sessions/src/server/registerRoutes.js +141 -0
  620. package/node_modules/@local/vibe64-sessions/src/server/service.js +853 -0
  621. package/node_modules/@local/vibe64-sessions/src/server/sessionDiff.js +90 -0
  622. package/node_modules/@local/vibe64-terminals/package.descriptor.mjs +77 -0
  623. package/node_modules/@local/vibe64-terminals/package.json +19 -0
  624. package/node_modules/@local/vibe64-terminals/src/server/Vibe64TerminalsProvider.js +100 -0
  625. package/node_modules/@local/vibe64-terminals/src/server/actions.js +124 -0
  626. package/node_modules/@local/vibe64-terminals/src/server/codexAttachments.js +147 -0
  627. package/node_modules/@local/vibe64-terminals/src/server/codexTerminal.js +1120 -0
  628. package/node_modules/@local/vibe64-terminals/src/server/commandTerminal.js +975 -0
  629. package/node_modules/@local/vibe64-terminals/src/server/commandTerminalResults.js +87 -0
  630. package/node_modules/@local/vibe64-terminals/src/server/inputSchemas.js +135 -0
  631. package/node_modules/@local/vibe64-terminals/src/server/launchTargetTerminal.js +470 -0
  632. package/node_modules/@local/vibe64-terminals/src/server/registerRoutes.js +241 -0
  633. package/node_modules/@local/vibe64-terminals/src/server/service.js +190 -0
  634. package/node_modules/@local/vibe64-terminals/src/server/shellTerminal.js +390 -0
  635. package/node_modules/@local/vibe64-terminals/src/server/targetToolchainTerminal.js +97 -0
  636. package/node_modules/@local/vibe64-terminals/src/server/terminalEnvironment.js +102 -0
  637. package/node_modules/@local/vibe64-terminals/src/server/terminalRuntimeContainers.js +80 -0
  638. package/node_modules/@local/vibe64-terminals/src/server/terminalShared.js +112 -0
  639. package/node_modules/@local/vibe64-terminals/src/server/terminalToolchainImage.js +77 -0
  640. package/node_modules/@sec-ant/readable-stream/LICENSE +21 -0
  641. package/node_modules/@sec-ant/readable-stream/README.md +230 -0
  642. package/node_modules/@sec-ant/readable-stream/dist/core/asyncIterablePrototype.d.ts +1 -0
  643. package/node_modules/@sec-ant/readable-stream/dist/core/asyncIterator.d.ts +27 -0
  644. package/node_modules/@sec-ant/readable-stream/dist/core/fromAnyIterable.d.ts +6 -0
  645. package/node_modules/@sec-ant/readable-stream/dist/index/asyncIterator.d.ts +2 -0
  646. package/node_modules/@sec-ant/readable-stream/dist/index/asyncIterator.js +5 -0
  647. package/node_modules/@sec-ant/readable-stream/dist/index/fromAnyIterable.d.ts +2 -0
  648. package/node_modules/@sec-ant/readable-stream/dist/index/fromAnyIterable.js +5 -0
  649. package/node_modules/@sec-ant/readable-stream/dist/index/index.d.ts +2 -0
  650. package/node_modules/@sec-ant/readable-stream/dist/index/index.js +8 -0
  651. package/node_modules/@sec-ant/readable-stream/dist/polyfill/asyncIterator.d.ts +1 -0
  652. package/node_modules/@sec-ant/readable-stream/dist/polyfill/asyncIterator.js +3 -0
  653. package/node_modules/@sec-ant/readable-stream/dist/polyfill/fromAnyIterable.d.ts +1 -0
  654. package/node_modules/@sec-ant/readable-stream/dist/polyfill/fromAnyIterable.js +2 -0
  655. package/node_modules/@sec-ant/readable-stream/dist/polyfill/index.d.ts +2 -0
  656. package/node_modules/@sec-ant/readable-stream/dist/polyfill/index.js +4 -0
  657. package/node_modules/@sec-ant/readable-stream/dist/ponyfill/asyncIterator.d.ts +1 -0
  658. package/node_modules/@sec-ant/readable-stream/dist/ponyfill/asyncIterator.js +89 -0
  659. package/node_modules/@sec-ant/readable-stream/dist/ponyfill/fromAnyIterable.d.ts +1 -0
  660. package/node_modules/@sec-ant/readable-stream/dist/ponyfill/fromAnyIterable.js +34 -0
  661. package/node_modules/@sec-ant/readable-stream/dist/ponyfill/index.d.ts +2 -0
  662. package/node_modules/@sec-ant/readable-stream/dist/ponyfill/index.js +6 -0
  663. package/node_modules/@sec-ant/readable-stream/dist/types/async-iterator.d.ts +11 -0
  664. package/node_modules/@sec-ant/readable-stream/package.json +96 -0
  665. package/node_modules/@sindresorhus/merge-streams/index.d.ts +44 -0
  666. package/node_modules/@sindresorhus/merge-streams/index.js +265 -0
  667. package/node_modules/@sindresorhus/merge-streams/license +9 -0
  668. package/node_modules/@sindresorhus/merge-streams/package.json +49 -0
  669. package/node_modules/@sindresorhus/merge-streams/readme.md +53 -0
  670. package/node_modules/ansi-regex/index.d.ts +33 -0
  671. package/node_modules/ansi-regex/index.js +14 -0
  672. package/node_modules/ansi-regex/license +9 -0
  673. package/node_modules/ansi-regex/package.json +61 -0
  674. package/node_modules/ansi-regex/readme.md +66 -0
  675. package/node_modules/cross-spawn/LICENSE +21 -0
  676. package/node_modules/cross-spawn/README.md +89 -0
  677. package/node_modules/cross-spawn/index.js +39 -0
  678. package/node_modules/cross-spawn/lib/enoent.js +59 -0
  679. package/node_modules/cross-spawn/lib/parse.js +91 -0
  680. package/node_modules/cross-spawn/lib/util/escape.js +47 -0
  681. package/node_modules/cross-spawn/lib/util/readShebang.js +23 -0
  682. package/node_modules/cross-spawn/lib/util/resolveCommand.js +52 -0
  683. package/node_modules/cross-spawn/package.json +73 -0
  684. package/node_modules/execa/index.d.ts +27 -0
  685. package/node_modules/execa/index.js +28 -0
  686. package/node_modules/execa/lib/arguments/command.js +20 -0
  687. package/node_modules/execa/lib/arguments/cwd.js +39 -0
  688. package/node_modules/execa/lib/arguments/encoding-option.js +50 -0
  689. package/node_modules/execa/lib/arguments/escape.js +88 -0
  690. package/node_modules/execa/lib/arguments/fd-options.js +108 -0
  691. package/node_modules/execa/lib/arguments/file-url.js +25 -0
  692. package/node_modules/execa/lib/arguments/options.js +96 -0
  693. package/node_modules/execa/lib/arguments/shell.js +11 -0
  694. package/node_modules/execa/lib/arguments/specific.js +111 -0
  695. package/node_modules/execa/lib/convert/add.js +15 -0
  696. package/node_modules/execa/lib/convert/concurrent.js +33 -0
  697. package/node_modules/execa/lib/convert/duplex.js +69 -0
  698. package/node_modules/execa/lib/convert/iterable.js +34 -0
  699. package/node_modules/execa/lib/convert/readable.js +113 -0
  700. package/node_modules/execa/lib/convert/shared.js +46 -0
  701. package/node_modules/execa/lib/convert/writable.js +90 -0
  702. package/node_modules/execa/lib/io/contents.js +116 -0
  703. package/node_modules/execa/lib/io/input-sync.js +44 -0
  704. package/node_modules/execa/lib/io/iterate.js +110 -0
  705. package/node_modules/execa/lib/io/max-buffer.js +89 -0
  706. package/node_modules/execa/lib/io/output-async.js +80 -0
  707. package/node_modules/execa/lib/io/output-sync.js +135 -0
  708. package/node_modules/execa/lib/io/pipeline.js +48 -0
  709. package/node_modules/execa/lib/io/strip-newline.js +12 -0
  710. package/node_modules/execa/lib/ipc/array.js +4 -0
  711. package/node_modules/execa/lib/ipc/buffer-messages.js +47 -0
  712. package/node_modules/execa/lib/ipc/forward.js +56 -0
  713. package/node_modules/execa/lib/ipc/get-each.js +89 -0
  714. package/node_modules/execa/lib/ipc/get-one.js +69 -0
  715. package/node_modules/execa/lib/ipc/graceful.js +72 -0
  716. package/node_modules/execa/lib/ipc/incoming.js +79 -0
  717. package/node_modules/execa/lib/ipc/ipc-input.js +44 -0
  718. package/node_modules/execa/lib/ipc/methods.js +49 -0
  719. package/node_modules/execa/lib/ipc/outgoing.js +47 -0
  720. package/node_modules/execa/lib/ipc/reference.js +44 -0
  721. package/node_modules/execa/lib/ipc/send.js +91 -0
  722. package/node_modules/execa/lib/ipc/strict.js +113 -0
  723. package/node_modules/execa/lib/ipc/validation.js +111 -0
  724. package/node_modules/execa/lib/methods/bind.js +23 -0
  725. package/node_modules/execa/lib/methods/command.js +43 -0
  726. package/node_modules/execa/lib/methods/create.js +65 -0
  727. package/node_modules/execa/lib/methods/main-async.js +194 -0
  728. package/node_modules/execa/lib/methods/main-sync.js +163 -0
  729. package/node_modules/execa/lib/methods/node.js +51 -0
  730. package/node_modules/execa/lib/methods/parameters.js +31 -0
  731. package/node_modules/execa/lib/methods/promise.js +15 -0
  732. package/node_modules/execa/lib/methods/script.js +22 -0
  733. package/node_modules/execa/lib/methods/template.js +153 -0
  734. package/node_modules/execa/lib/pipe/abort.js +20 -0
  735. package/node_modules/execa/lib/pipe/pipe-arguments.js +91 -0
  736. package/node_modules/execa/lib/pipe/sequence.js +24 -0
  737. package/node_modules/execa/lib/pipe/setup.js +72 -0
  738. package/node_modules/execa/lib/pipe/streaming.js +51 -0
  739. package/node_modules/execa/lib/pipe/throw.js +58 -0
  740. package/node_modules/execa/lib/resolve/all-async.js +46 -0
  741. package/node_modules/execa/lib/resolve/all-sync.js +33 -0
  742. package/node_modules/execa/lib/resolve/exit-async.js +54 -0
  743. package/node_modules/execa/lib/resolve/exit-sync.js +25 -0
  744. package/node_modules/execa/lib/resolve/stdio.js +47 -0
  745. package/node_modules/execa/lib/resolve/wait-stream.js +96 -0
  746. package/node_modules/execa/lib/resolve/wait-subprocess.js +146 -0
  747. package/node_modules/execa/lib/return/duration.js +8 -0
  748. package/node_modules/execa/lib/return/early-error.js +60 -0
  749. package/node_modules/execa/lib/return/final-error.js +40 -0
  750. package/node_modules/execa/lib/return/message.js +157 -0
  751. package/node_modules/execa/lib/return/reject.js +13 -0
  752. package/node_modules/execa/lib/return/result.js +186 -0
  753. package/node_modules/execa/lib/stdio/direction.js +76 -0
  754. package/node_modules/execa/lib/stdio/duplicate.js +116 -0
  755. package/node_modules/execa/lib/stdio/handle-async.js +52 -0
  756. package/node_modules/execa/lib/stdio/handle-sync.js +57 -0
  757. package/node_modules/execa/lib/stdio/handle.js +214 -0
  758. package/node_modules/execa/lib/stdio/input-option.js +50 -0
  759. package/node_modules/execa/lib/stdio/native.js +106 -0
  760. package/node_modules/execa/lib/stdio/stdio-option.js +60 -0
  761. package/node_modules/execa/lib/stdio/type.js +173 -0
  762. package/node_modules/execa/lib/terminate/cancel.js +20 -0
  763. package/node_modules/execa/lib/terminate/cleanup.js +16 -0
  764. package/node_modules/execa/lib/terminate/graceful.js +71 -0
  765. package/node_modules/execa/lib/terminate/kill.js +93 -0
  766. package/node_modules/execa/lib/terminate/signal.js +70 -0
  767. package/node_modules/execa/lib/terminate/timeout.js +21 -0
  768. package/node_modules/execa/lib/transform/encoding-transform.js +51 -0
  769. package/node_modules/execa/lib/transform/generator.js +107 -0
  770. package/node_modules/execa/lib/transform/normalize.js +111 -0
  771. package/node_modules/execa/lib/transform/object-mode.js +41 -0
  772. package/node_modules/execa/lib/transform/run-async.js +60 -0
  773. package/node_modules/execa/lib/transform/run-sync.js +50 -0
  774. package/node_modules/execa/lib/transform/split.js +110 -0
  775. package/node_modules/execa/lib/transform/validate.js +43 -0
  776. package/node_modules/execa/lib/utils/abort-signal.js +8 -0
  777. package/node_modules/execa/lib/utils/deferred.js +7 -0
  778. package/node_modules/execa/lib/utils/max-listeners.js +14 -0
  779. package/node_modules/execa/lib/utils/standard-stream.js +6 -0
  780. package/node_modules/execa/lib/utils/uint-array.js +69 -0
  781. package/node_modules/execa/lib/verbose/complete.js +24 -0
  782. package/node_modules/execa/lib/verbose/custom.js +26 -0
  783. package/node_modules/execa/lib/verbose/default.js +54 -0
  784. package/node_modules/execa/lib/verbose/error.js +13 -0
  785. package/node_modules/execa/lib/verbose/info.js +39 -0
  786. package/node_modules/execa/lib/verbose/ipc.js +15 -0
  787. package/node_modules/execa/lib/verbose/log.js +54 -0
  788. package/node_modules/execa/lib/verbose/output.js +60 -0
  789. package/node_modules/execa/lib/verbose/start.js +15 -0
  790. package/node_modules/execa/lib/verbose/values.js +33 -0
  791. package/node_modules/execa/license +9 -0
  792. package/node_modules/execa/package.json +105 -0
  793. package/node_modules/execa/readme.md +461 -0
  794. package/node_modules/execa/types/arguments/encoding-option.d.ts +19 -0
  795. package/node_modules/execa/types/arguments/fd-options.d.ts +8 -0
  796. package/node_modules/execa/types/arguments/options.d.ts +400 -0
  797. package/node_modules/execa/types/arguments/specific.d.ts +52 -0
  798. package/node_modules/execa/types/convert.d.ts +58 -0
  799. package/node_modules/execa/types/ipc.d.ts +156 -0
  800. package/node_modules/execa/types/methods/command.d.ts +114 -0
  801. package/node_modules/execa/types/methods/main-async.d.ts +379 -0
  802. package/node_modules/execa/types/methods/main-sync.d.ts +59 -0
  803. package/node_modules/execa/types/methods/node.d.ts +62 -0
  804. package/node_modules/execa/types/methods/script.d.ts +115 -0
  805. package/node_modules/execa/types/methods/template.d.ts +18 -0
  806. package/node_modules/execa/types/pipe.d.ts +58 -0
  807. package/node_modules/execa/types/return/final-error.d.ts +51 -0
  808. package/node_modules/execa/types/return/ignore.d.ts +26 -0
  809. package/node_modules/execa/types/return/result-all.d.ts +30 -0
  810. package/node_modules/execa/types/return/result-ipc.d.ts +27 -0
  811. package/node_modules/execa/types/return/result-stdio.d.ts +17 -0
  812. package/node_modules/execa/types/return/result-stdout.d.ts +50 -0
  813. package/node_modules/execa/types/return/result.d.ts +203 -0
  814. package/node_modules/execa/types/stdio/array.d.ts +16 -0
  815. package/node_modules/execa/types/stdio/direction.d.ts +12 -0
  816. package/node_modules/execa/types/stdio/option.d.ts +40 -0
  817. package/node_modules/execa/types/stdio/type.d.ts +170 -0
  818. package/node_modules/execa/types/subprocess/all.d.ts +17 -0
  819. package/node_modules/execa/types/subprocess/stdio.d.ts +18 -0
  820. package/node_modules/execa/types/subprocess/stdout.d.ts +22 -0
  821. package/node_modules/execa/types/subprocess/subprocess.d.ts +117 -0
  822. package/node_modules/execa/types/transform/normalize.d.ts +57 -0
  823. package/node_modules/execa/types/transform/object-mode.d.ts +21 -0
  824. package/node_modules/execa/types/utils.d.ts +13 -0
  825. package/node_modules/execa/types/verbose.d.ts +98 -0
  826. package/node_modules/figures/index.d.ts +279 -0
  827. package/node_modules/figures/index.js +292 -0
  828. package/node_modules/figures/license +9 -0
  829. package/node_modules/figures/package.json +49 -0
  830. package/node_modules/figures/readme.md +337 -0
  831. package/node_modules/flatted/LICENSE +15 -0
  832. package/node_modules/flatted/README.md +111 -0
  833. package/node_modules/flatted/cjs/index.js +132 -0
  834. package/node_modules/flatted/cjs/package.json +1 -0
  835. package/node_modules/flatted/es.js +1 -0
  836. package/node_modules/flatted/esm/index.js +127 -0
  837. package/node_modules/flatted/esm.js +1 -0
  838. package/node_modules/flatted/golang/README.md +60 -0
  839. package/node_modules/flatted/golang/pkg/flatted/flatted.go +277 -0
  840. package/node_modules/flatted/index.js +155 -0
  841. package/node_modules/flatted/min.js +1 -0
  842. package/node_modules/flatted/package.json +80 -0
  843. package/node_modules/flatted/php/flatted.php +156 -0
  844. package/node_modules/flatted/python/flatted.py +144 -0
  845. package/node_modules/flatted/types/index.d.ts +4 -0
  846. package/node_modules/get-stream/license +9 -0
  847. package/node_modules/get-stream/package.json +60 -0
  848. package/node_modules/get-stream/readme.md +303 -0
  849. package/node_modules/get-stream/source/array-buffer.js +84 -0
  850. package/node_modules/get-stream/source/array.js +32 -0
  851. package/node_modules/get-stream/source/buffer.js +19 -0
  852. package/node_modules/get-stream/source/contents.js +121 -0
  853. package/node_modules/get-stream/source/exports.js +5 -0
  854. package/node_modules/get-stream/source/index.d.ts +121 -0
  855. package/node_modules/get-stream/source/index.js +13 -0
  856. package/node_modules/get-stream/source/stream.js +65 -0
  857. package/node_modules/get-stream/source/string.js +41 -0
  858. package/node_modules/get-stream/source/utils.js +11 -0
  859. package/node_modules/human-signals/LICENSE +201 -0
  860. package/node_modules/human-signals/README.md +171 -0
  861. package/node_modules/human-signals/build/src/core.js +273 -0
  862. package/node_modules/human-signals/build/src/main.d.ts +206 -0
  863. package/node_modules/human-signals/build/src/main.js +70 -0
  864. package/node_modules/human-signals/build/src/realtime.js +16 -0
  865. package/node_modules/human-signals/build/src/signals.js +34 -0
  866. package/node_modules/human-signals/package.json +66 -0
  867. package/node_modules/is-plain-obj/index.d.ts +35 -0
  868. package/node_modules/is-plain-obj/index.js +8 -0
  869. package/node_modules/is-plain-obj/license +9 -0
  870. package/node_modules/is-plain-obj/package.json +41 -0
  871. package/node_modules/is-plain-obj/readme.md +58 -0
  872. package/node_modules/is-stream/index.d.ts +90 -0
  873. package/node_modules/is-stream/index.js +37 -0
  874. package/node_modules/is-stream/license +9 -0
  875. package/node_modules/is-stream/package.json +48 -0
  876. package/node_modules/is-stream/readme.md +57 -0
  877. package/node_modules/is-unicode-supported/index.d.ts +12 -0
  878. package/node_modules/is-unicode-supported/index.js +21 -0
  879. package/node_modules/is-unicode-supported/license +9 -0
  880. package/node_modules/is-unicode-supported/package.json +47 -0
  881. package/node_modules/is-unicode-supported/readme.md +35 -0
  882. package/node_modules/isexe/.npmignore +2 -0
  883. package/node_modules/isexe/LICENSE +15 -0
  884. package/node_modules/isexe/README.md +51 -0
  885. package/node_modules/isexe/index.js +57 -0
  886. package/node_modules/isexe/mode.js +41 -0
  887. package/node_modules/isexe/package.json +31 -0
  888. package/node_modules/isexe/test/basic.js +221 -0
  889. package/node_modules/isexe/windows.js +42 -0
  890. package/node_modules/json-rest-schema/LICENSE +706 -0
  891. package/node_modules/json-rest-schema/ONBOARDING.md +304 -0
  892. package/node_modules/json-rest-schema/README.md +2582 -0
  893. package/node_modules/json-rest-schema/package.json +70 -0
  894. package/node_modules/json-rest-schema/src/adapters/react-hook-form.js +240 -0
  895. package/node_modules/json-rest-schema/src/adapters/vee-validate.js +80 -0
  896. package/node_modules/json-rest-schema/src/adapters/vue.js +345 -0
  897. package/node_modules/json-rest-schema/src/adapters/vuetify.js +79 -0
  898. package/node_modules/json-rest-schema/src/core/CorePlugin.js +452 -0
  899. package/node_modules/json-rest-schema/src/core/Schema.js +1398 -0
  900. package/node_modules/json-rest-schema/src/core/definition-helpers.js +7 -0
  901. package/node_modules/json-rest-schema/src/core/nested-contract.js +86 -0
  902. package/node_modules/json-rest-schema/src/core/transport-schema.js +611 -0
  903. package/node_modules/json-rest-schema/src/index.js +218 -0
  904. package/node_modules/json-rest-schema/src/utils/adapter-helpers.js +117 -0
  905. package/node_modules/json-rest-schema/src/utils/error-helpers.js +119 -0
  906. package/node_modules/json-rest-schema/src/utils/object-helpers.js +23 -0
  907. package/node_modules/json-rest-schema/src/utils/path-helpers.js +118 -0
  908. package/node_modules/node-addon-api/LICENSE.md +9 -0
  909. package/node_modules/node-addon-api/README.md +319 -0
  910. package/node_modules/node-addon-api/common.gypi +20 -0
  911. package/node_modules/node-addon-api/except.gypi +25 -0
  912. package/node_modules/node-addon-api/index.js +12 -0
  913. package/node_modules/node-addon-api/napi-inl.deprecated.h +186 -0
  914. package/node_modules/node-addon-api/napi-inl.h +6607 -0
  915. package/node_modules/node-addon-api/napi.h +3201 -0
  916. package/node_modules/node-addon-api/node_addon_api.gyp +32 -0
  917. package/node_modules/node-addon-api/node_api.gyp +9 -0
  918. package/node_modules/node-addon-api/noexcept.gypi +26 -0
  919. package/node_modules/node-addon-api/nothing.c +0 -0
  920. package/node_modules/node-addon-api/package-support.json +21 -0
  921. package/node_modules/node-addon-api/package.json +480 -0
  922. package/node_modules/node-addon-api/tools/README.md +73 -0
  923. package/node_modules/node-addon-api/tools/check-napi.js +99 -0
  924. package/node_modules/node-addon-api/tools/clang-format.js +71 -0
  925. package/node_modules/node-addon-api/tools/conversion.js +301 -0
  926. package/node_modules/node-addon-api/tools/eslint-format.js +79 -0
  927. package/node_modules/node-pty/LICENSE +69 -0
  928. package/node_modules/node-pty/README.md +165 -0
  929. package/node_modules/node-pty/binding.gyp +111 -0
  930. package/node_modules/node-pty/deps/.editorconfig +2 -0
  931. package/node_modules/node-pty/deps/winpty/.drone.yml +17 -0
  932. package/node_modules/node-pty/deps/winpty/.gitattributes +19 -0
  933. package/node_modules/node-pty/deps/winpty/LICENSE +21 -0
  934. package/node_modules/node-pty/deps/winpty/Makefile +166 -0
  935. package/node_modules/node-pty/deps/winpty/README.md +151 -0
  936. package/node_modules/node-pty/deps/winpty/RELEASES.md +280 -0
  937. package/node_modules/node-pty/deps/winpty/VERSION.txt +1 -0
  938. package/node_modules/node-pty/deps/winpty/configure +167 -0
  939. package/node_modules/node-pty/deps/winpty/misc/BufferResizeTests.cc +90 -0
  940. package/node_modules/node-pty/deps/winpty/misc/ChangeScreenBuffer.cc +53 -0
  941. package/node_modules/node-pty/deps/winpty/misc/ClearConsole.cc +72 -0
  942. package/node_modules/node-pty/deps/winpty/misc/ConinMode.cc +117 -0
  943. package/node_modules/node-pty/deps/winpty/misc/ConinMode.ps1 +116 -0
  944. package/node_modules/node-pty/deps/winpty/misc/ConoutMode.cc +113 -0
  945. package/node_modules/node-pty/deps/winpty/misc/DebugClient.py +42 -0
  946. package/node_modules/node-pty/deps/winpty/misc/DebugServer.py +63 -0
  947. package/node_modules/node-pty/deps/winpty/misc/DumpLines.py +5 -0
  948. package/node_modules/node-pty/deps/winpty/misc/EnableExtendedFlags.txt +46 -0
  949. package/node_modules/node-pty/deps/winpty/misc/Font-Report-June2016/CP437-Consolas.txt +528 -0
  950. package/node_modules/node-pty/deps/winpty/misc/Font-Report-June2016/CP437-Lucida.txt +633 -0
  951. package/node_modules/node-pty/deps/winpty/misc/Font-Report-June2016/CP932.txt +630 -0
  952. package/node_modules/node-pty/deps/winpty/misc/Font-Report-June2016/CP936.txt +630 -0
  953. package/node_modules/node-pty/deps/winpty/misc/Font-Report-June2016/CP949.txt +630 -0
  954. package/node_modules/node-pty/deps/winpty/misc/Font-Report-June2016/CP950.txt +630 -0
  955. package/node_modules/node-pty/deps/winpty/misc/Font-Report-June2016/MinimumWindowWidths.txt +16 -0
  956. package/node_modules/node-pty/deps/winpty/misc/Font-Report-June2016/Results.txt +4 -0
  957. package/node_modules/node-pty/deps/winpty/misc/Font-Report-June2016/Windows10SetFontBugginess.txt +144 -0
  958. package/node_modules/node-pty/deps/winpty/misc/FontSurvey.cc +100 -0
  959. package/node_modules/node-pty/deps/winpty/misc/FormatChar.h +21 -0
  960. package/node_modules/node-pty/deps/winpty/misc/FreezePerfTest.cc +62 -0
  961. package/node_modules/node-pty/deps/winpty/misc/GetCh.cc +20 -0
  962. package/node_modules/node-pty/deps/winpty/misc/GetConsolePos.cc +41 -0
  963. package/node_modules/node-pty/deps/winpty/misc/GetFont.cc +261 -0
  964. package/node_modules/node-pty/deps/winpty/misc/IdentifyConsoleWindow.ps1 +51 -0
  965. package/node_modules/node-pty/deps/winpty/misc/IsNewConsole.cc +87 -0
  966. package/node_modules/node-pty/deps/winpty/misc/MouseInputNotes.txt +90 -0
  967. package/node_modules/node-pty/deps/winpty/misc/MoveConsoleWindow.cc +34 -0
  968. package/node_modules/node-pty/deps/winpty/misc/Notes.txt +219 -0
  969. package/node_modules/node-pty/deps/winpty/misc/OSVersion.cc +27 -0
  970. package/node_modules/node-pty/deps/winpty/misc/ScreenBufferFreezeInactive.cc +101 -0
  971. package/node_modules/node-pty/deps/winpty/misc/ScreenBufferTest.cc +671 -0
  972. package/node_modules/node-pty/deps/winpty/misc/ScreenBufferTest2.cc +151 -0
  973. package/node_modules/node-pty/deps/winpty/misc/SelectAllTest.cc +45 -0
  974. package/node_modules/node-pty/deps/winpty/misc/SetBufferSize.cc +32 -0
  975. package/node_modules/node-pty/deps/winpty/misc/SetCursorPos.cc +10 -0
  976. package/node_modules/node-pty/deps/winpty/misc/SetFont.cc +145 -0
  977. package/node_modules/node-pty/deps/winpty/misc/SetWindowRect.cc +36 -0
  978. package/node_modules/node-pty/deps/winpty/misc/ShowArgv.cc +12 -0
  979. package/node_modules/node-pty/deps/winpty/misc/ShowConsoleInput.cc +40 -0
  980. package/node_modules/node-pty/deps/winpty/misc/Spew.py +5 -0
  981. package/node_modules/node-pty/deps/winpty/misc/TestUtil.cc +172 -0
  982. package/node_modules/node-pty/deps/winpty/misc/UnicodeDoubleWidthTest.cc +102 -0
  983. package/node_modules/node-pty/deps/winpty/misc/UnicodeWideTest1.cc +246 -0
  984. package/node_modules/node-pty/deps/winpty/misc/UnicodeWideTest2.cc +130 -0
  985. package/node_modules/node-pty/deps/winpty/misc/UnixEcho.cc +89 -0
  986. package/node_modules/node-pty/deps/winpty/misc/Utf16Echo.cc +46 -0
  987. package/node_modules/node-pty/deps/winpty/misc/VeryLargeRead.cc +122 -0
  988. package/node_modules/node-pty/deps/winpty/misc/VkEscapeTest.cc +56 -0
  989. package/node_modules/node-pty/deps/winpty/misc/Win10ResizeWhileFrozen.cc +52 -0
  990. package/node_modules/node-pty/deps/winpty/misc/Win10WrapTest1.cc +57 -0
  991. package/node_modules/node-pty/deps/winpty/misc/Win10WrapTest2.cc +30 -0
  992. package/node_modules/node-pty/deps/winpty/misc/Win32Echo1.cc +26 -0
  993. package/node_modules/node-pty/deps/winpty/misc/Win32Echo2.cc +19 -0
  994. package/node_modules/node-pty/deps/winpty/misc/Win32Test1.cc +46 -0
  995. package/node_modules/node-pty/deps/winpty/misc/Win32Test2.cc +70 -0
  996. package/node_modules/node-pty/deps/winpty/misc/Win32Test3.cc +78 -0
  997. package/node_modules/node-pty/deps/winpty/misc/Win32Write1.cc +44 -0
  998. package/node_modules/node-pty/deps/winpty/misc/WindowsBugCrashReader.cc +27 -0
  999. package/node_modules/node-pty/deps/winpty/misc/WriteConsole.cc +106 -0
  1000. package/node_modules/node-pty/deps/winpty/misc/build32.sh +9 -0
  1001. package/node_modules/node-pty/deps/winpty/misc/build64.sh +9 -0
  1002. package/node_modules/node-pty/deps/winpty/misc/color-test.sh +212 -0
  1003. package/node_modules/node-pty/deps/winpty/misc/font-notes.txt +300 -0
  1004. package/node_modules/node-pty/deps/winpty/misc/winbug-15048.cc +201 -0
  1005. package/node_modules/node-pty/deps/winpty/ship/build-pty4j-libpty.bat +36 -0
  1006. package/node_modules/node-pty/deps/winpty/ship/common_ship.py +53 -0
  1007. package/node_modules/node-pty/deps/winpty/ship/make_msvc_package.py +165 -0
  1008. package/node_modules/node-pty/deps/winpty/ship/ship.py +108 -0
  1009. package/node_modules/node-pty/deps/winpty/src/agent/Agent.cc +613 -0
  1010. package/node_modules/node-pty/deps/winpty/src/agent/Agent.h +103 -0
  1011. package/node_modules/node-pty/deps/winpty/src/agent/AgentCreateDesktop.cc +84 -0
  1012. package/node_modules/node-pty/deps/winpty/src/agent/AgentCreateDesktop.h +28 -0
  1013. package/node_modules/node-pty/deps/winpty/src/agent/ConsoleFont.cc +632 -0
  1014. package/node_modules/node-pty/deps/winpty/src/agent/ConsoleFont.h +28 -0
  1015. package/node_modules/node-pty/deps/winpty/src/agent/ConsoleInput.cc +852 -0
  1016. package/node_modules/node-pty/deps/winpty/src/agent/ConsoleInput.h +109 -0
  1017. package/node_modules/node-pty/deps/winpty/src/agent/ConsoleInputReencoding.cc +121 -0
  1018. package/node_modules/node-pty/deps/winpty/src/agent/ConsoleInputReencoding.h +36 -0
  1019. package/node_modules/node-pty/deps/winpty/src/agent/ConsoleLine.cc +152 -0
  1020. package/node_modules/node-pty/deps/winpty/src/agent/ConsoleLine.h +41 -0
  1021. package/node_modules/node-pty/deps/winpty/src/agent/Coord.h +87 -0
  1022. package/node_modules/node-pty/deps/winpty/src/agent/DebugShowInput.cc +239 -0
  1023. package/node_modules/node-pty/deps/winpty/src/agent/DebugShowInput.h +32 -0
  1024. package/node_modules/node-pty/deps/winpty/src/agent/DefaultInputMap.cc +422 -0
  1025. package/node_modules/node-pty/deps/winpty/src/agent/DefaultInputMap.h +28 -0
  1026. package/node_modules/node-pty/deps/winpty/src/agent/DsrSender.h +30 -0
  1027. package/node_modules/node-pty/deps/winpty/src/agent/EventLoop.cc +99 -0
  1028. package/node_modules/node-pty/deps/winpty/src/agent/EventLoop.h +47 -0
  1029. package/node_modules/node-pty/deps/winpty/src/agent/InputMap.cc +246 -0
  1030. package/node_modules/node-pty/deps/winpty/src/agent/InputMap.h +114 -0
  1031. package/node_modules/node-pty/deps/winpty/src/agent/LargeConsoleRead.cc +71 -0
  1032. package/node_modules/node-pty/deps/winpty/src/agent/LargeConsoleRead.h +68 -0
  1033. package/node_modules/node-pty/deps/winpty/src/agent/NamedPipe.cc +378 -0
  1034. package/node_modules/node-pty/deps/winpty/src/agent/NamedPipe.h +125 -0
  1035. package/node_modules/node-pty/deps/winpty/src/agent/Scraper.cc +699 -0
  1036. package/node_modules/node-pty/deps/winpty/src/agent/Scraper.h +103 -0
  1037. package/node_modules/node-pty/deps/winpty/src/agent/SimplePool.h +75 -0
  1038. package/node_modules/node-pty/deps/winpty/src/agent/SmallRect.h +143 -0
  1039. package/node_modules/node-pty/deps/winpty/src/agent/Terminal.cc +535 -0
  1040. package/node_modules/node-pty/deps/winpty/src/agent/Terminal.h +69 -0
  1041. package/node_modules/node-pty/deps/winpty/src/agent/UnicodeEncoding.h +157 -0
  1042. package/node_modules/node-pty/deps/winpty/src/agent/UnicodeEncodingTest.cc +189 -0
  1043. package/node_modules/node-pty/deps/winpty/src/agent/Win32Console.cc +107 -0
  1044. package/node_modules/node-pty/deps/winpty/src/agent/Win32Console.h +67 -0
  1045. package/node_modules/node-pty/deps/winpty/src/agent/Win32ConsoleBuffer.cc +193 -0
  1046. package/node_modules/node-pty/deps/winpty/src/agent/Win32ConsoleBuffer.h +99 -0
  1047. package/node_modules/node-pty/deps/winpty/src/agent/main.cc +114 -0
  1048. package/node_modules/node-pty/deps/winpty/src/agent/subdir.mk +61 -0
  1049. package/node_modules/node-pty/deps/winpty/src/configurations.gypi +60 -0
  1050. package/node_modules/node-pty/deps/winpty/src/debugserver/DebugServer.cc +117 -0
  1051. package/node_modules/node-pty/deps/winpty/src/debugserver/subdir.mk +41 -0
  1052. package/node_modules/node-pty/deps/winpty/src/include/winpty.h +242 -0
  1053. package/node_modules/node-pty/deps/winpty/src/include/winpty_constants.h +131 -0
  1054. package/node_modules/node-pty/deps/winpty/src/libwinpty/AgentLocation.cc +75 -0
  1055. package/node_modules/node-pty/deps/winpty/src/libwinpty/AgentLocation.h +28 -0
  1056. package/node_modules/node-pty/deps/winpty/src/libwinpty/LibWinptyException.h +54 -0
  1057. package/node_modules/node-pty/deps/winpty/src/libwinpty/WinptyInternal.h +72 -0
  1058. package/node_modules/node-pty/deps/winpty/src/libwinpty/subdir.mk +46 -0
  1059. package/node_modules/node-pty/deps/winpty/src/libwinpty/winpty.cc +970 -0
  1060. package/node_modules/node-pty/deps/winpty/src/shared/AgentMsg.h +38 -0
  1061. package/node_modules/node-pty/deps/winpty/src/shared/BackgroundDesktop.cc +122 -0
  1062. package/node_modules/node-pty/deps/winpty/src/shared/BackgroundDesktop.h +73 -0
  1063. package/node_modules/node-pty/deps/winpty/src/shared/Buffer.cc +103 -0
  1064. package/node_modules/node-pty/deps/winpty/src/shared/Buffer.h +102 -0
  1065. package/node_modules/node-pty/deps/winpty/src/shared/DebugClient.cc +187 -0
  1066. package/node_modules/node-pty/deps/winpty/src/shared/DebugClient.h +38 -0
  1067. package/node_modules/node-pty/deps/winpty/src/shared/GenRandom.cc +138 -0
  1068. package/node_modules/node-pty/deps/winpty/src/shared/GenRandom.h +55 -0
  1069. package/node_modules/node-pty/deps/winpty/src/shared/GetCommitHash.bat +13 -0
  1070. package/node_modules/node-pty/deps/winpty/src/shared/Mutex.h +54 -0
  1071. package/node_modules/node-pty/deps/winpty/src/shared/OsModule.h +63 -0
  1072. package/node_modules/node-pty/deps/winpty/src/shared/OwnedHandle.cc +36 -0
  1073. package/node_modules/node-pty/deps/winpty/src/shared/OwnedHandle.h +45 -0
  1074. package/node_modules/node-pty/deps/winpty/src/shared/PrecompiledHeader.h +43 -0
  1075. package/node_modules/node-pty/deps/winpty/src/shared/StringBuilder.h +227 -0
  1076. package/node_modules/node-pty/deps/winpty/src/shared/StringBuilderTest.cc +114 -0
  1077. package/node_modules/node-pty/deps/winpty/src/shared/StringUtil.cc +55 -0
  1078. package/node_modules/node-pty/deps/winpty/src/shared/StringUtil.h +80 -0
  1079. package/node_modules/node-pty/deps/winpty/src/shared/TimeMeasurement.h +63 -0
  1080. package/node_modules/node-pty/deps/winpty/src/shared/UnixCtrlChars.h +45 -0
  1081. package/node_modules/node-pty/deps/winpty/src/shared/UpdateGenVersion.bat +20 -0
  1082. package/node_modules/node-pty/deps/winpty/src/shared/WindowsSecurity.cc +460 -0
  1083. package/node_modules/node-pty/deps/winpty/src/shared/WindowsSecurity.h +104 -0
  1084. package/node_modules/node-pty/deps/winpty/src/shared/WindowsVersion.cc +252 -0
  1085. package/node_modules/node-pty/deps/winpty/src/shared/WindowsVersion.h +29 -0
  1086. package/node_modules/node-pty/deps/winpty/src/shared/WinptyAssert.cc +55 -0
  1087. package/node_modules/node-pty/deps/winpty/src/shared/WinptyAssert.h +64 -0
  1088. package/node_modules/node-pty/deps/winpty/src/shared/WinptyException.cc +57 -0
  1089. package/node_modules/node-pty/deps/winpty/src/shared/WinptyException.h +43 -0
  1090. package/node_modules/node-pty/deps/winpty/src/shared/WinptyVersion.cc +42 -0
  1091. package/node_modules/node-pty/deps/winpty/src/shared/WinptyVersion.h +27 -0
  1092. package/node_modules/node-pty/deps/winpty/src/shared/winpty_snprintf.h +99 -0
  1093. package/node_modules/node-pty/deps/winpty/src/subdir.mk +5 -0
  1094. package/node_modules/node-pty/deps/winpty/src/tests/subdir.mk +28 -0
  1095. package/node_modules/node-pty/deps/winpty/src/tests/trivial_test.cc +158 -0
  1096. package/node_modules/node-pty/deps/winpty/src/unix-adapter/InputHandler.cc +114 -0
  1097. package/node_modules/node-pty/deps/winpty/src/unix-adapter/InputHandler.h +56 -0
  1098. package/node_modules/node-pty/deps/winpty/src/unix-adapter/OutputHandler.cc +80 -0
  1099. package/node_modules/node-pty/deps/winpty/src/unix-adapter/OutputHandler.h +53 -0
  1100. package/node_modules/node-pty/deps/winpty/src/unix-adapter/Util.cc +86 -0
  1101. package/node_modules/node-pty/deps/winpty/src/unix-adapter/Util.h +31 -0
  1102. package/node_modules/node-pty/deps/winpty/src/unix-adapter/WakeupFd.cc +70 -0
  1103. package/node_modules/node-pty/deps/winpty/src/unix-adapter/WakeupFd.h +42 -0
  1104. package/node_modules/node-pty/deps/winpty/src/unix-adapter/main.cc +729 -0
  1105. package/node_modules/node-pty/deps/winpty/src/unix-adapter/subdir.mk +41 -0
  1106. package/node_modules/node-pty/deps/winpty/src/winpty.gyp +234 -0
  1107. package/node_modules/node-pty/deps/winpty/vcbuild.bat +83 -0
  1108. package/node_modules/node-pty/lib/conpty_console_list_agent.js +16 -0
  1109. package/node_modules/node-pty/lib/conpty_console_list_agent.js.map +1 -0
  1110. package/node_modules/node-pty/lib/eventEmitter2.js +47 -0
  1111. package/node_modules/node-pty/lib/eventEmitter2.js.map +1 -0
  1112. package/node_modules/node-pty/lib/eventEmitter2.test.js +30 -0
  1113. package/node_modules/node-pty/lib/eventEmitter2.test.js.map +1 -0
  1114. package/node_modules/node-pty/lib/index.js +52 -0
  1115. package/node_modules/node-pty/lib/index.js.map +1 -0
  1116. package/node_modules/node-pty/lib/interfaces.js +7 -0
  1117. package/node_modules/node-pty/lib/interfaces.js.map +1 -0
  1118. package/node_modules/node-pty/lib/shared/conout.js +11 -0
  1119. package/node_modules/node-pty/lib/shared/conout.js.map +1 -0
  1120. package/node_modules/node-pty/lib/terminal.js +190 -0
  1121. package/node_modules/node-pty/lib/terminal.js.map +1 -0
  1122. package/node_modules/node-pty/lib/terminal.test.js +139 -0
  1123. package/node_modules/node-pty/lib/terminal.test.js.map +1 -0
  1124. package/node_modules/node-pty/lib/testUtils.test.js +28 -0
  1125. package/node_modules/node-pty/lib/testUtils.test.js.map +1 -0
  1126. package/node_modules/node-pty/lib/types.js +7 -0
  1127. package/node_modules/node-pty/lib/types.js.map +1 -0
  1128. package/node_modules/node-pty/lib/unixTerminal.js +346 -0
  1129. package/node_modules/node-pty/lib/unixTerminal.js.map +1 -0
  1130. package/node_modules/node-pty/lib/unixTerminal.test.js +351 -0
  1131. package/node_modules/node-pty/lib/unixTerminal.test.js.map +1 -0
  1132. package/node_modules/node-pty/lib/utils.js +39 -0
  1133. package/node_modules/node-pty/lib/utils.js.map +1 -0
  1134. package/node_modules/node-pty/lib/windowsConoutConnection.js +125 -0
  1135. package/node_modules/node-pty/lib/windowsConoutConnection.js.map +1 -0
  1136. package/node_modules/node-pty/lib/windowsPtyAgent.js +320 -0
  1137. package/node_modules/node-pty/lib/windowsPtyAgent.js.map +1 -0
  1138. package/node_modules/node-pty/lib/windowsPtyAgent.test.js +90 -0
  1139. package/node_modules/node-pty/lib/windowsPtyAgent.test.js.map +1 -0
  1140. package/node_modules/node-pty/lib/windowsTerminal.js +199 -0
  1141. package/node_modules/node-pty/lib/windowsTerminal.js.map +1 -0
  1142. package/node_modules/node-pty/lib/windowsTerminal.test.js +219 -0
  1143. package/node_modules/node-pty/lib/windowsTerminal.test.js.map +1 -0
  1144. package/node_modules/node-pty/lib/worker/conoutSocketWorker.js +22 -0
  1145. package/node_modules/node-pty/lib/worker/conoutSocketWorker.js.map +1 -0
  1146. package/node_modules/node-pty/package.json +64 -0
  1147. package/node_modules/node-pty/prebuilds/darwin-arm64/pty.node +0 -0
  1148. package/node_modules/node-pty/prebuilds/darwin-arm64/spawn-helper +0 -0
  1149. package/node_modules/node-pty/prebuilds/darwin-x64/pty.node +0 -0
  1150. package/node_modules/node-pty/prebuilds/darwin-x64/spawn-helper +0 -0
  1151. package/node_modules/node-pty/prebuilds/win32-arm64/conpty/OpenConsole.exe +0 -0
  1152. package/node_modules/node-pty/prebuilds/win32-arm64/conpty/conpty.dll +0 -0
  1153. package/node_modules/node-pty/prebuilds/win32-arm64/conpty.node +0 -0
  1154. package/node_modules/node-pty/prebuilds/win32-arm64/conpty.pdb +0 -0
  1155. package/node_modules/node-pty/prebuilds/win32-arm64/conpty_console_list.node +0 -0
  1156. package/node_modules/node-pty/prebuilds/win32-arm64/conpty_console_list.pdb +0 -0
  1157. package/node_modules/node-pty/prebuilds/win32-arm64/pty.node +0 -0
  1158. package/node_modules/node-pty/prebuilds/win32-arm64/pty.pdb +0 -0
  1159. package/node_modules/node-pty/prebuilds/win32-arm64/winpty-agent.exe +0 -0
  1160. package/node_modules/node-pty/prebuilds/win32-arm64/winpty-agent.pdb +0 -0
  1161. package/node_modules/node-pty/prebuilds/win32-arm64/winpty.dll +0 -0
  1162. package/node_modules/node-pty/prebuilds/win32-arm64/winpty.pdb +0 -0
  1163. package/node_modules/node-pty/prebuilds/win32-x64/conpty/OpenConsole.exe +0 -0
  1164. package/node_modules/node-pty/prebuilds/win32-x64/conpty/conpty.dll +0 -0
  1165. package/node_modules/node-pty/prebuilds/win32-x64/conpty.node +0 -0
  1166. package/node_modules/node-pty/prebuilds/win32-x64/conpty.pdb +0 -0
  1167. package/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.node +0 -0
  1168. package/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.pdb +0 -0
  1169. package/node_modules/node-pty/prebuilds/win32-x64/pty.node +0 -0
  1170. package/node_modules/node-pty/prebuilds/win32-x64/pty.pdb +0 -0
  1171. package/node_modules/node-pty/prebuilds/win32-x64/winpty-agent.exe +0 -0
  1172. package/node_modules/node-pty/prebuilds/win32-x64/winpty-agent.pdb +0 -0
  1173. package/node_modules/node-pty/prebuilds/win32-x64/winpty.dll +0 -0
  1174. package/node_modules/node-pty/prebuilds/win32-x64/winpty.pdb +0 -0
  1175. package/node_modules/node-pty/scripts/gen-compile-commands.js +8 -0
  1176. package/node_modules/node-pty/scripts/increment-version.js +54 -0
  1177. package/node_modules/node-pty/scripts/post-install.js +80 -0
  1178. package/node_modules/node-pty/scripts/prebuild.js +34 -0
  1179. package/node_modules/node-pty/src/conpty_console_list_agent.ts +15 -0
  1180. package/node_modules/node-pty/src/eventEmitter2.test.ts +30 -0
  1181. package/node_modules/node-pty/src/eventEmitter2.ts +48 -0
  1182. package/node_modules/node-pty/src/index.ts +52 -0
  1183. package/node_modules/node-pty/src/interfaces.ts +130 -0
  1184. package/node_modules/node-pty/src/native.d.ts +54 -0
  1185. package/node_modules/node-pty/src/shared/conout.ts +15 -0
  1186. package/node_modules/node-pty/src/terminal.test.ts +119 -0
  1187. package/node_modules/node-pty/src/terminal.ts +211 -0
  1188. package/node_modules/node-pty/src/testUtils.test.ts +23 -0
  1189. package/node_modules/node-pty/src/tsconfig.json +22 -0
  1190. package/node_modules/node-pty/src/types.ts +15 -0
  1191. package/node_modules/node-pty/src/unix/pty.cc +799 -0
  1192. package/node_modules/node-pty/src/unix/spawn-helper.cc +23 -0
  1193. package/node_modules/node-pty/src/unixTerminal.test.ts +367 -0
  1194. package/node_modules/node-pty/src/unixTerminal.ts +388 -0
  1195. package/node_modules/node-pty/src/utils.ts +29 -0
  1196. package/node_modules/node-pty/src/win/conpty.cc +583 -0
  1197. package/node_modules/node-pty/src/win/conpty.h +41 -0
  1198. package/node_modules/node-pty/src/win/conpty_console_list.cc +44 -0
  1199. package/node_modules/node-pty/src/win/path_util.cc +95 -0
  1200. package/node_modules/node-pty/src/win/path_util.h +26 -0
  1201. package/node_modules/node-pty/src/win/winpty.cc +333 -0
  1202. package/node_modules/node-pty/src/windowsConoutConnection.ts +82 -0
  1203. package/node_modules/node-pty/src/windowsPtyAgent.test.ts +94 -0
  1204. package/node_modules/node-pty/src/windowsPtyAgent.ts +321 -0
  1205. package/node_modules/node-pty/src/windowsTerminal.test.ts +229 -0
  1206. package/node_modules/node-pty/src/windowsTerminal.ts +203 -0
  1207. package/node_modules/node-pty/src/worker/conoutSocketWorker.ts +22 -0
  1208. package/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-arm64/OpenConsole.exe +0 -0
  1209. package/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-arm64/conpty.dll +0 -0
  1210. package/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-x64/OpenConsole.exe +0 -0
  1211. package/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-x64/conpty.dll +0 -0
  1212. package/node_modules/node-pty/typings/node-pty.d.ts +211 -0
  1213. package/node_modules/npm-run-path/index.d.ts +90 -0
  1214. package/node_modules/npm-run-path/index.js +55 -0
  1215. package/node_modules/npm-run-path/license +9 -0
  1216. package/node_modules/npm-run-path/node_modules/path-key/index.d.ts +31 -0
  1217. package/node_modules/npm-run-path/node_modules/path-key/index.js +12 -0
  1218. package/node_modules/npm-run-path/node_modules/path-key/license +9 -0
  1219. package/node_modules/npm-run-path/node_modules/path-key/package.json +41 -0
  1220. package/node_modules/npm-run-path/node_modules/path-key/readme.md +57 -0
  1221. package/node_modules/npm-run-path/package.json +52 -0
  1222. package/node_modules/npm-run-path/readme.md +104 -0
  1223. package/node_modules/parse-ms/index.d.ts +30 -0
  1224. package/node_modules/parse-ms/index.js +45 -0
  1225. package/node_modules/parse-ms/license +9 -0
  1226. package/node_modules/parse-ms/package.json +47 -0
  1227. package/node_modules/parse-ms/readme.md +46 -0
  1228. package/node_modules/path-key/index.d.ts +40 -0
  1229. package/node_modules/path-key/index.js +16 -0
  1230. package/node_modules/path-key/license +9 -0
  1231. package/node_modules/path-key/package.json +39 -0
  1232. package/node_modules/path-key/readme.md +61 -0
  1233. package/node_modules/pretty-ms/index.d.ts +157 -0
  1234. package/node_modules/pretty-ms/index.js +149 -0
  1235. package/node_modules/pretty-ms/license +9 -0
  1236. package/node_modules/pretty-ms/package.json +55 -0
  1237. package/node_modules/pretty-ms/readme.md +179 -0
  1238. package/node_modules/shebang-command/index.js +19 -0
  1239. package/node_modules/shebang-command/license +9 -0
  1240. package/node_modules/shebang-command/package.json +34 -0
  1241. package/node_modules/shebang-command/readme.md +34 -0
  1242. package/node_modules/shebang-regex/index.d.ts +22 -0
  1243. package/node_modules/shebang-regex/index.js +2 -0
  1244. package/node_modules/shebang-regex/license +9 -0
  1245. package/node_modules/shebang-regex/package.json +35 -0
  1246. package/node_modules/shebang-regex/readme.md +33 -0
  1247. package/node_modules/signal-exit/LICENSE.txt +16 -0
  1248. package/node_modules/signal-exit/README.md +74 -0
  1249. package/node_modules/signal-exit/dist/cjs/browser.d.ts +12 -0
  1250. package/node_modules/signal-exit/dist/cjs/browser.d.ts.map +1 -0
  1251. package/node_modules/signal-exit/dist/cjs/browser.js +10 -0
  1252. package/node_modules/signal-exit/dist/cjs/browser.js.map +1 -0
  1253. package/node_modules/signal-exit/dist/cjs/index.d.ts +48 -0
  1254. package/node_modules/signal-exit/dist/cjs/index.d.ts.map +1 -0
  1255. package/node_modules/signal-exit/dist/cjs/index.js +279 -0
  1256. package/node_modules/signal-exit/dist/cjs/index.js.map +1 -0
  1257. package/node_modules/signal-exit/dist/cjs/package.json +3 -0
  1258. package/node_modules/signal-exit/dist/cjs/signals.d.ts +29 -0
  1259. package/node_modules/signal-exit/dist/cjs/signals.d.ts.map +1 -0
  1260. package/node_modules/signal-exit/dist/cjs/signals.js +42 -0
  1261. package/node_modules/signal-exit/dist/cjs/signals.js.map +1 -0
  1262. package/node_modules/signal-exit/dist/mjs/browser.d.ts +12 -0
  1263. package/node_modules/signal-exit/dist/mjs/browser.d.ts.map +1 -0
  1264. package/node_modules/signal-exit/dist/mjs/browser.js +4 -0
  1265. package/node_modules/signal-exit/dist/mjs/browser.js.map +1 -0
  1266. package/node_modules/signal-exit/dist/mjs/index.d.ts +48 -0
  1267. package/node_modules/signal-exit/dist/mjs/index.d.ts.map +1 -0
  1268. package/node_modules/signal-exit/dist/mjs/index.js +275 -0
  1269. package/node_modules/signal-exit/dist/mjs/index.js.map +1 -0
  1270. package/node_modules/signal-exit/dist/mjs/package.json +3 -0
  1271. package/node_modules/signal-exit/dist/mjs/signals.d.ts +29 -0
  1272. package/node_modules/signal-exit/dist/mjs/signals.d.ts.map +1 -0
  1273. package/node_modules/signal-exit/dist/mjs/signals.js +39 -0
  1274. package/node_modules/signal-exit/dist/mjs/signals.js.map +1 -0
  1275. package/node_modules/signal-exit/package.json +106 -0
  1276. package/node_modules/strip-ansi/index.d.ts +15 -0
  1277. package/node_modules/strip-ansi/index.js +19 -0
  1278. package/node_modules/strip-ansi/license +9 -0
  1279. package/node_modules/strip-ansi/package.json +59 -0
  1280. package/node_modules/strip-ansi/readme.md +37 -0
  1281. package/node_modules/strip-final-newline/index.d.ts +18 -0
  1282. package/node_modules/strip-final-newline/index.js +26 -0
  1283. package/node_modules/strip-final-newline/license +9 -0
  1284. package/node_modules/strip-final-newline/package.json +49 -0
  1285. package/node_modules/strip-final-newline/readme.md +34 -0
  1286. package/node_modules/unicorn-magic/default.d.ts +13 -0
  1287. package/node_modules/unicorn-magic/default.js +14 -0
  1288. package/node_modules/unicorn-magic/license +9 -0
  1289. package/node_modules/unicorn-magic/node.d.ts +125 -0
  1290. package/node_modules/unicorn-magic/node.js +49 -0
  1291. package/node_modules/unicorn-magic/package.json +62 -0
  1292. package/node_modules/unicorn-magic/readme.md +25 -0
  1293. package/node_modules/which/LICENSE +15 -0
  1294. package/node_modules/which/README.md +54 -0
  1295. package/node_modules/which/bin/node-which +52 -0
  1296. package/node_modules/which/package.json +43 -0
  1297. package/node_modules/which/which.js +125 -0
  1298. package/node_modules/yoctocolors/base.d.ts +47 -0
  1299. package/node_modules/yoctocolors/base.js +94 -0
  1300. package/node_modules/yoctocolors/index.d.ts +2 -0
  1301. package/node_modules/yoctocolors/index.js +2 -0
  1302. package/node_modules/yoctocolors/license +9 -0
  1303. package/node_modules/yoctocolors/package.json +69 -0
  1304. package/node_modules/yoctocolors/readme.md +138 -0
  1305. package/package.json +131 -0
  1306. package/packages/adapter-setup-doctor/package.descriptor.mjs +71 -0
  1307. package/packages/adapter-setup-doctor/package.json +17 -0
  1308. package/packages/adapter-setup-doctor/src/server/AdapterSetupDoctorProvider.js +60 -0
  1309. package/packages/adapter-setup-doctor/src/server/actions.js +32 -0
  1310. package/packages/adapter-setup-doctor/src/server/inputSchemas.js +49 -0
  1311. package/packages/adapter-setup-doctor/src/server/registerRoutes.js +33 -0
  1312. package/packages/adapter-setup-doctor/src/server/service.js +782 -0
  1313. package/packages/current-app/package.descriptor.mjs +80 -0
  1314. package/packages/current-app/package.json +22 -0
  1315. package/packages/current-app/src/server/CurrentAppProvider.js +68 -0
  1316. package/packages/current-app/src/server/actions.js +114 -0
  1317. package/packages/current-app/src/server/inputSchemas.js +49 -0
  1318. package/packages/current-app/src/server/registerRoutes.js +116 -0
  1319. package/packages/current-app/src/server/service.js +630 -0
  1320. package/packages/main/package.descriptor.mjs +71 -0
  1321. package/packages/main/package.json +15 -0
  1322. package/packages/main/src/client/index.js +13 -0
  1323. package/packages/main/src/client/providers/MainClientProvider.js +30 -0
  1324. package/packages/main/src/server/MainServiceProvider.js +20 -0
  1325. package/packages/main/src/server/index.js +1 -0
  1326. package/packages/main/src/server/loadAppConfig.js +9 -0
  1327. package/packages/main/src/shared/index.js +10 -0
  1328. package/packages/main/src/shared/schemas/index.js +22 -0
  1329. package/packages/project-setup-doctor/package.descriptor.mjs +69 -0
  1330. package/packages/project-setup-doctor/package.json +16 -0
  1331. package/packages/project-setup-doctor/src/server/ProjectSetupDoctorProvider.js +60 -0
  1332. package/packages/project-setup-doctor/src/server/actions.js +32 -0
  1333. package/packages/project-setup-doctor/src/server/inputSchemas.js +49 -0
  1334. package/packages/project-setup-doctor/src/server/registerRoutes.js +33 -0
  1335. package/packages/project-setup-doctor/src/server/service.js +1398 -0
  1336. package/packages/setup-doctor-core/README.md +9 -0
  1337. package/packages/setup-doctor-core/package.descriptor.mjs +49 -0
  1338. package/packages/setup-doctor-core/package.json +17 -0
  1339. package/packages/setup-doctor-core/src/index.js +1 -0
  1340. package/packages/setup-doctor-core/src/server/doctorPluginToolkit.js +564 -0
  1341. package/packages/setup-doctor-core/src/server/doctorPlugins.js +170 -0
  1342. package/packages/setup-doctor-core/src/server/doctorRoutes.js +201 -0
  1343. package/packages/setup-doctor-core/src/server/doctorStatusCache.js +265 -0
  1344. package/packages/setup-doctor-core/src/server/doctorStream.js +107 -0
  1345. package/packages/setup-doctor-core/src/server/doctorToolchain.js +140 -0
  1346. package/packages/setup-doctor-core/src/server/doctorToolchainCommands.js +55 -0
  1347. package/packages/setup-doctor-core/src/server/githubRemote.js +23 -0
  1348. package/packages/setup-doctor-core/src/server/githubRepoSetupScript.js +24 -0
  1349. package/packages/setup-doctor-core/src/server/index.js +10 -0
  1350. package/packages/setup-doctor-core/src/server/setupDoctorGit.js +820 -0
  1351. package/packages/setup-doctor-core/src/shared/index.js +1 -0
  1352. package/packages/studio-setup-doctor/package.descriptor.mjs +70 -0
  1353. package/packages/studio-setup-doctor/package.json +17 -0
  1354. package/packages/studio-setup-doctor/src/server/StudioSetupDoctorProvider.js +61 -0
  1355. package/packages/studio-setup-doctor/src/server/actions.js +31 -0
  1356. package/packages/studio-setup-doctor/src/server/containerEngine.js +18 -0
  1357. package/packages/studio-setup-doctor/src/server/inputSchemas.js +45 -0
  1358. package/packages/studio-setup-doctor/src/server/registerRoutes.js +33 -0
  1359. package/packages/studio-setup-doctor/src/server/service.js +704 -0
  1360. package/packages/studio-terminal-core/README.md +9 -0
  1361. package/packages/studio-terminal-core/package.descriptor.mjs +50 -0
  1362. package/packages/studio-terminal-core/package.json +17 -0
  1363. package/packages/studio-terminal-core/src/index.js +1 -0
  1364. package/packages/studio-terminal-core/src/server/containerRuntime.js +53 -0
  1365. package/packages/studio-terminal-core/src/server/dockerRuntime.js +30 -0
  1366. package/packages/studio-terminal-core/src/server/gitToolchainMounts.js +98 -0
  1367. package/packages/studio-terminal-core/src/server/index.js +14 -0
  1368. package/packages/studio-terminal-core/src/server/launchTargetTerminal.js +541 -0
  1369. package/packages/studio-terminal-core/src/server/managedDatabases.js +429 -0
  1370. package/packages/studio-terminal-core/src/server/runtimeContainers.js +912 -0
  1371. package/packages/studio-terminal-core/src/server/shellCommands.js +96 -0
  1372. package/packages/studio-terminal-core/src/server/shellScript.js +10 -0
  1373. package/packages/studio-terminal-core/src/server/studioRuntimeIdentity.js +51 -0
  1374. package/packages/studio-terminal-core/src/server/studioTerminalCleanup.js +453 -0
  1375. package/packages/studio-terminal-core/src/server/studioTerminalLabels.js +3 -0
  1376. package/packages/studio-terminal-core/src/server/studioToolHome.js +106 -0
  1377. package/packages/studio-terminal-core/src/server/targetScriptTerminal.js +223 -0
  1378. package/packages/studio-terminal-core/src/server/terminalSessions.js +558 -0
  1379. package/packages/studio-terminal-core/src/shared/index.js +1 -0
  1380. package/packages/vibe64-accounts/package.descriptor.mjs +74 -0
  1381. package/packages/vibe64-accounts/package.json +17 -0
  1382. package/packages/vibe64-accounts/src/server/Vibe64AccountsProvider.js +53 -0
  1383. package/packages/vibe64-accounts/src/server/actions.js +114 -0
  1384. package/packages/vibe64-accounts/src/server/inputSchemas.js +56 -0
  1385. package/packages/vibe64-accounts/src/server/registerRoutes.js +76 -0
  1386. package/packages/vibe64-accounts/src/server/service.js +583 -0
  1387. package/packages/vibe64-adapters/README.md +9 -0
  1388. package/packages/vibe64-adapters/package.descriptor.mjs +50 -0
  1389. package/packages/vibe64-adapters/package.json +18 -0
  1390. package/packages/vibe64-adapters/src/index.js +1 -0
  1391. package/packages/vibe64-adapters/src/server/adapter.js +351 -0
  1392. package/packages/vibe64-adapters/src/server/adapterBlueprints.js +21 -0
  1393. package/packages/vibe64-adapters/src/server/adapterHelpers/setupDatabaseConnections.js +82 -0
  1394. package/packages/vibe64-adapters/src/server/adapterHelpers/setupEnvFiles.js +157 -0
  1395. package/packages/vibe64-adapters/src/server/adapterHelpers/setupMariaDbChecks.js +324 -0
  1396. package/packages/vibe64-adapters/src/server/adapterHelpers/setupNodePackages.js +156 -0
  1397. package/packages/vibe64-adapters/src/server/adapterHelpers/setupNodeWebChecks.js +113 -0
  1398. package/packages/vibe64-adapters/src/server/adapterHelpers/setupPackageImports.js +135 -0
  1399. package/packages/vibe64-adapters/src/server/adapterHelpers/setupVerificationChecks.js +103 -0
  1400. package/packages/vibe64-adapters/src/server/adapterToolchains.js +114 -0
  1401. package/packages/vibe64-adapters/src/server/adapters/cpp/adapter.js +513 -0
  1402. package/packages/vibe64-adapters/src/server/adapters/cpp/blueprints/build-system/cmake.txt +3 -0
  1403. package/packages/vibe64-adapters/src/server/adapters/cpp/blueprints/build-system/make.txt +3 -0
  1404. package/packages/vibe64-adapters/src/server/adapters/cpp/blueprints/build-system/meson.txt +3 -0
  1405. package/packages/vibe64-adapters/src/server/adapters/cpp/blueprints/project-kind/executable.txt +3 -0
  1406. package/packages/vibe64-adapters/src/server/adapters/cpp/blueprints/project-kind/library.txt +3 -0
  1407. package/packages/vibe64-adapters/src/server/adapters/cpp/blueprints/standard/cpp17.txt +3 -0
  1408. package/packages/vibe64-adapters/src/server/adapters/cpp/blueprints/standard/cpp20.txt +3 -0
  1409. package/packages/vibe64-adapters/src/server/adapters/cpp/blueprints/standard/cpp23.txt +3 -0
  1410. package/packages/vibe64-adapters/src/server/adapters/cpp/blueprints/testing/enabled.txt +3 -0
  1411. package/packages/vibe64-adapters/src/server/adapters/cpp/blueprints/testing/none.txt +3 -0
  1412. package/packages/vibe64-adapters/src/server/adapters/cpp/config.js +201 -0
  1413. package/packages/vibe64-adapters/src/server/adapters/cpp/constants.js +15 -0
  1414. package/packages/vibe64-adapters/src/server/adapters/cpp/currentApp.js +264 -0
  1415. package/packages/vibe64-adapters/src/server/adapters/cpp/index.js +66 -0
  1416. package/packages/vibe64-adapters/src/server/adapters/cpp/manifest.js +40 -0
  1417. package/packages/vibe64-adapters/src/server/adapters/cpp/projectFiles.js +191 -0
  1418. package/packages/vibe64-adapters/src/server/adapters/cpp/prompts/execute_plan.txt +10 -0
  1419. package/packages/vibe64-adapters/src/server/adapters/cpp/prompts/generic.txt +9 -0
  1420. package/packages/vibe64-adapters/src/server/adapters/cpp/prompts/make_plan.txt +11 -0
  1421. package/packages/vibe64-adapters/src/server/adapters/cpp/prompts/prepare_for_merge.txt +9 -0
  1422. package/packages/vibe64-adapters/src/server/adapters/cpp/prompts/run_deep_ui_check.txt +9 -0
  1423. package/packages/vibe64-adapters/src/server/adapters/cpp/prompts/run_deslop.txt +9 -0
  1424. package/packages/vibe64-adapters/src/server/adapters/cpp/prompts/update_project_knowledge.txt +9 -0
  1425. package/packages/vibe64-adapters/src/server/adapters/cpp/seedProject.js +297 -0
  1426. package/packages/vibe64-adapters/src/server/adapters/cpp/setupDoctorPlugin.js +287 -0
  1427. package/packages/vibe64-adapters/src/server/adapters/cpp/toolchainIdentity.js +5 -0
  1428. package/packages/vibe64-adapters/src/server/adapters/jskit/adapter.js +440 -0
  1429. package/packages/vibe64-adapters/src/server/adapters/jskit/currentApp.js +220 -0
  1430. package/packages/vibe64-adapters/src/server/adapters/jskit/index.js +60 -0
  1431. package/packages/vibe64-adapters/src/server/adapters/jskit/launchTargets.js +352 -0
  1432. package/packages/vibe64-adapters/src/server/adapters/jskit/manifest.js +49 -0
  1433. package/packages/vibe64-adapters/src/server/adapters/jskit/prepareWorktree.sh +6 -0
  1434. package/packages/vibe64-adapters/src/server/adapters/jskit/prompts/agent_conversation.txt +26 -0
  1435. package/packages/vibe64-adapters/src/server/adapters/jskit/prompts/execute_plan.txt +28 -0
  1436. package/packages/vibe64-adapters/src/server/adapters/jskit/prompts/execute_seed_plan.txt +10 -0
  1437. package/packages/vibe64-adapters/src/server/adapters/jskit/prompts/generic.txt +20 -0
  1438. package/packages/vibe64-adapters/src/server/adapters/jskit/prompts/make_plan.txt +27 -0
  1439. package/packages/vibe64-adapters/src/server/adapters/jskit/prompts/make_seed_plan.txt +17 -0
  1440. package/packages/vibe64-adapters/src/server/adapters/jskit/prompts/prepare_for_merge.txt +8 -0
  1441. package/packages/vibe64-adapters/src/server/adapters/jskit/prompts/run_deep_ui_check.txt +6 -0
  1442. package/packages/vibe64-adapters/src/server/adapters/jskit/prompts/run_deslop.txt +24 -0
  1443. package/packages/vibe64-adapters/src/server/adapters/jskit/prompts/update_project_knowledge.txt +6 -0
  1444. package/packages/vibe64-adapters/src/server/adapters/jskit/setupDatabasePolicy.js +186 -0
  1445. package/packages/vibe64-adapters/src/server/adapters/jskit/setupDependencyChecks.js +9 -0
  1446. package/packages/vibe64-adapters/src/server/adapters/jskit/setupDoctorPlugin.js +234 -0
  1447. package/packages/vibe64-adapters/src/server/adapters/jskit/setupMariaDbRuntime.js +228 -0
  1448. package/packages/vibe64-adapters/src/server/adapters/jskit/setupProjectChecks.js +262 -0
  1449. package/packages/vibe64-adapters/src/server/adapters/jskit/setupScaffold.js +99 -0
  1450. package/packages/vibe64-adapters/src/server/adapters/jskit/toolchainIdentity.js +9 -0
  1451. package/packages/vibe64-adapters/src/server/adapters/laravel/adapter.js +443 -0
  1452. package/packages/vibe64-adapters/src/server/adapters/laravel/blueprints/authentication/laravel.txt +4 -0
  1453. package/packages/vibe64-adapters/src/server/adapters/laravel/blueprints/authentication/none.txt +4 -0
  1454. package/packages/vibe64-adapters/src/server/adapters/laravel/blueprints/authentication/workos.txt +5 -0
  1455. package/packages/vibe64-adapters/src/server/adapters/laravel/blueprints/boost/boost.txt +5 -0
  1456. package/packages/vibe64-adapters/src/server/adapters/laravel/blueprints/boost/none.txt +4 -0
  1457. package/packages/vibe64-adapters/src/server/adapters/laravel/blueprints/database-runtime/mariadb.txt +6 -0
  1458. package/packages/vibe64-adapters/src/server/adapters/laravel/blueprints/database-runtime/mysql.txt +6 -0
  1459. package/packages/vibe64-adapters/src/server/adapters/laravel/blueprints/database-runtime/postgres.txt +6 -0
  1460. package/packages/vibe64-adapters/src/server/adapters/laravel/blueprints/database-runtime/sqlite.txt +5 -0
  1461. package/packages/vibe64-adapters/src/server/adapters/laravel/blueprints/livewire-components/class.txt +4 -0
  1462. package/packages/vibe64-adapters/src/server/adapters/laravel/blueprints/livewire-components/single_file.txt +4 -0
  1463. package/packages/vibe64-adapters/src/server/adapters/laravel/blueprints/starter-kit/custom.txt +5 -0
  1464. package/packages/vibe64-adapters/src/server/adapters/laravel/blueprints/starter-kit/livewire.txt +5 -0
  1465. package/packages/vibe64-adapters/src/server/adapters/laravel/blueprints/starter-kit/none.txt +5 -0
  1466. package/packages/vibe64-adapters/src/server/adapters/laravel/blueprints/starter-kit/react.txt +5 -0
  1467. package/packages/vibe64-adapters/src/server/adapters/laravel/blueprints/starter-kit/svelte.txt +5 -0
  1468. package/packages/vibe64-adapters/src/server/adapters/laravel/blueprints/starter-kit/vue.txt +5 -0
  1469. package/packages/vibe64-adapters/src/server/adapters/laravel/blueprints/teams/none.txt +4 -0
  1470. package/packages/vibe64-adapters/src/server/adapters/laravel/blueprints/teams/teams.txt +4 -0
  1471. package/packages/vibe64-adapters/src/server/adapters/laravel/blueprints/testing/pest.txt +5 -0
  1472. package/packages/vibe64-adapters/src/server/adapters/laravel/blueprints/testing/phpunit.txt +5 -0
  1473. package/packages/vibe64-adapters/src/server/adapters/laravel/composerPackage.js +97 -0
  1474. package/packages/vibe64-adapters/src/server/adapters/laravel/config.js +54 -0
  1475. package/packages/vibe64-adapters/src/server/adapters/laravel/constants.js +7 -0
  1476. package/packages/vibe64-adapters/src/server/adapters/laravel/currentApp.js +187 -0
  1477. package/packages/vibe64-adapters/src/server/adapters/laravel/databaseRuntime.js +237 -0
  1478. package/packages/vibe64-adapters/src/server/adapters/laravel/index.js +60 -0
  1479. package/packages/vibe64-adapters/src/server/adapters/laravel/launchTargets.js +115 -0
  1480. package/packages/vibe64-adapters/src/server/adapters/laravel/manifest.js +41 -0
  1481. package/packages/vibe64-adapters/src/server/adapters/laravel/prepareWorktree.sh +8 -0
  1482. package/packages/vibe64-adapters/src/server/adapters/laravel/prompts/execute_plan.txt +9 -0
  1483. package/packages/vibe64-adapters/src/server/adapters/laravel/prompts/execute_seed_plan.txt +10 -0
  1484. package/packages/vibe64-adapters/src/server/adapters/laravel/prompts/generic.txt +9 -0
  1485. package/packages/vibe64-adapters/src/server/adapters/laravel/prompts/make_plan.txt +11 -0
  1486. package/packages/vibe64-adapters/src/server/adapters/laravel/prompts/make_seed_plan.txt +17 -0
  1487. package/packages/vibe64-adapters/src/server/adapters/laravel/prompts/prepare_for_merge.txt +9 -0
  1488. package/packages/vibe64-adapters/src/server/adapters/laravel/prompts/run_deep_ui_check.txt +9 -0
  1489. package/packages/vibe64-adapters/src/server/adapters/laravel/prompts/run_deslop.txt +9 -0
  1490. package/packages/vibe64-adapters/src/server/adapters/laravel/prompts/update_project_knowledge.txt +9 -0
  1491. package/packages/vibe64-adapters/src/server/adapters/laravel/setupDoctorPlugin.js +648 -0
  1492. package/packages/vibe64-adapters/src/server/adapters/laravel/toolchainIdentity.js +5 -0
  1493. package/packages/vibe64-adapters/src/server/adapters/nextjs/adapter.js +353 -0
  1494. package/packages/vibe64-adapters/src/server/adapters/nextjs/blueprints/data-layer/drizzle.txt +16 -0
  1495. package/packages/vibe64-adapters/src/server/adapters/nextjs/blueprints/data-layer/none.txt +7 -0
  1496. package/packages/vibe64-adapters/src/server/adapters/nextjs/blueprints/data-layer/prisma.txt +16 -0
  1497. package/packages/vibe64-adapters/src/server/adapters/nextjs/blueprints/database-runtime/mysql.txt +8 -0
  1498. package/packages/vibe64-adapters/src/server/adapters/nextjs/blueprints/database-runtime/none.txt +6 -0
  1499. package/packages/vibe64-adapters/src/server/adapters/nextjs/blueprints/database-runtime/postgres.txt +8 -0
  1500. package/packages/vibe64-adapters/src/server/adapters/nextjs/blueprints/seed-bundler/turbopack.txt +5 -0
  1501. package/packages/vibe64-adapters/src/server/adapters/nextjs/blueprints/seed-bundler/webpack.txt +5 -0
  1502. package/packages/vibe64-adapters/src/server/adapters/nextjs/blueprints/seed-language/javascript.txt +5 -0
  1503. package/packages/vibe64-adapters/src/server/adapters/nextjs/blueprints/seed-language/typescript.txt +5 -0
  1504. package/packages/vibe64-adapters/src/server/adapters/nextjs/blueprints/seed-linter/biome.txt +5 -0
  1505. package/packages/vibe64-adapters/src/server/adapters/nextjs/blueprints/seed-linter/eslint.txt +5 -0
  1506. package/packages/vibe64-adapters/src/server/adapters/nextjs/blueprints/seed-linter/none.txt +5 -0
  1507. package/packages/vibe64-adapters/src/server/adapters/nextjs/blueprints/seed-source-layout/root.txt +5 -0
  1508. package/packages/vibe64-adapters/src/server/adapters/nextjs/blueprints/seed-source-layout/src.txt +5 -0
  1509. package/packages/vibe64-adapters/src/server/adapters/nextjs/blueprints/seed-styling/none.txt +5 -0
  1510. package/packages/vibe64-adapters/src/server/adapters/nextjs/blueprints/seed-styling/tailwind.txt +5 -0
  1511. package/packages/vibe64-adapters/src/server/adapters/nextjs/config.js +251 -0
  1512. package/packages/vibe64-adapters/src/server/adapters/nextjs/constants.js +23 -0
  1513. package/packages/vibe64-adapters/src/server/adapters/nextjs/currentApp.js +128 -0
  1514. package/packages/vibe64-adapters/src/server/adapters/nextjs/databaseRuntime.js +199 -0
  1515. package/packages/vibe64-adapters/src/server/adapters/nextjs/index.js +68 -0
  1516. package/packages/vibe64-adapters/src/server/adapters/nextjs/launchTargets.js +124 -0
  1517. package/packages/vibe64-adapters/src/server/adapters/nextjs/manifest.js +47 -0
  1518. package/packages/vibe64-adapters/src/server/adapters/nextjs/prepareWorktree.sh +8 -0
  1519. package/packages/vibe64-adapters/src/server/adapters/nextjs/prompts/execute_plan.txt +9 -0
  1520. package/packages/vibe64-adapters/src/server/adapters/nextjs/prompts/generic.txt +9 -0
  1521. package/packages/vibe64-adapters/src/server/adapters/nextjs/prompts/make_plan.txt +11 -0
  1522. package/packages/vibe64-adapters/src/server/adapters/nextjs/prompts/prepare_for_merge.txt +9 -0
  1523. package/packages/vibe64-adapters/src/server/adapters/nextjs/prompts/run_deep_ui_check.txt +9 -0
  1524. package/packages/vibe64-adapters/src/server/adapters/nextjs/prompts/run_deslop.txt +9 -0
  1525. package/packages/vibe64-adapters/src/server/adapters/nextjs/prompts/update_project_knowledge.txt +9 -0
  1526. package/packages/vibe64-adapters/src/server/adapters/nextjs/setupDoctorPlugin.js +405 -0
  1527. package/packages/vibe64-adapters/src/server/adapters/node-web/adapter.js +350 -0
  1528. package/packages/vibe64-adapters/src/server/adapters/node-web/config.js +89 -0
  1529. package/packages/vibe64-adapters/src/server/adapters/node-web/constants.js +7 -0
  1530. package/packages/vibe64-adapters/src/server/adapters/node-web/currentApp.js +132 -0
  1531. package/packages/vibe64-adapters/src/server/adapters/node-web/index.js +60 -0
  1532. package/packages/vibe64-adapters/src/server/adapters/node-web/launchTargets.js +149 -0
  1533. package/packages/vibe64-adapters/src/server/adapters/node-web/manifest.js +40 -0
  1534. package/packages/vibe64-adapters/src/server/adapters/node-web/prepareWorktree.sh +8 -0
  1535. package/packages/vibe64-adapters/src/server/adapters/node-web/projectDetection.js +619 -0
  1536. package/packages/vibe64-adapters/src/server/adapters/node-web/prompts/execute_plan.txt +14 -0
  1537. package/packages/vibe64-adapters/src/server/adapters/node-web/prompts/generic.txt +17 -0
  1538. package/packages/vibe64-adapters/src/server/adapters/node-web/prompts/make_plan.txt +17 -0
  1539. package/packages/vibe64-adapters/src/server/adapters/node-web/prompts/prepare_for_merge.txt +6 -0
  1540. package/packages/vibe64-adapters/src/server/adapters/node-web/prompts/run_deep_ui_check.txt +6 -0
  1541. package/packages/vibe64-adapters/src/server/adapters/node-web/prompts/run_deslop.txt +6 -0
  1542. package/packages/vibe64-adapters/src/server/adapters/node-web/prompts/update_project_knowledge.txt +6 -0
  1543. package/packages/vibe64-adapters/src/server/adapters/node-web/setupDoctorPlugin.js +166 -0
  1544. package/packages/vibe64-adapters/src/server/adapters/registry.js +206 -0
  1545. package/packages/vibe64-adapters/src/server/adapters/vinext/adapter.js +362 -0
  1546. package/packages/vibe64-adapters/src/server/adapters/vinext/constants.js +7 -0
  1547. package/packages/vibe64-adapters/src/server/adapters/vinext/currentApp.js +132 -0
  1548. package/packages/vibe64-adapters/src/server/adapters/vinext/index.js +64 -0
  1549. package/packages/vibe64-adapters/src/server/adapters/vinext/launchTargets.js +175 -0
  1550. package/packages/vibe64-adapters/src/server/adapters/vinext/manifest.js +40 -0
  1551. package/packages/vibe64-adapters/src/server/adapters/vinext/packageManager.js +51 -0
  1552. package/packages/vibe64-adapters/src/server/adapters/vinext/prepareWorktree.sh +8 -0
  1553. package/packages/vibe64-adapters/src/server/adapters/vinext/prompts/execute_plan.txt +6 -0
  1554. package/packages/vibe64-adapters/src/server/adapters/vinext/prompts/generic.txt +6 -0
  1555. package/packages/vibe64-adapters/src/server/adapters/vinext/prompts/make_plan.txt +8 -0
  1556. package/packages/vibe64-adapters/src/server/adapters/vinext/prompts/prepare_for_merge.txt +8 -0
  1557. package/packages/vibe64-adapters/src/server/adapters/vinext/prompts/run_deep_ui_check.txt +6 -0
  1558. package/packages/vibe64-adapters/src/server/adapters/vinext/prompts/run_deslop.txt +6 -0
  1559. package/packages/vibe64-adapters/src/server/adapters/vinext/prompts/update_project_knowledge.txt +6 -0
  1560. package/packages/vibe64-adapters/src/server/adapters/vinext/setupDoctorPlugin.js +180 -0
  1561. package/packages/vibe64-adapters/src/server/applicationTypes.js +139 -0
  1562. package/packages/vibe64-adapters/src/server/codeIndexCommands.js +117 -0
  1563. package/packages/vibe64-adapters/src/server/codeIndexScripts/javascript.mjs +114 -0
  1564. package/packages/vibe64-adapters/src/server/codeIndexScripts/php.php +101 -0
  1565. package/packages/vibe64-adapters/src/server/configStore.js +532 -0
  1566. package/packages/vibe64-adapters/src/server/configValues.js +39 -0
  1567. package/packages/vibe64-adapters/src/server/currentAppInspection.js +199 -0
  1568. package/packages/vibe64-adapters/src/server/envFiles.js +30 -0
  1569. package/packages/vibe64-adapters/src/server/fakeAdapter.js +132 -0
  1570. package/packages/vibe64-adapters/src/server/index.js +24 -0
  1571. package/packages/vibe64-adapters/src/server/nodeCurrentApp.js +203 -0
  1572. package/packages/vibe64-adapters/src/server/nodePackage.js +184 -0
  1573. package/packages/vibe64-adapters/src/server/nodePackageDoctor.js +65 -0
  1574. package/packages/vibe64-adapters/src/server/nodePackageManagers.js +60 -0
  1575. package/packages/vibe64-adapters/src/server/nodeWebProject.js +236 -0
  1576. package/packages/vibe64-adapters/src/server/projectType.js +63 -0
  1577. package/packages/vibe64-adapters/src/server/promptMarkers.js +86 -0
  1578. package/packages/vibe64-adapters/src/server/promptQuestionPolicy.js +37 -0
  1579. package/packages/vibe64-adapters/src/server/promptRenderer.js +480 -0
  1580. package/packages/vibe64-adapters/src/server/systemPrompts/agent_conversation.txt +45 -0
  1581. package/packages/vibe64-adapters/src/server/systemPrompts/execute_plan.txt +28 -0
  1582. package/packages/vibe64-adapters/src/server/systemPrompts/generic.txt +33 -0
  1583. package/packages/vibe64-adapters/src/server/systemPrompts/make_plan.txt +22 -0
  1584. package/packages/vibe64-adapters/src/server/systemPrompts/prepare_for_merge.txt +32 -0
  1585. package/packages/vibe64-adapters/src/server/systemPrompts/resolve_pull_request.txt +28 -0
  1586. package/packages/vibe64-adapters/src/server/systemPrompts/run_deep_ui_check.txt +22 -0
  1587. package/packages/vibe64-adapters/src/server/systemPrompts/run_deslop.txt +25 -0
  1588. package/packages/vibe64-adapters/src/server/systemPrompts/update_project_knowledge.txt +22 -0
  1589. package/packages/vibe64-adapters/src/server/systemPrompts/write_report.txt +33 -0
  1590. package/packages/vibe64-adapters/src/server/workflowAdapter.js +463 -0
  1591. package/packages/vibe64-adapters/src/server/workflowCommandFacts.js +90 -0
  1592. package/packages/vibe64-adapters/src/server/workflowCommandTerminal/commitPush.js +89 -0
  1593. package/packages/vibe64-adapters/src/server/workflowCommandTerminal/factMetadata.js +113 -0
  1594. package/packages/vibe64-adapters/src/server/workflowCommandTerminal/issuePr.js +171 -0
  1595. package/packages/vibe64-adapters/src/server/workflowCommandTerminal/mergeSync.js +112 -0
  1596. package/packages/vibe64-adapters/src/server/workflowCommandTerminal/shellHelpers.js +203 -0
  1597. package/packages/vibe64-adapters/src/server/workflowCommandTerminal/worktreeDependencies.js +313 -0
  1598. package/packages/vibe64-adapters/src/server/workflowCommandTerminal.js +63 -0
  1599. package/packages/vibe64-adapters/src/server/workflowSessionActions.js +211 -0
  1600. package/packages/vibe64-adapters/src/shared/index.js +1 -0
  1601. package/packages/vibe64-artifacts/package.descriptor.mjs +73 -0
  1602. package/packages/vibe64-artifacts/package.json +15 -0
  1603. package/packages/vibe64-artifacts/src/server/Vibe64ArtifactsProvider.js +61 -0
  1604. package/packages/vibe64-artifacts/src/server/actions.js +83 -0
  1605. package/packages/vibe64-artifacts/src/server/inputSchemas.js +113 -0
  1606. package/packages/vibe64-artifacts/src/server/registerRoutes.js +148 -0
  1607. package/packages/vibe64-artifacts/src/server/service.js +182 -0
  1608. package/packages/vibe64-core/README.md +10 -0
  1609. package/packages/vibe64-core/package.descriptor.mjs +60 -0
  1610. package/packages/vibe64-core/package.json +24 -0
  1611. package/packages/vibe64-core/src/index.js +1 -0
  1612. package/packages/vibe64-core/src/server/core.js +54 -0
  1613. package/packages/vibe64-core/src/server/deepFreeze.js +17 -0
  1614. package/packages/vibe64-core/src/server/doctorCheckItems.js +129 -0
  1615. package/packages/vibe64-core/src/server/featureRoutes.js +145 -0
  1616. package/packages/vibe64-core/src/server/index.js +10 -0
  1617. package/packages/vibe64-core/src/server/localStudioRequest.js +73 -0
  1618. package/packages/vibe64-core/src/server/localhostCheckBypass.js +29 -0
  1619. package/packages/vibe64-core/src/server/serverResponses.js +76 -0
  1620. package/packages/vibe64-core/src/server/sessionRealtimeEvents.js +137 -0
  1621. package/packages/vibe64-core/src/server/studioRoots.js +51 -0
  1622. package/packages/vibe64-core/src/server/terminalWebSocketRoutes.js +158 -0
  1623. package/packages/vibe64-core/src/shared/index.js +33 -0
  1624. package/packages/vibe64-project/package.descriptor.mjs +73 -0
  1625. package/packages/vibe64-project/package.json +16 -0
  1626. package/packages/vibe64-project/src/server/Vibe64ProjectProvider.js +53 -0
  1627. package/packages/vibe64-project/src/server/actions.js +117 -0
  1628. package/packages/vibe64-project/src/server/inputSchemas.js +41 -0
  1629. package/packages/vibe64-project/src/server/registerRoutes.js +58 -0
  1630. package/packages/vibe64-project/src/server/service.js +290 -0
  1631. package/packages/vibe64-runtime/README.md +9 -0
  1632. package/packages/vibe64-runtime/package.descriptor.mjs +52 -0
  1633. package/packages/vibe64-runtime/package.json +19 -0
  1634. package/packages/vibe64-runtime/src/index.js +1 -0
  1635. package/packages/vibe64-runtime/src/server/currentStepInputHelperServer.js +308 -0
  1636. package/packages/vibe64-runtime/src/server/index.js +18 -0
  1637. package/packages/vibe64-runtime/src/server/registerCoreWorkflowModules.js +52 -0
  1638. package/packages/vibe64-runtime/src/server/runtime.js +1231 -0
  1639. package/packages/vibe64-runtime/src/server/sessionDebugLog.js +7 -0
  1640. package/packages/vibe64-runtime/src/server/sessionDebugLogCore.js +57 -0
  1641. package/packages/vibe64-runtime/src/server/sessionStore.js +1468 -0
  1642. package/packages/vibe64-runtime/src/server/setupReadiness.js +112 -0
  1643. package/packages/vibe64-runtime/src/server/terminalFailureFixRequest.js +143 -0
  1644. package/packages/vibe64-runtime/src/server/workflow.js +96 -0
  1645. package/packages/vibe64-runtime/src/server/workflowArtifacts.js +17 -0
  1646. package/packages/vibe64-runtime/src/server/workflowConditions.js +101 -0
  1647. package/packages/vibe64-runtime/src/server/workflowDefinitionBuilders.js +91 -0
  1648. package/packages/vibe64-runtime/src/server/workflowMachine.js +919 -0
  1649. package/packages/vibe64-runtime/src/server/workflowModules/coreCoding.js +1248 -0
  1650. package/packages/vibe64-runtime/src/server/workflowModules/coreLifecycle.js +1340 -0
  1651. package/packages/vibe64-runtime/src/server/workflowModules/coreMaintenance.js +209 -0
  1652. package/packages/vibe64-runtime/src/server/workflowPresentation.js +1281 -0
  1653. package/packages/vibe64-runtime/src/server/workflowRegistry.js +628 -0
  1654. package/packages/vibe64-runtime/src/server/workflowStepFactories.js +22 -0
  1655. package/packages/vibe64-runtime/src/server/workflowStepMachineHelpers.js +939 -0
  1656. package/packages/vibe64-runtime/src/server/workflowStepMachines.js +156 -0
  1657. package/packages/vibe64-runtime/src/shared/index.js +1 -0
  1658. package/packages/vibe64-sessions/package.descriptor.mjs +84 -0
  1659. package/packages/vibe64-sessions/package.json +21 -0
  1660. package/packages/vibe64-sessions/src/server/Vibe64SessionsProvider.js +78 -0
  1661. package/packages/vibe64-sessions/src/server/actions.js +272 -0
  1662. package/packages/vibe64-sessions/src/server/inputSchemas.js +204 -0
  1663. package/packages/vibe64-sessions/src/server/registerRoutes.js +141 -0
  1664. package/packages/vibe64-sessions/src/server/service.js +853 -0
  1665. package/packages/vibe64-sessions/src/server/sessionDiff.js +90 -0
  1666. package/packages/vibe64-terminals/package.descriptor.mjs +77 -0
  1667. package/packages/vibe64-terminals/package.json +19 -0
  1668. package/packages/vibe64-terminals/src/server/Vibe64TerminalsProvider.js +100 -0
  1669. package/packages/vibe64-terminals/src/server/actions.js +124 -0
  1670. package/packages/vibe64-terminals/src/server/codexAttachments.js +147 -0
  1671. package/packages/vibe64-terminals/src/server/codexTerminal.js +1120 -0
  1672. package/packages/vibe64-terminals/src/server/commandTerminal.js +975 -0
  1673. package/packages/vibe64-terminals/src/server/commandTerminalResults.js +87 -0
  1674. package/packages/vibe64-terminals/src/server/inputSchemas.js +135 -0
  1675. package/packages/vibe64-terminals/src/server/launchTargetTerminal.js +470 -0
  1676. package/packages/vibe64-terminals/src/server/registerRoutes.js +241 -0
  1677. package/packages/vibe64-terminals/src/server/service.js +190 -0
  1678. package/packages/vibe64-terminals/src/server/shellTerminal.js +390 -0
  1679. package/packages/vibe64-terminals/src/server/targetToolchainTerminal.js +97 -0
  1680. package/packages/vibe64-terminals/src/server/terminalEnvironment.js +102 -0
  1681. package/packages/vibe64-terminals/src/server/terminalRuntimeContainers.js +80 -0
  1682. package/packages/vibe64-terminals/src/server/terminalShared.js +112 -0
  1683. package/packages/vibe64-terminals/src/server/terminalToolchainImage.js +77 -0
  1684. package/server/lib/browserLifecycle.js +134 -0
  1685. package/server/lib/runtimeEnv.js +45 -0
  1686. package/server/lib/surfaceRuntime.js +10 -0
  1687. package/server.js +337 -0
  1688. package/tooling/adapters/cpp/Dockerfile +27 -0
  1689. package/tooling/adapters/jskit/Dockerfile +9 -0
  1690. package/tooling/adapters/jskit/docs/future-strengthening.md +160 -0
  1691. package/tooling/adapters/laravel/Dockerfile +45 -0
  1692. package/tooling/package-install-smoke.mjs +158 -0
  1693. package/tooling/studio-setup/Dockerfile +55 -0
  1694. package/tooling/verify-package-boundaries.mjs +480 -0
@@ -0,0 +1,2582 @@
1
+ # Tutorial
2
+
3
+ Welcome! This tutorial will walk you through everything you need to know to use the schema validation library effectively. We'll start with the basics and progressively move to more advanced topics like creating your own custom rules.
4
+
5
+ Published documentation:
6
+
7
+ <https://mobily-enterprises.github.io/json-rest-schema/>
8
+
9
+ ## Installation
10
+
11
+ Install the package in your app with:
12
+
13
+ ```bash
14
+ npm install json-rest-schema
15
+ ```
16
+
17
+ If you are working in this repo and want to run the documentation site locally:
18
+
19
+ ```bash
20
+ npm install
21
+ npm run docs:dev
22
+ ```
23
+
24
+ Build the full static site, including the standalone React and Vue demo apps, with:
25
+
26
+ ```bash
27
+ npm run docs:build
28
+ ```
29
+
30
+ Preview that built site locally with:
31
+
32
+ ```bash
33
+ npm run docs:preview
34
+ ```
35
+
36
+ The published docs site is the best place to read the same manual as shorter chapters for:
37
+
38
+ * create / replace / patch semantics
39
+ * nested object and array contracts
40
+ * recursive runtime validation and transport export
41
+ * field introspection and path-scoped validation
42
+ * React Hook Form, Vue + Vuetify, and VeeValidate adapters
43
+ * demo app walkthroughs
44
+
45
+ ## Getting Started: Your First Schema
46
+
47
+ Let's start with a common use case: validating a user registration form.
48
+
49
+ First, import the library's factory function and define the structure of the data you expect.
50
+
51
+ ```javascript
52
+ import { createSchema } from 'json-rest-schema';
53
+
54
+ // Define the structure and rules for our user data
55
+ const userSchema = createSchema({
56
+ username: { type: 'string', required: true, minLength: 3 },
57
+ email: { type: 'string', required: true },
58
+ age: { type: 'number', min: 18, defaultTo: 18 }
59
+ });
60
+ ```
61
+
62
+ Now, let's try to validate an object against this schema.
63
+
64
+ ```javascript
65
+ // An example input object from a form
66
+ const userInput = {
67
+ username: ' alex ', // Includes extra whitespace
68
+ email: 'alex@example.com',
69
+ age: '25' // Note: age is a string here
70
+ };
71
+
72
+ const { validatedObject, errors } = userSchema.create(userInput);
73
+
74
+ // Check if there were any errors by seeing if the errors object has keys
75
+ if (Object.keys(errors).length > 0) {
76
+ console.log("Validation failed!");
77
+ console.log(errors);
78
+ } else {
79
+ console.log("Validation successful!");
80
+ console.log(validatedObject);
81
+ }
82
+ ```
83
+
84
+ **What happens here?**
85
+
86
+ 1. The `age` string `'25'` is **cast** to the number `25` by the `number` type handler.
87
+ 2. The `username` string `' alex '` is **transformed** by the `string` type handler to `'alex'` (it gets trimmed).
88
+ 3. Since there are no validation errors, the `errors` object will be empty.
89
+ 4. The `validatedObject` will contain the clean, cast, and transformed data.
90
+
91
+ ---
92
+
93
+ ## Validation Results and Error Helpers
94
+
95
+ The schema operation methods return an object with two properties: `validatedObject` and `errors`.
96
+
97
+ ### The `validatedObject`
98
+
99
+ This object contains the data after all casting and transformations have been applied. It's the "clean" version of your input that you should use in the rest of your application (e.g., to save to a database).
100
+
101
+ ### The `errors` Object
102
+
103
+ This is your primary tool for handling validation failures.
104
+
105
+ * **It's a Map, Not an Array:** The `errors` object is a map where keys are the field names that failed. This allows you to instantly check if a specific field has an error: `if (errors.age) { ... }`.
106
+ * **Rich Error Structure:** Each error in the map is a detailed object: `{ code, message, params }`.
107
+ * **Nested paths stay flat:** Nested fields are reported with dotted paths such as `workspace.slug` or `roles.2.id`. That keeps the external error contract simple even when schemas are recursive.
108
+
109
+ Let's look at an example with invalid data:
110
+
111
+ ```javascript
112
+ const invalidInput = {
113
+ username: 'Al', // Fails 'minLength: 3'
114
+ // email is missing, fails 'required: true'
115
+ age: 16 // Fails 'min: 18'
116
+ };
117
+
118
+ const { validatedObject, errors } = userSchema.create(invalidInput);
119
+
120
+ console.log(JSON.stringify(errors, null, 2));
121
+ ```
122
+
123
+ The output would look like this:
124
+
125
+ ```json
126
+ {
127
+ "username": {
128
+ "field": "username",
129
+ "code": "MIN_LENGTH",
130
+ "message": "Length must be at least 3 characters.",
131
+ "params": { "min": 3, "actual": 2 }
132
+ },
133
+ "email": {
134
+ "field": "email",
135
+ "code": "REQUIRED",
136
+ "message": "Field is required",
137
+ "params": {}
138
+ },
139
+ "age": {
140
+ "field": "age",
141
+ "code": "MIN_VALUE",
142
+ "message": "Value must be at least 18.",
143
+ "params": { "min": 18, "actual": 16 }
144
+ }
145
+ }
146
+ ```
147
+
148
+ * **`code`**: A stable, machine-readable string. Use this in your code for logic (`if (err.code === 'MIN_LENGTH')`).
149
+ * **`message`**: A human-readable message, great for developers or for displaying directly to users in simple cases.
150
+ * **`params`**: Extra context about the failure. This is incredibly useful for creating dynamic error messages (e.g., "You entered 2 characters, but a minimum of 3 is required.").
151
+
152
+ ### Error helper utilities
153
+
154
+ If you want a few adapter-friendly utilities around that flat error map, import them directly:
155
+
156
+ ```javascript
157
+ import { createSchema, getError, hasError, nestErrors, flattenErrors } from 'json-rest-schema'
158
+ ```
159
+
160
+ `getError(errors, path)` reads one dotted-path error:
161
+
162
+ ```javascript
163
+ const slugError = getError(errors, 'workspace.slug')
164
+ ```
165
+
166
+ `hasError(errors, path)` is the small boolean version:
167
+
168
+ ```javascript
169
+ const showSlugError = hasError(errors, 'workspace.slug')
170
+ ```
171
+
172
+ `nestErrors(errors)` converts the flat map into a nested object/array shape for form libraries that prefer nested field errors:
173
+
174
+ ```javascript
175
+ nestErrors({
176
+ 'workspace.slug': {
177
+ field: 'workspace.slug',
178
+ code: 'MIN_LENGTH',
179
+ message: 'Length must be at least 3 characters.',
180
+ params: { min: 3, actual: 1 }
181
+ },
182
+ 'roles.2.label': {
183
+ field: 'roles.2.label',
184
+ code: 'REQUIRED',
185
+ message: 'Field is required',
186
+ params: {}
187
+ }
188
+ })
189
+ ```
190
+
191
+ Result:
192
+
193
+ ```javascript
194
+ {
195
+ workspace: {
196
+ slug: {
197
+ field: 'workspace.slug',
198
+ code: 'MIN_LENGTH',
199
+ message: 'Length must be at least 3 characters.',
200
+ params: { min: 3, actual: 1 }
201
+ }
202
+ },
203
+ roles: [
204
+ ,
205
+ ,
206
+ {
207
+ label: {
208
+ field: 'roles.2.label',
209
+ code: 'REQUIRED',
210
+ message: 'Field is required',
211
+ params: {}
212
+ }
213
+ }
214
+ ]
215
+ }
216
+ ```
217
+
218
+ That keeps the runtime contract flat, while still making it easy to adapt into nested UI-state libraries.
219
+
220
+ `flattenErrors(nestedErrors)` does the reverse when a UI layer gives you nested field errors and you want to normalize them back into the library's flat contract:
221
+
222
+ ```javascript
223
+ flattenErrors({
224
+ workspace: {
225
+ slug: {
226
+ field: 'workspace.slug',
227
+ code: 'MIN_LENGTH',
228
+ message: 'Length must be at least 3 characters.',
229
+ params: { min: 3, actual: 1 }
230
+ }
231
+ },
232
+ roles: [
233
+ ,
234
+ ,
235
+ {
236
+ label: {
237
+ field: 'roles.2.label',
238
+ code: 'REQUIRED',
239
+ message: 'Field is required',
240
+ params: {}
241
+ }
242
+ }
243
+ ]
244
+ })
245
+ ```
246
+
247
+ Result:
248
+
249
+ ```javascript
250
+ {
251
+ 'workspace.slug': {
252
+ field: 'workspace.slug',
253
+ code: 'MIN_LENGTH',
254
+ message: 'Length must be at least 3 characters.',
255
+ params: { min: 3, actual: 1 }
256
+ },
257
+ 'roles.2.label': {
258
+ field: 'roles.2.label',
259
+ code: 'REQUIRED',
260
+ message: 'Field is required',
261
+ params: {}
262
+ }
263
+ }
264
+ ```
265
+
266
+ ## Operation Contracts
267
+
268
+ For explicit write semantics, the schema instance exposes three synchronous built-in operation methods:
269
+
270
+ ```javascript
271
+ userSchema.create(input);
272
+ userSchema.replace(input);
273
+ userSchema.patch(input);
274
+ ```
275
+
276
+ They all return the same `{ validatedObject, errors }` shape, but they differ in how omitted fields are treated:
277
+
278
+ * **`create()`**: validates a create payload, enforces `required`, applies `defaultTo`, and leaves omitted optional fields omitted.
279
+ * **`replace()`**: validates a full replacement payload, enforces `required`, applies `defaultTo`, and preserves omitted fields.
280
+ * **`patch()`**: validates only explicitly provided fields and returns only the normalized fields that were touched.
281
+
282
+ These are built-in named operation contracts, not special cases in the engine. If you need a different contract, define a custom operation and the schema will generate a matching method alias automatically.
283
+
284
+ ### Worked operation example
285
+
286
+ This is easier to understand with one schema and three calls:
287
+
288
+ ```javascript
289
+ const profileSchema = createSchema({
290
+ username: { type: 'string', required: true },
291
+ bio: { type: 'string' },
292
+ role: { type: 'string', defaultTo: 'member' }
293
+ })
294
+ ```
295
+
296
+ Calling `create()`:
297
+
298
+ ```javascript
299
+ profileSchema.create({
300
+ username: ' alex '
301
+ })
302
+ ```
303
+
304
+ Result:
305
+
306
+ ```javascript
307
+ {
308
+ validatedObject: {
309
+ username: 'alex',
310
+ role: 'member'
311
+ },
312
+ errors: {}
313
+ }
314
+ ```
315
+
316
+ Calling `replace()` with the same payload:
317
+
318
+ ```javascript
319
+ profileSchema.replace({
320
+ username: ' alex '
321
+ })
322
+ ```
323
+
324
+ Result:
325
+
326
+ ```javascript
327
+ {
328
+ validatedObject: {
329
+ username: 'alex',
330
+ role: 'member'
331
+ },
332
+ errors: {}
333
+ }
334
+ ```
335
+
336
+ Calling `patch()` with the same payload:
337
+
338
+ ```javascript
339
+ profileSchema.patch({
340
+ username: ' alex '
341
+ })
342
+ ```
343
+
344
+ Result:
345
+
346
+ ```javascript
347
+ {
348
+ validatedObject: {
349
+ username: 'alex'
350
+ },
351
+ errors: {}
352
+ }
353
+ ```
354
+
355
+ That difference is the whole point of operation contracts:
356
+
357
+ * `create()` and `replace()` walk the schema as a contract for the whole object.
358
+ * `patch()` walks only the fields the caller actually touched.
359
+ * Defaults apply on operations that opt into defaults.
360
+ * Missing required fields are only errors on operations that opt into required checks.
361
+
362
+ ## Custom Operations
363
+
364
+ Custom operations are declared when you create the schema.
365
+
366
+ ```javascript
367
+ const userSchema = createSchema({
368
+ id: { type: 'id', required: true },
369
+ email: { type: 'string', required: true },
370
+ role: { type: 'string', defaultTo: 'guest' }
371
+ }, {
372
+ operations: {
373
+ upsert: {
374
+ targetFields: 'schema',
375
+ enforceRequired: false,
376
+ applyDefaults: true,
377
+ outputFields: 'validated'
378
+ }
379
+ }
380
+ })
381
+
382
+ const result = userSchema.upsert({ email: 'alex@example.com' })
383
+ const sameResult = userSchema.validateWith('upsert', { email: 'alex@example.com' })
384
+ ```
385
+
386
+ Operation aliases are generated automatically from the operation registry, so `create`, `replace`, and `patch` keep working exactly as before. If you intentionally redefine one of those names in `operations`, the built-in behavior is replaced for that schema instance.
387
+
388
+ Supported operation descriptor keys:
389
+
390
+ | Key | Allowed Values | Meaning |
391
+ |---|---|---|
392
+ | `targetFields` | `'schema'` or `'input'` | Which fields are validated. `'schema'` walks the schema definition, `'input'` only validates explicitly provided fields. |
393
+ | `enforceRequired` | `true` or `false` | Whether missing `required` fields produce errors. |
394
+ | `applyDefaults` | `true` or `false` | Whether omitted fields with `defaultTo` are materialized into the result. |
395
+ | `outputFields` | `'validated'` or `'input'` | Which field set is considered when building `validatedObject`. `'validated'` follows schema fields, `'input'` follows only explicitly provided fields. |
396
+ | `rejectExplicitUndefined` | `true` or `false` | Whether an explicitly provided `undefined` value is treated as a type error. Defaults to `true`. |
397
+
398
+ Method names are generated automatically from operation names. Names that already exist on `Schema` are reserved and rejected. In practice that means names such as `validateWith`, `toJsonSchema`, `getFieldDefinitions`, `getFieldDefinition`, `getFieldMessages`, and `cleanup` cannot be used as operation aliases.
399
+
400
+ ## Field Introspection
401
+
402
+ Schema instances also expose three read-only introspection helpers:
403
+
404
+ * `schema.getFieldDefinitions()` returns a frozen snapshot map of the top-level field definitions.
405
+ * `schema.getFieldDefinition(path)` resolves one field definition by dotted path, including nested object fields and numeric array segments such as `roles.0.id`, and returns it as a frozen snapshot.
406
+ * `schema.getFieldMessages(path)` returns the field's `messages` object as a frozen snapshot, or `{}` when none exist.
407
+
408
+ These helpers are intentionally inspection-only. They clone the schema metadata they expose so adapter code can read field settings without gaining a back door to mutate runtime validation behavior.
409
+
410
+ Example:
411
+
412
+ ```javascript
413
+ const roleSchema = createSchema({
414
+ id: { type: 'string', required: true }
415
+ })
416
+
417
+ const teamSchema = createSchema({
418
+ name: { type: 'string', required: true },
419
+ roles: {
420
+ type: 'array',
421
+ items: roleSchema
422
+ }
423
+ })
424
+
425
+ const topLevelDefinitions = teamSchema.getFieldDefinitions()
426
+ const roleIdDefinition = teamSchema.getFieldDefinition('roles.0.id')
427
+ const roleIdMessages = teamSchema.getFieldMessages('roles.0.id')
428
+ ```
429
+
430
+ In that example:
431
+
432
+ * `topLevelDefinitions` contains snapshots for `name` and `roles`
433
+ * `roleIdDefinition` resolves through the array item schema to the nested `id` field
434
+ * `roleIdMessages` returns `{}` because that field did not define a `messages` object
435
+
436
+ Treat the returned objects as metadata for rendering and adapter logic, not as something to mutate.
437
+
438
+ ## Nested Object, Array, and Object-Bag Contracts
439
+
440
+ This library now supports the three nested contract shapes that come up constantly in shared REST payloads, without turning into a generic schema engine:
441
+
442
+ 1. **Nested object fields** with `type: 'object'` and `schema`
443
+ 2. **Nested array items** with `type: 'array'` and `items`
444
+ 3. **Opaque object bags** with `type: 'object'` and `additionalProperties: true`
445
+
446
+ The important design rule is that these are still **application contracts**, not arbitrary JSON Schema fragments.
447
+
448
+ ### Nested object fields
449
+
450
+ Use a child `Schema` instance when a field should itself be validated as an object.
451
+
452
+ ```javascript
453
+ const workspaceSummarySchema = createSchema({
454
+ id: { type: 'id', required: true },
455
+ slug: { type: 'string', required: true },
456
+ ownerUserId: { type: 'id', required: true }
457
+ })
458
+
459
+ const workspaceSettingsSchema = createSchema({
460
+ invitesEnabled: { type: 'boolean', required: true }
461
+ })
462
+
463
+ const workspaceViewSchema = createSchema({
464
+ workspace: {
465
+ type: 'object',
466
+ required: true,
467
+ schema: workspaceSummarySchema
468
+ },
469
+ settings: {
470
+ type: 'object',
471
+ required: true,
472
+ schema: workspaceSettingsSchema
473
+ }
474
+ })
475
+ ```
476
+
477
+ How nested object fields behave:
478
+
479
+ * The nested schema inherits the parent operation contract.
480
+ * `create()` on the parent runs `create`-style rules inside the child.
481
+ * `patch()` on the parent runs `patch`-style rules inside the child.
482
+ * Errors are reported with dotted paths such as `workspace.slug`.
483
+ * Unknown nested keys are rejected because child schemas are strict by default, just like top-level schemas.
484
+
485
+ That operation inheritance is deliberate. A nested object inside a patch payload is usually itself a patch payload.
486
+
487
+ ### Worked nested object example
488
+
489
+ Using the schema above:
490
+
491
+ ```javascript
492
+ const result = workspaceViewSchema.create({
493
+ workspace: {
494
+ id: '42',
495
+ slug: ' main-workspace ',
496
+ extra: true
497
+ },
498
+ settings: {}
499
+ })
500
+ ```
501
+
502
+ `validatedObject` becomes:
503
+
504
+ ```javascript
505
+ {
506
+ workspace: {
507
+ id: 42,
508
+ slug: 'main-workspace'
509
+ },
510
+ settings: {}
511
+ }
512
+ ```
513
+
514
+ `errors` becomes:
515
+
516
+ ```javascript
517
+ {
518
+ 'workspace.ownerUserId': {
519
+ field: 'workspace.ownerUserId',
520
+ code: 'REQUIRED',
521
+ message: 'Field is required',
522
+ params: {}
523
+ },
524
+ 'workspace.extra': {
525
+ field: 'workspace.extra',
526
+ code: 'FIELD_NOT_ALLOWED',
527
+ message: 'Field not allowed',
528
+ params: {}
529
+ },
530
+ 'settings.invitesEnabled': {
531
+ field: 'settings.invitesEnabled',
532
+ code: 'REQUIRED',
533
+ message: 'Field is required',
534
+ params: {}
535
+ }
536
+ }
537
+ ```
538
+
539
+ Now compare that with a nested patch:
540
+
541
+ ```javascript
542
+ workspaceViewSchema.patch({
543
+ workspace: {
544
+ slug: ' sandbox '
545
+ }
546
+ })
547
+ ```
548
+
549
+ Result:
550
+
551
+ ```javascript
552
+ {
553
+ validatedObject: {
554
+ workspace: {
555
+ slug: 'sandbox'
556
+ }
557
+ },
558
+ errors: {}
559
+ }
560
+ ```
561
+
562
+ Notice what did **not** happen:
563
+
564
+ * `workspace.id` was not required
565
+ * `workspace.ownerUserId` was not required
566
+ * no defaults were invented
567
+
568
+ That is exactly because the child object inherited the parent `patch` contract.
569
+
570
+ ### Nested array items
571
+
572
+ Use `items` when every array entry should be validated recursively.
573
+
574
+ ```javascript
575
+ const roleSchema = createSchema({
576
+ id: { type: 'string', required: true },
577
+ label: { type: 'string', required: true }
578
+ })
579
+
580
+ const roleCatalogSchema = createSchema({
581
+ roles: {
582
+ type: 'array',
583
+ required: true,
584
+ items: roleSchema
585
+ },
586
+ assignableRoleIds: {
587
+ type: 'array',
588
+ required: true,
589
+ items: { type: 'string', minLength: 1 }
590
+ }
591
+ })
592
+ ```
593
+
594
+ How array items behave:
595
+
596
+ * Primitive item definitions are validated item-by-item and normalized in place.
597
+ * If `items` is a nested object schema, each item is validated in `replace` mode.
598
+ * Array item errors use indexed dotted paths such as `roles.0.label`.
599
+
600
+ That `replace` rule for object items is intentional. If a client sends the `roles` array in a patch, they are replacing the array field, so each object item still needs to be complete.
601
+
602
+ ### Worked nested array example
603
+
604
+ ```javascript
605
+ const result = roleCatalogSchema.patch({
606
+ roles: [
607
+ { id: 'admin' },
608
+ { id: 'editor', label: ' Editor ' }
609
+ ],
610
+ assignableRoleIds: [' owner ', ' ', 123]
611
+ })
612
+ ```
613
+
614
+ `validatedObject` becomes:
615
+
616
+ ```javascript
617
+ {
618
+ roles: [
619
+ { id: 'admin' },
620
+ { id: 'editor', label: 'Editor' }
621
+ ],
622
+ assignableRoleIds: ['owner', '', '123']
623
+ }
624
+ ```
625
+
626
+ `errors` becomes:
627
+
628
+ ```javascript
629
+ {
630
+ 'roles.0.label': {
631
+ field: 'roles.0.label',
632
+ code: 'REQUIRED',
633
+ message: 'Field is required',
634
+ params: {}
635
+ },
636
+ 'assignableRoleIds.1': {
637
+ field: 'assignableRoleIds.1',
638
+ code: 'MIN_LENGTH',
639
+ message: 'Length must be at least 1 characters.',
640
+ params: { min: 1, actual: 0 }
641
+ }
642
+ }
643
+ ```
644
+
645
+ This example shows both supported array styles:
646
+
647
+ * `roles` uses a child `Schema` instance for structured object items
648
+ * `assignableRoleIds` uses an inline field definition for primitive items
649
+
650
+ ### Opaque object bags
651
+
652
+ If a field needs to be “some object, but not one this library owns”, make that explicit:
653
+
654
+ ```javascript
655
+ const schema = createSchema({
656
+ metadata: {
657
+ type: 'object',
658
+ additionalProperties: true
659
+ }
660
+ })
661
+ ```
662
+
663
+ That means:
664
+
665
+ * the value must be a plain object
666
+ * keys are not validated
667
+ * values pass through untouched
668
+
669
+ This is the intended escape hatch for metadata bags and adapter-owned payloads. It is deliberately narrow: `additionalProperties` only supports the literal value `true`. You can combine it with `schema` when you want to validate known child fields while still allowing arbitrary passthrough keys.
670
+
671
+ ## Typed Object Maps
672
+
673
+ If you need "an object whose keys are dynamic, but whose values all follow one contract", use `values`:
674
+
675
+ ```javascript
676
+ const schema = createSchema({
677
+ fieldErrors: {
678
+ type: 'object',
679
+ values: {
680
+ type: 'string',
681
+ minLength: 1
682
+ }
683
+ }
684
+ })
685
+ ```
686
+
687
+ That means:
688
+
689
+ * the value must be a plain object
690
+ * keys remain dynamic
691
+ * every value is validated with the provided field definition
692
+
693
+ `values` can point to either:
694
+
695
+ * an inline field definition such as `{ type: 'string', minLength: 1 }`
696
+ * a child `Schema` instance when every dynamic value should itself be a structured object contract
697
+
698
+ When `values` points to a child object schema, each dynamic value is validated in `replace` mode for the same reason array object items are: each value is treated as a complete object at that key.
699
+
700
+ ## Known Fields Plus Passthrough Extras
701
+
702
+ If you need an object with a few validated child fields but you still want to allow extra keys through unchanged, combine `schema` with `additionalProperties: true`:
703
+
704
+ ```javascript
705
+ const detailsSchema = createSchema({
706
+ message: { type: 'string', required: true },
707
+ fieldErrors: {
708
+ type: 'object',
709
+ values: { type: 'string', minLength: 1 },
710
+ required: false
711
+ }
712
+ })
713
+
714
+ const schema = createSchema({
715
+ details: {
716
+ type: 'object',
717
+ schema: detailsSchema,
718
+ additionalProperties: true
719
+ }
720
+ })
721
+ ```
722
+
723
+ That means:
724
+
725
+ * known child fields are validated and normalized by `detailsSchema`
726
+ * unknown child fields are preserved unchanged
727
+ * transport export becomes `properties` plus `additionalProperties: true`
728
+
729
+ Worked example:
730
+
731
+ ```javascript
732
+ const metadataSchema = createSchema({
733
+ metadata: {
734
+ type: 'object',
735
+ additionalProperties: true
736
+ }
737
+ })
738
+ ```
739
+
740
+ Valid input:
741
+
742
+ ```javascript
743
+ metadataSchema.patch({
744
+ metadata: {
745
+ theme: 'dark',
746
+ flags: {
747
+ beta: true
748
+ }
749
+ }
750
+ })
751
+ ```
752
+
753
+ Result:
754
+
755
+ ```javascript
756
+ {
757
+ validatedObject: {
758
+ metadata: {
759
+ theme: 'dark',
760
+ flags: {
761
+ beta: true
762
+ }
763
+ }
764
+ },
765
+ errors: {}
766
+ }
767
+ ```
768
+
769
+ Invalid input:
770
+
771
+ ```javascript
772
+ metadataSchema.patch({
773
+ metadata: ['not-an-object']
774
+ })
775
+ ```
776
+
777
+ Result:
778
+
779
+ ```javascript
780
+ {
781
+ validatedObject: {
782
+ metadata: ['not-an-object']
783
+ },
784
+ errors: {
785
+ metadata: {
786
+ field: 'metadata',
787
+ code: 'TYPE_CAST_FAILED',
788
+ message: 'Value could not be cast to the required type.',
789
+ params: {}
790
+ }
791
+ }
792
+ }
793
+ ```
794
+
795
+ That is the intended contract: object-ness is enforced, but the inner bag is not owned by this library.
796
+
797
+ ### Dotted path options for nested fields
798
+
799
+ Because nested errors use dotted paths, the opt-out options do too.
800
+
801
+ Skip a whole nested field:
802
+
803
+ ```javascript
804
+ workspaceViewSchema.patch({
805
+ workspace: {
806
+ slug: 'x'
807
+ }
808
+ }, {
809
+ skipFields: ['workspace.slug']
810
+ })
811
+ ```
812
+
813
+ Skip a specific nested validator:
814
+
815
+ ```javascript
816
+ workspaceViewSchema.patch({
817
+ workspace: {
818
+ slug: 'x'
819
+ }
820
+ }, {
821
+ skipParams: {
822
+ 'workspace.slug': ['minLength']
823
+ }
824
+ })
825
+ ```
826
+
827
+ This keeps the options model flat and consistent with the error map.
828
+
829
+ ## Recursive Schemas
830
+
831
+ Recursive schema graphs are supported at runtime.
832
+
833
+ The important distinction is that the library follows the graph of `Schema` instances, not just one level of nesting. That means a field or array item can point back to the same schema instance, and the runtime will keep validating deeper paths using the same operation rules it would use for any non-recursive nested contract.
834
+
835
+ The practical setup rule is simple: self-references are usually wired after the first `createSchema(...)` call, because the variable must exist before another field can point at it.
836
+
837
+ ### Self-recursive object and array example
838
+
839
+ ```javascript
840
+ const nodeSchema = createSchema({
841
+ id: { type: 'string', required: true },
842
+ label: { type: 'string', required: true },
843
+ parent: { type: 'object', required: false },
844
+ children: { type: 'array', required: false }
845
+ })
846
+
847
+ nodeSchema.structure.parent.schema = nodeSchema
848
+ nodeSchema.structure.children.items = nodeSchema
849
+ ```
850
+
851
+ That creates two different recursive edges:
852
+
853
+ * `parent` is a nested object field that points back to `nodeSchema`
854
+ * `children.items` is an array of `nodeSchema` objects
855
+
856
+ ### Recursive runtime semantics
857
+
858
+ The same rules still apply inside the recursive graph:
859
+
860
+ * nested object fields such as `parent` inherit the active operation contract
861
+ * array items that are object schemas still use `replace` semantics
862
+ * recursive errors stay in the same flat dotted-path shape as any other nested error
863
+
864
+ Example:
865
+
866
+ ```javascript
867
+ const patchParent = nodeSchema.patch({
868
+ parent: {
869
+ label: ' Root '
870
+ }
871
+ })
872
+
873
+ const patchChildren = nodeSchema.patch({
874
+ children: [
875
+ { label: 'Only child label' }
876
+ ]
877
+ })
878
+ ```
879
+
880
+ `patchParent` succeeds with:
881
+
882
+ ```javascript
883
+ {
884
+ validatedObject: {
885
+ parent: {
886
+ label: 'Root'
887
+ }
888
+ },
889
+ errors: {}
890
+ }
891
+ ```
892
+
893
+ That happens because `parent` is a nested object field and inherits the outer `patch` operation.
894
+
895
+ `patchChildren` returns:
896
+
897
+ ```javascript
898
+ {
899
+ validatedObject: {
900
+ children: [
901
+ {
902
+ label: 'Only child label'
903
+ }
904
+ ]
905
+ },
906
+ errors: {
907
+ 'children.0.id': {
908
+ field: 'children.0.id',
909
+ code: 'REQUIRED',
910
+ message: 'Field is required',
911
+ params: {}
912
+ }
913
+ }
914
+ }
915
+ ```
916
+
917
+ That happens because array items that point to object schemas are always treated as full replacements.
918
+
919
+ ### Recursive paths, introspection, and transport export
920
+
921
+ Recursive schemas keep the same dotted-path model everywhere else too:
922
+
923
+ * `nodeSchema.getFieldDefinition('children.0.label')` resolves correctly
924
+ * `nodeSchema.validateAt('children.0.label', payload)` validates only that selected path
925
+ * recursive transport export is graph-aware rather than stack-recursive
926
+
927
+ `toJsonSchema()` uses draft-07 `definitions` plus `$ref` for recursive nested contracts, and direct self-recursive object fields point back to `#`. The transport-specific details are covered again in the `Transport JSON Schema Export` chapter below.
928
+
929
+ ## Path-Scoped Validation for Forms and Interactive UIs
930
+
931
+ Full-object validation is still the right tool for submit boundaries:
932
+
933
+ ```javascript
934
+ const result = userSchema.create(payload)
935
+ ```
936
+
937
+ But forms often need something narrower:
938
+
939
+ * validate one field on blur
940
+ * validate a small step in a wizard
941
+ * normalize only the field the user just touched
942
+ * avoid triggering unrelated sibling errors while the user is still editing
943
+
944
+ That is what `validateAt()` and `validatePaths()` are for.
945
+
946
+ ### `validateAt(path, object, options)`
947
+
948
+ Use `validateAt()` when you want one path.
949
+
950
+ ```javascript
951
+ const profileSchema = createSchema({
952
+ name: { type: 'string', required: true, minLength: 3 },
953
+ role: { type: 'string', defaultTo: 'guest' }
954
+ })
955
+
956
+ profileSchema.validateAt('name', {
957
+ name: ' Alex '
958
+ })
959
+ ```
960
+
961
+ Result:
962
+
963
+ ```javascript
964
+ {
965
+ validatedValue: 'Alex',
966
+ errors: {}
967
+ }
968
+ ```
969
+
970
+ By default, path validation uses **`patch` semantics**. That means:
971
+
972
+ * only the selected path is validated
973
+ * missing required siblings do not produce errors
974
+ * defaults do not apply unless you explicitly choose an operation that applies them
975
+
976
+ If you want create-style or replace-style behavior for the exact selected path, pass `operation`.
977
+
978
+ ```javascript
979
+ profileSchema.validateAt('role', {}, { operation: 'create' })
980
+ ```
981
+
982
+ Result:
983
+
984
+ ```javascript
985
+ {
986
+ validatedValue: 'guest',
987
+ errors: {}
988
+ }
989
+ ```
990
+
991
+ If you want required checks for the exact selected field:
992
+
993
+ ```javascript
994
+ profileSchema.validateAt('name', {}, { operation: 'create' })
995
+ ```
996
+
997
+ Result:
998
+
999
+ ```javascript
1000
+ {
1001
+ validatedValue: undefined,
1002
+ errors: {
1003
+ name: {
1004
+ field: 'name',
1005
+ code: 'REQUIRED',
1006
+ message: 'Field is required',
1007
+ params: {}
1008
+ }
1009
+ }
1010
+ }
1011
+ ```
1012
+
1013
+ ### Nested path example
1014
+
1015
+ This is where path-scoped validation becomes most useful.
1016
+
1017
+ ```javascript
1018
+ const workspaceSummarySchema = createSchema({
1019
+ id: { type: 'id', required: true },
1020
+ slug: { type: 'string', required: true, minLength: 3 },
1021
+ ownerUserId: { type: 'id', required: true }
1022
+ })
1023
+
1024
+ const workspaceSchema = createSchema({
1025
+ workspace: {
1026
+ type: 'object',
1027
+ required: true,
1028
+ schema: workspaceSummarySchema
1029
+ }
1030
+ })
1031
+ ```
1032
+
1033
+ Validate only `workspace.slug`:
1034
+
1035
+ ```javascript
1036
+ workspaceSchema.validateAt('workspace.slug', {
1037
+ workspace: {
1038
+ slug: ' primary '
1039
+ }
1040
+ }, {
1041
+ operation: 'create'
1042
+ })
1043
+ ```
1044
+
1045
+ Result:
1046
+
1047
+ ```javascript
1048
+ {
1049
+ validatedValue: 'primary',
1050
+ errors: {}
1051
+ }
1052
+ ```
1053
+
1054
+ Notice what did **not** happen:
1055
+
1056
+ * `workspace.id` was not required
1057
+ * `workspace.ownerUserId` was not required
1058
+ * unrelated nested keys were not validated
1059
+
1060
+ That is the point of the API. It validates the **selected path**, not the whole object.
1061
+
1062
+ If you select the whole object path instead:
1063
+
1064
+ ```javascript
1065
+ workspaceSchema.validateAt('workspace', {
1066
+ workspace: {
1067
+ slug: ' primary '
1068
+ }
1069
+ }, {
1070
+ operation: 'create'
1071
+ })
1072
+ ```
1073
+
1074
+ Result:
1075
+
1076
+ ```javascript
1077
+ {
1078
+ validatedValue: {
1079
+ slug: 'primary'
1080
+ },
1081
+ errors: {
1082
+ 'workspace.id': {
1083
+ field: 'workspace.id',
1084
+ code: 'REQUIRED',
1085
+ message: 'Field is required',
1086
+ params: {}
1087
+ },
1088
+ 'workspace.ownerUserId': {
1089
+ field: 'workspace.ownerUserId',
1090
+ code: 'REQUIRED',
1091
+ message: 'Field is required',
1092
+ params: {}
1093
+ }
1094
+ }
1095
+ }
1096
+ ```
1097
+
1098
+ That distinction is intentional:
1099
+
1100
+ * selecting `workspace.slug` validates one field
1101
+ * selecting `workspace` validates the whole nested object contract
1102
+
1103
+ ### `validatePaths(paths, object, options)`
1104
+
1105
+ Use `validatePaths()` when you want a subset of fields or a whole form step.
1106
+
1107
+ ```javascript
1108
+ const stepSchema = createSchema({
1109
+ workspace: {
1110
+ type: 'object',
1111
+ schema: workspaceSummarySchema
1112
+ },
1113
+ status: { type: 'string', defaultTo: 'draft' }
1114
+ })
1115
+
1116
+ stepSchema.validatePaths([
1117
+ 'workspace.slug',
1118
+ 'status'
1119
+ ], {
1120
+ workspace: {
1121
+ slug: ' next '
1122
+ }
1123
+ }, {
1124
+ operation: 'create'
1125
+ })
1126
+ ```
1127
+
1128
+ Result:
1129
+
1130
+ ```javascript
1131
+ {
1132
+ validatedObject: {
1133
+ workspace: {
1134
+ slug: 'next'
1135
+ },
1136
+ status: 'draft'
1137
+ },
1138
+ errors: {}
1139
+ }
1140
+ ```
1141
+
1142
+ This is useful for:
1143
+
1144
+ * wizard-step validation
1145
+ * validating only dirty fields
1146
+ * validating a form section before moving on
1147
+
1148
+ ### Path options and compatibility
1149
+
1150
+ Path-scoped validation supports the same flat nested option model:
1151
+
1152
+ ```javascript
1153
+ workspaceSchema.validatePaths([
1154
+ 'workspace.slug'
1155
+ ], {
1156
+ workspace: {
1157
+ slug: 'x'
1158
+ }
1159
+ }, {
1160
+ operation: 'patch',
1161
+ skipParams: {
1162
+ 'workspace.slug': ['minLength']
1163
+ }
1164
+ })
1165
+ ```
1166
+
1167
+ `mode` also works as compatibility sugar for the built-in operations:
1168
+
1169
+ ```javascript
1170
+ workspaceSchema.validateAt('workspace.slug', values, { mode: 'patch' })
1171
+ ```
1172
+
1173
+ ### Form integration guidance
1174
+
1175
+ These APIs are meant to help form adapters, but the library still does **not** become a form framework.
1176
+
1177
+ Recommended approach:
1178
+
1179
+ * keep raw input state in the UI while the user is typing
1180
+ * use `validateAt()` or `validatePaths()` to compute errors and normalized values
1181
+ * apply full normalization on submit with `create()`, `replace()`, or `patch()`
1182
+
1183
+ That matters because aggressive normalization during typing can be annoying:
1184
+
1185
+ * trimming on every keypress can move the cursor
1186
+ * number coercion can fight half-finished input such as `12.`
1187
+ * nested defaults can appear before the user has actually submitted anything
1188
+
1189
+ So the intended split is:
1190
+
1191
+ * **interactive validation**: `validateAt()` / `validatePaths()`
1192
+ * **submit boundary validation**: `create()` / `replace()` / `patch()`
1193
+
1194
+ ## React Hook Form Resolver
1195
+
1196
+ If you use React Hook Form, this package now ships a dedicated resolver adapter as a separate subpath export:
1197
+
1198
+ ```javascript
1199
+ import { useForm } from 'react-hook-form'
1200
+ import { createSchema } from 'json-rest-schema'
1201
+ import { jsonRestSchemaResolver } from 'json-rest-schema/react-hook-form'
1202
+ ```
1203
+
1204
+ That import path is intentional. The resolver lives outside the main schema engine so the core library does not become React-specific.
1205
+
1206
+ ### Basic usage
1207
+
1208
+ ```javascript
1209
+ const profileSchema = createSchema({
1210
+ name: { type: 'string', required: true, minLength: 3 },
1211
+ role: { type: 'string', defaultTo: 'guest' }
1212
+ })
1213
+
1214
+ const form = useForm({
1215
+ resolver: jsonRestSchemaResolver(profileSchema)
1216
+ })
1217
+ ```
1218
+
1219
+ By default, the resolver uses **`create` semantics** for full-form validation.
1220
+
1221
+ That means:
1222
+
1223
+ * required fields are enforced
1224
+ * defaults are applied on successful full-form validation
1225
+ * the resolver itself returns normalized success values for full-form validation
1226
+
1227
+ So if the user submits:
1228
+
1229
+ ```javascript
1230
+ {
1231
+ name: ' Alex '
1232
+ }
1233
+ ```
1234
+
1235
+ the resolver will hand React Hook Form a successful value object equivalent to:
1236
+
1237
+ ```javascript
1238
+ {
1239
+ name: 'Alex',
1240
+ role: 'guest'
1241
+ }
1242
+ ```
1243
+
1244
+ One real-world nuance matters here: React Hook Form still owns its internal field
1245
+ state. In practice, that means a successful resolver pass does **not** always mean
1246
+ your submit handler receives a canonical normalized payload directly from RHF's state.
1247
+
1248
+ If you need a final REST-ready payload, run one last schema operation in the submit
1249
+ handler:
1250
+
1251
+ ```javascript
1252
+ const form = useForm({
1253
+ resolver: jsonRestSchemaResolver(profileSchema)
1254
+ })
1255
+
1256
+ const onSubmit = rawValues => {
1257
+ const { validatedObject, errors } = profileSchema.create(rawValues)
1258
+ if (Object.keys(errors).length > 0) return
1259
+
1260
+ saveProfile(validatedObject)
1261
+ }
1262
+ ```
1263
+
1264
+ That split is intentional:
1265
+
1266
+ * RHF keeps raw interactive field state
1267
+ * the schema owns final normalization at the submit boundary
1268
+ * the UI is free to avoid aggressive value rewriting while the user is typing
1269
+
1270
+ ### Edit forms and custom operations
1271
+
1272
+ If the form is editing an existing resource, use a different operation explicitly.
1273
+
1274
+ For a patch-style form:
1275
+
1276
+ ```javascript
1277
+ const form = useForm({
1278
+ resolver: jsonRestSchemaResolver(profileSchema, {
1279
+ operation: 'patch'
1280
+ })
1281
+ })
1282
+ ```
1283
+
1284
+ You can also use any custom operation you have registered on the schema:
1285
+
1286
+ ```javascript
1287
+ const form = useForm({
1288
+ resolver: jsonRestSchemaResolver(profileSchema, {
1289
+ operation: 'upsert'
1290
+ })
1291
+ })
1292
+ ```
1293
+
1294
+ ### Field-level re-validation behavior
1295
+
1296
+ React Hook Form re-validates one field at a time during user interaction. The resolver uses the core path APIs for that subset validation.
1297
+
1298
+ Important behavior:
1299
+
1300
+ * only the selected RHF field names are validated during field-level re-validation
1301
+ * sibling required fields do **not** leak into a single-field re-validation pass
1302
+ * by default, field-level re-validation keeps **raw form values** instead of forcing normalized values back into the UI while the user is typing
1303
+
1304
+ That default matters because aggressive normalization during typing can feel bad:
1305
+
1306
+ * trimmed strings can move the cursor
1307
+ * number coercion can fight half-complete input
1308
+ * defaults can appear before submit
1309
+
1310
+ ### Opting into normalized field-level values
1311
+
1312
+ If you explicitly want normalized field values during field-level re-validation, opt in:
1313
+
1314
+ ```javascript
1315
+ const form = useForm({
1316
+ resolver: jsonRestSchemaResolver(
1317
+ profileSchema,
1318
+ {},
1319
+ { normalizeOnFieldValidation: true }
1320
+ )
1321
+ })
1322
+ ```
1323
+
1324
+ This is opt-in on purpose.
1325
+
1326
+ ### Returning raw values on success
1327
+
1328
+ If you want successful resolver results to return raw input values instead of normalized values, use `raw: true`:
1329
+
1330
+ ```javascript
1331
+ const form = useForm({
1332
+ resolver: jsonRestSchemaResolver(
1333
+ profileSchema,
1334
+ {},
1335
+ { raw: true }
1336
+ )
1337
+ })
1338
+ ```
1339
+
1340
+ That applies to successful full-form validation too, so defaults and casts are not pushed into the returned `values` object.
1341
+
1342
+ ### Error shape
1343
+
1344
+ React Hook Form requires hierarchical nested errors for deep paths. The resolver converts the library's flat dotted-path errors into the structure RHF expects.
1345
+
1346
+ For example, a schema error like:
1347
+
1348
+ ```javascript
1349
+ {
1350
+ 'roles.0.label': {
1351
+ field: 'roles.0.label',
1352
+ code: 'REQUIRED',
1353
+ message: 'Field is required',
1354
+ params: {}
1355
+ }
1356
+ }
1357
+ ```
1358
+
1359
+ becomes a React Hook Form error shape equivalent to:
1360
+
1361
+ ```javascript
1362
+ {
1363
+ roles: [
1364
+ {
1365
+ label: {
1366
+ type: 'REQUIRED',
1367
+ message: 'Field is required'
1368
+ }
1369
+ }
1370
+ ]
1371
+ }
1372
+ ```
1373
+
1374
+ Direct array-field errors are placed under RHF's `root` key for that field array path.
1375
+
1376
+ ### Native browser validation
1377
+
1378
+ The resolver also respects React Hook Form's `shouldUseNativeValidation` option. If RHF asks for native validation, the adapter sets `setCustomValidity()` / `reportValidity()` using the schema error messages.
1379
+
1380
+ ## Vue Form Adapter
1381
+
1382
+ If you use Vue, this package now ships a small adapter layer as a separate subpath export:
1383
+
1384
+ ```javascript
1385
+ import { useSchemaForm, useSchemaField } from 'json-rest-schema/vue'
1386
+ ```
1387
+
1388
+ That split is intentional.
1389
+
1390
+ * `json-rest-schema/vue` handles schema-aware form orchestration
1391
+ * the core schema engine stays framework-agnostic
1392
+
1393
+ Just as important: the adapter does **not** import Vue internally.
1394
+
1395
+ They work with:
1396
+
1397
+ * plain objects
1398
+ * Vue reactive proxies
1399
+ * Vue refs such as `ref({ ... })`
1400
+
1401
+ That keeps the published package small and avoids turning Vue into a hard dependency of the core runtime.
1402
+
1403
+ ### Basic Vue usage
1404
+
1405
+ Use `useSchemaForm()` when you already own the form values in Vue state.
1406
+
1407
+ ```javascript
1408
+ import { reactive } from 'vue'
1409
+ import { createSchema } from 'json-rest-schema'
1410
+ import { useSchemaForm } from 'json-rest-schema/vue'
1411
+
1412
+ const profileSchema = createSchema({
1413
+ name: { type: 'string', required: true, minLength: 3 },
1414
+ role: { type: 'string', defaultTo: 'guest' }
1415
+ })
1416
+
1417
+ const values = reactive({
1418
+ name: ''
1419
+ })
1420
+
1421
+ const form = useSchemaForm(profileSchema, {
1422
+ values
1423
+ })
1424
+ ```
1425
+
1426
+ If you want Vue to react to adapter-managed error or result updates, pass Vue-owned
1427
+ containers such as `ref({})`, `reactive({})`, or `ref(null)`:
1428
+
1429
+ ```javascript
1430
+ import { reactive, ref } from 'vue'
1431
+
1432
+ const values = reactive({
1433
+ name: ''
1434
+ })
1435
+
1436
+ const errors = ref({})
1437
+ const lastResult = ref(null)
1438
+
1439
+ const form = useSchemaForm(profileSchema, {
1440
+ values,
1441
+ errors,
1442
+ lastResult
1443
+ })
1444
+ ```
1445
+
1446
+ That keeps reactivity in the Vue app instead of hiding framework state inside the schema library.
1447
+
1448
+ Important behavior:
1449
+
1450
+ * full-form validation defaults to **`create`** semantics
1451
+ * `form.validate()` returns the usual `{ validatedObject, errors }`
1452
+ * `form.errors` stays in the library's flat dotted-path format
1453
+ * `form.nestedErrors` gives you the nested object/array form if your Vue layer prefers it
1454
+
1455
+ Running a full validation:
1456
+
1457
+ ```javascript
1458
+ const result = form.validate()
1459
+ ```
1460
+
1461
+ If `values` is:
1462
+
1463
+ ```javascript
1464
+ {
1465
+ name: ' Alex '
1466
+ }
1467
+ ```
1468
+
1469
+ then `result` will be:
1470
+
1471
+ ```javascript
1472
+ {
1473
+ validatedObject: {
1474
+ name: 'Alex',
1475
+ role: 'guest'
1476
+ },
1477
+ errors: {}
1478
+ }
1479
+ ```
1480
+
1481
+ That is the same contract as the core schema engine. The Vue adapter does not invent a second validation format.
1482
+
1483
+ ### Field-level validation in Vue
1484
+
1485
+ For blur validation, wizard steps, or one-field re-validation, use the path-aware helpers.
1486
+
1487
+ ```javascript
1488
+ const fieldResult = form.validateField('name')
1489
+ const stepResult = form.validateFields(['name', 'role'])
1490
+ ```
1491
+
1492
+ This matters because the adapter validates **only the selected paths**.
1493
+
1494
+ That means:
1495
+
1496
+ * validating `name` does not suddenly produce `email` or `password` errors
1497
+ * nested paths such as `workspace.slug` work the same way as they do in the core APIs
1498
+ * bracket paths such as `roles[0].label` are accepted too
1499
+
1500
+ If you want a path-focused helper object, use `useSchemaField()`:
1501
+
1502
+ ```javascript
1503
+ const nameField = useSchemaField(form, 'name')
1504
+ ```
1505
+
1506
+ It gives you:
1507
+
1508
+ * `nameField.value`
1509
+ * `nameField.error`
1510
+ * `nameField.hasError`
1511
+ * `nameField.message`
1512
+ * `nameField.messages`
1513
+ * `nameField.validate()`
1514
+ * `nameField.clearError()`
1515
+
1516
+ Example:
1517
+
1518
+ ```javascript
1519
+ nameField.validate()
1520
+ console.log(nameField.messages)
1521
+ ```
1522
+
1523
+ ### Submit normalization in Vue
1524
+
1525
+ The clean submit path is:
1526
+
1527
+ ```javascript
1528
+ const submitProfile = form.submit((validatedObject) => {
1529
+ return api.saveProfile(validatedObject)
1530
+ })
1531
+ ```
1532
+
1533
+ `submit()` always validates first.
1534
+
1535
+ If validation fails:
1536
+
1537
+ * the handler is **not** called
1538
+ * the returned value is the validation result
1539
+ * `form.errors` is updated
1540
+
1541
+ If validation succeeds:
1542
+
1543
+ * the handler receives the normalized `validatedObject`
1544
+ * defaults and casts are already applied
1545
+
1546
+ This keeps the same intended split as the rest of the library:
1547
+
1548
+ * raw values while the user is typing
1549
+ * normalized values at the submit boundary
1550
+
1551
+ ### Edit forms and custom operations in Vue
1552
+
1553
+ If the form is editing an existing resource, choose a different operation explicitly:
1554
+
1555
+ ```javascript
1556
+ const form = useSchemaForm(profileSchema, {
1557
+ values,
1558
+ operation: 'patch'
1559
+ })
1560
+ ```
1561
+
1562
+ You can also use a custom schema operation:
1563
+
1564
+ ```javascript
1565
+ const form = useSchemaForm(profileSchema, {
1566
+ values,
1567
+ operation: 'upsert'
1568
+ })
1569
+ ```
1570
+
1571
+ The adapter routes everything back through the schema operation registry, so custom operations behave the same way here as they do in the core runtime.
1572
+
1573
+ If you render those forms with Vuetify, use the separate bridge below. It stays thin on purpose and translates the Vue adapter's existing validation results into Vuetify-friendly props and rule callbacks.
1574
+
1575
+ ## Vuetify Bridge
1576
+
1577
+ If you use Vuetify on top of the Vue adapter, import the bridge from its own subpath:
1578
+
1579
+ ```javascript
1580
+ import { createVuetifyRule, fieldProps, getVuetifyErrorMessages } from 'json-rest-schema/vuetify'
1581
+ ```
1582
+
1583
+ This split is intentional:
1584
+
1585
+ * `json-rest-schema/vue` owns schema-aware form orchestration
1586
+ * `json-rest-schema/vuetify` translates those results into Vuetify `rules` and `error-messages`
1587
+ * the validation rules still live in the schema layer, not in component glue code
1588
+
1589
+ ### Vuetify `rules` integration
1590
+
1591
+ Vuetify's `rules` prop is a natural fit for path-scoped validation.
1592
+
1593
+ ```javascript
1594
+ const slugRule = createVuetifyRule(form, 'workspace.slug')
1595
+ ```
1596
+
1597
+ Then bind it to a component:
1598
+
1599
+ ```vue
1600
+ <v-text-field
1601
+ v-model="values.workspace.slug"
1602
+ :rules="[slugRule]"
1603
+ />
1604
+ ```
1605
+
1606
+ That rule:
1607
+
1608
+ * clones the current form values
1609
+ * injects the field's current candidate value at the selected path
1610
+ * runs `validateField(path, ...)`
1611
+ * returns either `true` or the schema error message
1612
+
1613
+ So the rule stays a thin bridge. It does not re-implement validation logic.
1614
+
1615
+ ### Vuetify `fieldProps()` helper
1616
+
1617
+ If you want a compact helper for Vuetify inputs, use `fieldProps()`:
1618
+
1619
+ ```javascript
1620
+ const slugProps = fieldProps(form, 'workspace.slug')
1621
+ ```
1622
+
1623
+ Then:
1624
+
1625
+ ```vue
1626
+ <v-text-field
1627
+ v-model="values.workspace.slug"
1628
+ v-bind="slugProps"
1629
+ />
1630
+ ```
1631
+
1632
+ By default, `fieldProps()` returns only a `rules` array.
1633
+
1634
+ That default is deliberate. Vuetify merges `error-messages` with rule-generated messages, so returning both by default would duplicate the same message on screen.
1635
+
1636
+ If you explicitly want manual `error-messages` too, opt in:
1637
+
1638
+ ```javascript
1639
+ const slugProps = fieldProps(form, 'workspace.slug', {
1640
+ includeErrorMessages: true
1641
+ })
1642
+ ```
1643
+
1644
+ That adds:
1645
+
1646
+ * `errorMessages`
1647
+ * `error`
1648
+
1649
+ on top of the generated `rules`.
1650
+
1651
+ ### Manual Vuetify error messages
1652
+
1653
+ If you only want the message bridge without generated rules, use `getVuetifyErrorMessages()` directly:
1654
+
1655
+ ```javascript
1656
+ const messages = getVuetifyErrorMessages(form, 'workspace.slug')
1657
+ ```
1658
+
1659
+ Then:
1660
+
1661
+ ```vue
1662
+ <v-text-field
1663
+ v-model="values.workspace.slug"
1664
+ :error-messages="getVuetifyErrorMessages(form, 'workspace.slug')"
1665
+ />
1666
+ ```
1667
+
1668
+ This is useful when:
1669
+
1670
+ * you validate on submit instead of on blur/input
1671
+ * you already ran `form.validate()` or `form.validateField()`
1672
+ * you want Vuetify to display stored schema errors without re-running rules immediately
1673
+
1674
+ ### Worked Vue + Vuetify example
1675
+
1676
+ ```javascript
1677
+ import { reactive } from 'vue'
1678
+ import { createSchema } from 'json-rest-schema'
1679
+ import { useSchemaForm, useSchemaField } from 'json-rest-schema/vue'
1680
+ import { fieldProps } from 'json-rest-schema/vuetify'
1681
+
1682
+ const workspaceSummarySchema = createSchema({
1683
+ id: { type: 'id', required: true },
1684
+ slug: { type: 'string', required: true, minLength: 3 },
1685
+ ownerUserId: { type: 'id', required: true }
1686
+ })
1687
+
1688
+ const workspaceSchema = createSchema({
1689
+ workspace: {
1690
+ type: 'object',
1691
+ required: true,
1692
+ schema: workspaceSummarySchema
1693
+ }
1694
+ })
1695
+
1696
+ const values = reactive({
1697
+ workspace: {
1698
+ slug: ''
1699
+ }
1700
+ })
1701
+
1702
+ const form = useSchemaForm(workspaceSchema, {
1703
+ values,
1704
+ operation: 'patch'
1705
+ })
1706
+
1707
+ const slugField = useSchemaField(form, 'workspace.slug')
1708
+ const slugProps = fieldProps(form, 'workspace.slug')
1709
+
1710
+ const saveWorkspace = form.submit(async (validatedObject) => {
1711
+ await api.saveWorkspace(validatedObject)
1712
+ })
1713
+ ```
1714
+
1715
+ ```vue
1716
+ <template>
1717
+ <v-form @submit.prevent="saveWorkspace">
1718
+ <v-text-field
1719
+ v-model="values.workspace.slug"
1720
+ label="Workspace slug"
1721
+ v-bind="slugProps"
1722
+ @blur="slugField.validate()"
1723
+ />
1724
+
1725
+ <v-btn type="submit">Save</v-btn>
1726
+ </v-form>
1727
+ </template>
1728
+ ```
1729
+
1730
+ That example preserves the intended layering:
1731
+
1732
+ * the schema owns normalization and validation
1733
+ * Vue owns local form state
1734
+ * Vuetify owns rendering and input UX
1735
+ * submit handlers own business logic and API calls
1736
+
1737
+ ## Demo Apps and Browser Smoke Tests
1738
+
1739
+ This repo now includes two minimal demo apps documented in `demos/README.md`:
1740
+
1741
+ * `demos/react-rhf`
1742
+ * `demos/vue-vuetify`
1743
+
1744
+ They alias package imports back to the local source files in this checkout, so they
1745
+ always exercise the current repo state instead of a published npm copy.
1746
+
1747
+ What each demo proves:
1748
+
1749
+ * `demos/react-rhf`: the React Hook Form resolver works in a real browser app, and the submit flow can still perform one final canonical schema pass before handing the payload to your API layer.
1750
+ * `demos/vue-vuetify`: the Vue and Vuetify adapters work in a real browser app, including visible Vuetify controls, blur validation, and normalized submit output.
1751
+
1752
+ To install and run them:
1753
+
1754
+ ```bash
1755
+ npm run demo:install
1756
+ ```
1757
+
1758
+ Then in separate terminals:
1759
+
1760
+ ```bash
1761
+ npm run demo:react
1762
+ npm run demo:vue
1763
+ ```
1764
+
1765
+ Vite will print the local URLs it chose. If the default port is busy, it will pick the next open one automatically.
1766
+
1767
+ To run the browser smoke tests:
1768
+
1769
+ ```bash
1770
+ npx playwright install chromium
1771
+ npm run test:demos
1772
+ ```
1773
+
1774
+ The Playwright coverage is intentionally small and concrete:
1775
+
1776
+ * the React demo validates through the RHF resolver and performs one final canonical schema submit
1777
+ * the Vue demo validates through the Vue and Vuetify adapters and submits a normalized payload in a real browser runtime
1778
+
1779
+ Small troubleshooting notes:
1780
+
1781
+ * If a Vuetify control appears blank, make sure you ran the Vue demo's local install step. The demo now declares and imports the Material Design icon font explicitly.
1782
+ * If Playwright complains about missing browsers, run `npx playwright install chromium` once from the repo root.
1783
+
1784
+ ## VeeValidate v5 Bridge
1785
+
1786
+ VeeValidate v5 accepts Standard Schema-compatible validators as `validationSchema`.
1787
+
1788
+ That means `json-rest-schema` does not need a heavy VeeValidate-specific runtime adapter. This package now ships a small bridge that wraps a schema instance in the Standard Schema interface VeeValidate already understands.
1789
+
1790
+ Import it like this:
1791
+
1792
+ ```javascript
1793
+ import { useForm } from 'vee-validate'
1794
+ import { createSchema } from 'json-rest-schema'
1795
+ import { toVeeValidateSchema } from 'json-rest-schema/vee-validate'
1796
+ ```
1797
+
1798
+ ### Basic usage
1799
+
1800
+ ```javascript
1801
+ const profileSchema = createSchema({
1802
+ name: { type: 'string', required: true, minLength: 3 },
1803
+ role: { type: 'string', defaultTo: 'guest' }
1804
+ })
1805
+
1806
+ const { handleSubmit, errors, values } = useForm({
1807
+ initialValues: {
1808
+ name: ''
1809
+ },
1810
+ validationSchema: toVeeValidateSchema(profileSchema)
1811
+ })
1812
+ ```
1813
+
1814
+ That default bridge uses **`create` semantics**.
1815
+
1816
+ So on successful submit:
1817
+
1818
+ * required fields are enforced
1819
+ * normalized values are returned
1820
+ * defaults are applied to the submitted output
1821
+
1822
+ If the user submits:
1823
+
1824
+ ```javascript
1825
+ {
1826
+ name: ' Alex '
1827
+ }
1828
+ ```
1829
+
1830
+ then the validated submit payload is equivalent to:
1831
+
1832
+ ```javascript
1833
+ {
1834
+ name: 'Alex',
1835
+ role: 'guest'
1836
+ }
1837
+ ```
1838
+
1839
+ ### Edit forms and custom operations
1840
+
1841
+ If the form is editing an existing resource, pass the operation explicitly:
1842
+
1843
+ ```javascript
1844
+ const { handleSubmit } = useForm({
1845
+ initialValues,
1846
+ validationSchema: toVeeValidateSchema(profileSchema, {
1847
+ operation: 'patch'
1848
+ })
1849
+ })
1850
+ ```
1851
+
1852
+ Custom operations work too:
1853
+
1854
+ ```javascript
1855
+ const { handleSubmit } = useForm({
1856
+ initialValues,
1857
+ validationSchema: toVeeValidateSchema(profileSchema, {
1858
+ operation: 'upsert'
1859
+ })
1860
+ })
1861
+ ```
1862
+
1863
+ ### Important VeeValidate limitation: defaults do not initialize form state
1864
+
1865
+ This is important enough to say clearly:
1866
+
1867
+ * the bridge validates and normalizes the schema output
1868
+ * VeeValidate still expects you to provide your own `initialValues`
1869
+ * schema defaults do **not** automatically populate the form's starting state
1870
+
1871
+ So this is the intended split:
1872
+
1873
+ * `initialValues` controls the raw form state
1874
+ * `toVeeValidateSchema(...)` controls validation and normalized submit output
1875
+
1876
+ If you want a default field visible in the UI before submit, put it in `initialValues`.
1877
+
1878
+ If you only want the normalized payload to contain the default when the user submits, let the schema apply it.
1879
+
1880
+ ### Error paths
1881
+
1882
+ The bridge turns the library's flat error map into Standard Schema issues with nested paths.
1883
+
1884
+ So an internal error like:
1885
+
1886
+ ```javascript
1887
+ {
1888
+ 'roles.0.label': {
1889
+ field: 'roles.0.label',
1890
+ code: 'REQUIRED',
1891
+ message: 'Field is required',
1892
+ params: {}
1893
+ }
1894
+ }
1895
+ ```
1896
+
1897
+ becomes Standard Schema issues equivalent to:
1898
+
1899
+ ```javascript
1900
+ [
1901
+ {
1902
+ message: 'Field is required',
1903
+ path: ['roles', 0, 'label']
1904
+ }
1905
+ ]
1906
+ ```
1907
+
1908
+ That is what lets VeeValidate map nested array/object errors back onto the right field state.
1909
+
1910
+ ### Worked VeeValidate example
1911
+
1912
+ ```javascript
1913
+ import { useForm } from 'vee-validate'
1914
+ import { createSchema } from 'json-rest-schema'
1915
+ import { toVeeValidateSchema } from 'json-rest-schema/vee-validate'
1916
+
1917
+ const workspaceSummarySchema = createSchema({
1918
+ id: { type: 'id', required: true },
1919
+ slug: { type: 'string', required: true, minLength: 3 },
1920
+ ownerUserId: { type: 'id', required: true }
1921
+ })
1922
+
1923
+ const workspaceSchema = createSchema({
1924
+ workspace: {
1925
+ type: 'object',
1926
+ required: true,
1927
+ schema: workspaceSummarySchema
1928
+ }
1929
+ })
1930
+
1931
+ const { defineField, handleSubmit, errors } = useForm({
1932
+ initialValues: {
1933
+ workspace: {
1934
+ slug: ''
1935
+ }
1936
+ },
1937
+ validationSchema: toVeeValidateSchema(workspaceSchema, {
1938
+ operation: 'patch'
1939
+ })
1940
+ })
1941
+
1942
+ const [slug, slugAttrs] = defineField('workspace.slug')
1943
+
1944
+ const saveWorkspace = handleSubmit((validatedObject) => {
1945
+ return api.saveWorkspace(validatedObject)
1946
+ })
1947
+ ```
1948
+
1949
+ ```vue
1950
+ <template>
1951
+ <form @submit.prevent="saveWorkspace">
1952
+ <input v-model="slug" v-bind="slugAttrs">
1953
+ <span>{{ errors['workspace.slug'] }}</span>
1954
+ <button type="submit">Save</button>
1955
+ </form>
1956
+ </template>
1957
+ ```
1958
+
1959
+ This keeps the responsibilities clean:
1960
+
1961
+ * VeeValidate owns touched/dirty/submit orchestration
1962
+ * `json-rest-schema` owns validation and normalization
1963
+ * your submit handler owns business logic
1964
+
1965
+ ## Transport JSON Schema Export
1966
+
1967
+ `json-rest-schema` can also export a transport-facing JSON Schema document for adapters that want pre-handler validation.
1968
+
1969
+ ```javascript
1970
+ const userSchema = createSchema({
1971
+ id: { type: 'id', required: true },
1972
+ email: { type: 'string', required: true },
1973
+ age: { type: 'number', min: 18, defaultTo: 18 },
1974
+ status: { type: 'string', enum: ['draft', 'published'] }
1975
+ })
1976
+
1977
+ const createTransportSchema = userSchema.toJsonSchema()
1978
+ const patchTransportSchema = userSchema.toJsonSchema({ operation: 'patch' })
1979
+ ```
1980
+
1981
+ Key points:
1982
+
1983
+ * **Draft**: exports draft-07 JSON Schema.
1984
+ * **Operation-aware**: `operation: '<name>'` controls the `required` list and whether `defaultTo` is emitted.
1985
+ * **Compatibility**: `mode: 'create' | 'replace' | 'patch'` still works as shorthand for the built-in operations.
1986
+ * **Transport-facing**: the export is intended for JSON/Ajv/Fastify-style request validation, not for reproducing every in-process coercion path.
1987
+ * **Strict field shape**: `additionalProperties` defaults to `false` because runtime validation rejects unknown fields. Override it with `toJsonSchema({ additionalProperties: true })` if needed.
1988
+ * **Nested export**: schema-backed nested object contracts are hoisted into draft-07 `definitions` and referenced with `$ref`, so repeated and recursive graphs stay finite. Nested object fields inherit the active operation, while object schemas used as array items or object-map values are exported in `replace` mode.
1989
+ * **Recursive graph support**: runtime validation and `toJsonSchema()` both support self-recursive schema graphs. Direct self-recursive object fields point back to `#`, while recursive nested contracts are emitted through `definitions`.
1990
+ * **Opaque bags stay opaque**: `type: 'object'` plus `additionalProperties: true` exports as a permissive object field and does not invent child property rules.
1991
+ * **Single source of truth**: only rules owned by `json-rest-schema` are exported. External metadata keys from other layers are ignored.
1992
+ * **Passive metadata preserved**: schema-owned passive metadata such as `precision`, `scale`, `unsigned`, and `temporalPrecision` is preserved under `x-json-rest-schema.metadata`.
1993
+ * **Custom rules**: if a custom type or validator needs transport export support, attach a `toJsonSchema()` hook to the handler. If you register a custom validator without that hook, export fails loudly instead of silently drifting.
1994
+
1995
+ ### Worked nested export example
1996
+
1997
+ ```javascript
1998
+ const schema = createSchema({
1999
+ workspace: {
2000
+ type: 'object',
2001
+ required: true,
2002
+ schema: workspaceSummarySchema
2003
+ },
2004
+ roles: {
2005
+ type: 'array',
2006
+ items: roleSchema
2007
+ },
2008
+ metadata: {
2009
+ type: 'object',
2010
+ additionalProperties: true
2011
+ }
2012
+ })
2013
+ ```
2014
+
2015
+ Exporting `schema.toJsonSchema()` gives you:
2016
+
2017
+ * `workspace` as a `$ref` to a definition whose `required` fields still inherit the active operation
2018
+ * `roles.items` as a `$ref` to a nested object definition exported in `replace` mode
2019
+ * `metadata` as `{ type: 'object', additionalProperties: true }`
2020
+ * object maps as `{ type: 'object', additionalProperties: <value schema> }`
2021
+ * passthrough nested objects as validated `properties` plus `additionalProperties: true`
2022
+
2023
+ That means the transport export stays aligned with runtime semantics:
2024
+
2025
+ * nested objects behave like nested contracts even when the runtime schema graph is recursive
2026
+ * array object items behave like complete replacements
2027
+ * opaque bags stay opaque instead of pretending to be structured
2028
+
2029
+ ### Worked recursive export example
2030
+
2031
+ Using the same recursive `nodeSchema` from the `Recursive Schemas` chapter above:
2032
+
2033
+ ```javascript
2034
+ const transportSchema = nodeSchema.toJsonSchema()
2035
+ ```
2036
+
2037
+ Key recursive export behaviors:
2038
+
2039
+ * a direct self-recursive object field such as `parent` becomes a reference back to `#`
2040
+ * recursive nested contracts reached through array items or dynamic object values are hoisted into `definitions`
2041
+ * the exporter stays finite because it tracks schema graph nodes, not just call depth
2042
+
2043
+ For the `parent` field above, the transport shape is:
2044
+
2045
+ ```javascript
2046
+ {
2047
+ allOf: [
2048
+ {
2049
+ $ref: '#'
2050
+ }
2051
+ ],
2052
+ 'x-json-rest-schema': {
2053
+ castType: 'object'
2054
+ }
2055
+ }
2056
+ ```
2057
+
2058
+ For the `children.items` edge, the transport shape becomes a `$ref` into `definitions`, and that referenced definition points back to itself for deeper `children.items` recursion.
2059
+
2060
+ ---
2061
+
2062
+ ## Common REST Recipes
2063
+
2064
+ This section is intentionally practical. These are the shapes you are likely to define in a real API.
2065
+
2066
+ ### Recipe: create payload
2067
+
2068
+ ```javascript
2069
+ const createUserSchema = createSchema({
2070
+ email: { type: 'string', required: true, notEmpty: true, lowercase: true },
2071
+ displayName: { type: 'string', required: true, minLength: 2 },
2072
+ role: { type: 'string', defaultTo: 'member' },
2073
+ marketingOptIn: { type: 'boolean', defaultTo: false }
2074
+ })
2075
+ ```
2076
+
2077
+ Use it like this:
2078
+
2079
+ ```javascript
2080
+ const result = createUserSchema.create({
2081
+ email: ' ALEX@EXAMPLE.COM ',
2082
+ displayName: ' Alex '
2083
+ })
2084
+ ```
2085
+
2086
+ Result:
2087
+
2088
+ ```javascript
2089
+ {
2090
+ validatedObject: {
2091
+ email: 'alex@example.com',
2092
+ displayName: 'Alex',
2093
+ role: 'member',
2094
+ marketingOptIn: false
2095
+ },
2096
+ errors: {}
2097
+ }
2098
+ ```
2099
+
2100
+ Use this pattern when:
2101
+
2102
+ * the client is creating a new resource
2103
+ * missing `required` fields should fail
2104
+ * omitted defaults should be materialized
2105
+
2106
+ ### Recipe: patch payload
2107
+
2108
+ Use the same schema, but call `patch()`:
2109
+
2110
+ ```javascript
2111
+ const result = createUserSchema.patch({
2112
+ displayName: ' Updated Name '
2113
+ })
2114
+ ```
2115
+
2116
+ Result:
2117
+
2118
+ ```javascript
2119
+ {
2120
+ validatedObject: {
2121
+ displayName: 'Updated Name'
2122
+ },
2123
+ errors: {}
2124
+ }
2125
+ ```
2126
+
2127
+ Use this pattern when:
2128
+
2129
+ * the client is updating only a subset of fields
2130
+ * missing `required` fields should **not** fail just because they were omitted
2131
+ * defaults should **not** be invented during a patch
2132
+
2133
+ ### Recipe: nested detail response
2134
+
2135
+ This is a common “show one resource” response shape.
2136
+
2137
+ ```javascript
2138
+ const userSummarySchema = createSchema({
2139
+ id: { type: 'id', required: true },
2140
+ email: { type: 'string', required: true }
2141
+ })
2142
+
2143
+ const projectSummarySchema = createSchema({
2144
+ id: { type: 'id', required: true },
2145
+ slug: { type: 'string', required: true }
2146
+ })
2147
+
2148
+ const projectDetailSchema = createSchema({
2149
+ project: {
2150
+ type: 'object',
2151
+ required: true,
2152
+ schema: projectSummarySchema
2153
+ },
2154
+ owner: {
2155
+ type: 'object',
2156
+ required: true,
2157
+ schema: userSummarySchema
2158
+ },
2159
+ permissions: {
2160
+ type: 'array',
2161
+ required: true,
2162
+ items: { type: 'string', minLength: 1 }
2163
+ }
2164
+ })
2165
+ ```
2166
+
2167
+ Validate it with `create()` or `replace()` depending on your calling style:
2168
+
2169
+ ```javascript
2170
+ const result = projectDetailSchema.create({
2171
+ project: {
2172
+ id: '10',
2173
+ slug: ' api-redesign '
2174
+ },
2175
+ owner: {
2176
+ id: '7',
2177
+ email: 'owner@example.com'
2178
+ },
2179
+ permissions: ['read', 'write']
2180
+ })
2181
+ ```
2182
+
2183
+ Result:
2184
+
2185
+ ```javascript
2186
+ {
2187
+ validatedObject: {
2188
+ project: {
2189
+ id: 10,
2190
+ slug: 'api-redesign'
2191
+ },
2192
+ owner: {
2193
+ id: 7,
2194
+ email: 'owner@example.com'
2195
+ },
2196
+ permissions: ['read', 'write']
2197
+ },
2198
+ errors: {}
2199
+ }
2200
+ ```
2201
+
2202
+ ### Recipe: list response envelope
2203
+
2204
+ This library validates objects, so for list endpoints the usual pattern is an envelope object instead of a top-level array.
2205
+
2206
+ ```javascript
2207
+ const workspaceSummarySchema = createSchema({
2208
+ id: { type: 'id', required: true },
2209
+ slug: { type: 'string', required: true },
2210
+ ownerUserId: { type: 'id', required: true }
2211
+ })
2212
+
2213
+ const workspaceListSchema = createSchema({
2214
+ items: {
2215
+ type: 'array',
2216
+ required: true,
2217
+ items: workspaceSummarySchema
2218
+ },
2219
+ total: { type: 'integer', required: true, min: 0 }
2220
+ })
2221
+ ```
2222
+
2223
+ Example:
2224
+
2225
+ ```javascript
2226
+ const result = workspaceListSchema.create({
2227
+ items: [
2228
+ { id: '1', slug: 'alpha', ownerUserId: '7' },
2229
+ { id: '2', slug: 'beta', ownerUserId: '9' }
2230
+ ],
2231
+ total: '2'
2232
+ })
2233
+ ```
2234
+
2235
+ Result:
2236
+
2237
+ ```javascript
2238
+ {
2239
+ validatedObject: {
2240
+ items: [
2241
+ { id: 1, slug: 'alpha', ownerUserId: 7 },
2242
+ { id: 2, slug: 'beta', ownerUserId: 9 }
2243
+ ],
2244
+ total: 2
2245
+ },
2246
+ errors: {}
2247
+ }
2248
+ ```
2249
+
2250
+ ### Recipe: settings or metadata bag
2251
+
2252
+ When part of the payload belongs to another layer and should not be field-by-field validated here, use an opaque object bag.
2253
+
2254
+ ```javascript
2255
+ const updatePreferencesSchema = createSchema({
2256
+ userId: { type: 'id', required: true },
2257
+ preferences: {
2258
+ type: 'object',
2259
+ additionalProperties: true
2260
+ }
2261
+ })
2262
+ ```
2263
+
2264
+ Example:
2265
+
2266
+ ```javascript
2267
+ const result = updatePreferencesSchema.patch({
2268
+ preferences: {
2269
+ theme: 'dark',
2270
+ shortcuts: {
2271
+ save: 'cmd+s'
2272
+ },
2273
+ labs: ['new-sidebar']
2274
+ }
2275
+ })
2276
+ ```
2277
+
2278
+ Result:
2279
+
2280
+ ```javascript
2281
+ {
2282
+ validatedObject: {
2283
+ preferences: {
2284
+ theme: 'dark',
2285
+ shortcuts: {
2286
+ save: 'cmd+s'
2287
+ },
2288
+ labs: ['new-sidebar']
2289
+ }
2290
+ },
2291
+ errors: {}
2292
+ }
2293
+ ```
2294
+
2295
+ Use this only when you intentionally want:
2296
+
2297
+ * object-ness to be enforced
2298
+ * inner keys and values to pass through untouched
2299
+ * no nested validation contract owned by this library
2300
+
2301
+ ### Recipe: custom operation for an upsert-like boundary
2302
+
2303
+ Sometimes you want “validate the whole shape, apply defaults, but do not require every required field.”
2304
+
2305
+ ```javascript
2306
+ const accountSchema = createSchema({
2307
+ email: { type: 'string', required: true, lowercase: true },
2308
+ role: { type: 'string', defaultTo: 'member' }
2309
+ }, {
2310
+ operations: {
2311
+ upsert: {
2312
+ targetFields: 'schema',
2313
+ enforceRequired: false,
2314
+ applyDefaults: true,
2315
+ outputFields: 'validated'
2316
+ }
2317
+ }
2318
+ })
2319
+ ```
2320
+
2321
+ Example:
2322
+
2323
+ ```javascript
2324
+ accountSchema.upsert({})
2325
+ ```
2326
+
2327
+ Result:
2328
+
2329
+ ```javascript
2330
+ {
2331
+ validatedObject: {
2332
+ role: 'member'
2333
+ },
2334
+ errors: {}
2335
+ }
2336
+ ```
2337
+
2338
+ This is useful when the persistence layer or surrounding business logic decides whether the resource already exists, and the schema’s job is only to normalize a shared contract.
2339
+
2340
+ ---
2341
+
2342
+ ## Built-in Rules Reference
2343
+
2344
+ Here is a complete list of all types and validators available out of the box.
2345
+
2346
+ ### Built-in Types (Casting Rules)
2347
+
2348
+ A field's `type` defines how the input value will be converted before any other validation rules are run.
2349
+
2350
+ | Type Name | Description |
2351
+ |---|---|
2352
+ | `string` | Converts the input to a string. By default, it trims whitespace. Fails if the input is an object or array. |
2353
+ | `number` | Converts the input to a finite number. Empty strings, whitespace-only strings, and non-finite values fail validation. |
2354
+ | `integer` | Converts the input to a finite integer. Non-integer numeric values fail validation. |
2355
+ | `boolean`| Converts the input to a boolean using explicit true/false tokens such as `true`, `false`, `1`, `0`, `yes`, `no`, `on`, and `off`. Unknown values fail validation. |
2356
+ | `array` | Ensures the value is an array. If the input is not already an array, it will be wrapped in one (e.g., `'tag1'` becomes `['tag1']`). If `items` is present, every item is validated recursively. |
2357
+ | `id` | Parses the value into a positive safe integer identifier. It rejects non-canonical forms such as leading zeroes or strings with junk suffixes. |
2358
+ | `date` | Converts a valid date string or timestamp into a `Date` object normalized to midnight UTC for that calendar day. |
2359
+ | `dateTime`| Converts a valid date string or timestamp into a `Date` object. MySQL-style `YYYY-MM-DD HH:MM:SS` strings are interpreted as UTC. |
2360
+ | `timestamp`| Converts the input to a number, suitable for storing Unix timestamps. |
2361
+ | `time` | Converts the input to a normalized `HH:MM:SS` string. |
2362
+ | `serialize`| Converts any JavaScript value (including objects with circular references) into a single JSON-like string using `flatted`. |
2363
+ | `object` | Requires a plain object value. With `schema`, it becomes a nested object contract. With `values`, it becomes a typed object map. With `additionalProperties: true`, it becomes either an opaque pass-through object bag or a passthrough nested object when combined with `schema`. Without any of those options, it is simply a validated plain object value with no child-field rules. |
2364
+ | `blob` | Passes the value through unchanged. Intended for binary data like files that don't need casting. |
2365
+ | `file` | Converts primitive file-handle-like values to strings and rejects objects or arrays. |
2366
+ | `none` | The "identity" type. Passes the value through completely unchanged without any casting. |
2367
+
2368
+ ### Built-in Validators (Validation Parameters)
2369
+
2370
+ Validators are rules that run after a value has been cast to its proper type.
2371
+
2372
+ | Parameter | Description |
2373
+ |---|---|
2374
+ | `required: true` | The field must be present in the input object. Fails if the key is `undefined`. |
2375
+ | `minLength: <number>` | For `string` types, validates the minimum character length. |
2376
+ | `maxLength: <number>` | For `string` types, validates the maximum character length. |
2377
+ | `min: <number>` | For `number` types, validates the minimum value. |
2378
+ | `max: <number>` | For `number` types, validates the maximum value. |
2379
+ | `enum: <array>` | Restricts the field to one of the declared values. Exported as a standard JSON Schema `enum`. |
2380
+ | `notEmpty: true` | The field cannot be an empty string (`''`). This is different from `required`, as an empty string is still a defined value. |
2381
+ | `length: <number>`| For `string` types, it **truncates** the string to the specified length. For `number` types, it throws an error if the number of digits in the original input exceeds the specified length. |
2382
+ | `nullable: true`| Allows the value for this field to be `null`. By default, `null` is not allowed. |
2383
+ | `nullOnEmpty: true`| If the input value is an empty string (`''`), it will be cast to `null` before other validators run. |
2384
+ | `lowercase: true` | **Transforms** the string to all lowercase. |
2385
+ | `uppercase: true` | **Transforms** the string to all uppercase. |
2386
+ | `strictBoolean: true` | Restricts a `boolean` field so the original input must already be a real boolean. |
2387
+ | `validator: <function>`| Allows you to provide your own **synchronous** custom validation function for complex, one-off logic. |
2388
+ | `defaultTo: <value>` | If the field is not present in the input object, this value will be used in validation modes that apply defaults. Can be a value or a function that returns a value. |
2389
+ | `unsigned: true` | Passive schema metadata indicating non-negative numeric storage intent. Preserved in transport export metadata. |
2390
+ | `precision: <number>` | Passive schema metadata for decimal total digits. Preserved in transport export metadata. |
2391
+ | `scale: <number>` | Passive schema metadata for decimal fractional digits. Preserved in transport export metadata. |
2392
+ | `temporalPrecision: <number>` | Passive schema metadata for time or datetime fractional-second precision. Preserved in transport export metadata. |
2393
+
2394
+ ---
2395
+
2396
+ ## Extending the Library: Custom Rules
2397
+
2398
+ The real power of the library comes from its extensibility. You can easily add your own reusable types and validators. They must stay synchronous so the schema remains portable across environments. When you do this, you'll be passed a powerful `context` object.
2399
+
2400
+ ### The `context` Object
2401
+
2402
+ Every custom type and validator handler receives a `context` object as its only argument. This object is your toolbox, giving you all the information you need to perform complex logic. Here are its properties:
2403
+
2404
+ * **`value`**: The current value of the field being processed. Be aware that this value may have already been changed by the type handler or a previous validator.
2405
+ * **`fieldName`**: A string containing the name of the field currently being validated (e.g., `'username'`).
2406
+ * **`object`**: The entire object that is being validated. Its properties reflect the data *after* any casting or transformations have been applied up to this point. This is useful for cross-field validation.
2407
+ * **`valueBeforeCast`**: The original, raw value for the field, exactly as it was in the input object before any type casting occurred.
2408
+ * **`objectBeforeCast`**: The original, raw input object, before any modifications were made.
2409
+ * **`definition`**: The schema definition object for the current field. For a field defined as `{ type: 'string', min: 5 }`, this would be that exact object.
2410
+ * **`parameterName`**: *(For validators only)* The name of the validation rule currently being executed (e.g., `'min'`).
2411
+ * **`parameterValue`**: *(For validators only)* The value of the validation rule currently being executed (e.g., the `5` in `min: 5`).
2412
+ * **`mode`**: The active validation contract. Preserved as a compatibility alias for `operation`.
2413
+ * **`operation`**: The active validation contract name (for example `'create'`, `'patch'`, or a custom operation such as `'upsert'`).
2414
+ * **`fieldPresent`**: A boolean indicating whether the field was explicitly present in the original input object.
2415
+ * **`throwTypeError()`**: A function you can call to throw a standardized `TYPE_CAST_FAILED` error. This is the preferred way to report an error from within a type handler.
2416
+ * **`throwParamError(code, message, params)`**: A function you can call to throw a standardized validation error from within a validator. It accepts a custom error `code`, a `message`, and an optional `params` object.
2417
+
2418
+ ### Creating a Custom Validator
2419
+
2420
+ Let's say you frequently need to validate that a field is a URL-friendly "slug" (e.g., `my-blog-post`).
2421
+
2422
+ You can define a new validator once and use it anywhere.
2423
+
2424
+ Custom validators must be synchronous and local. If you need to ask a database or external API something, validate the payload first and run that business rule afterward in your service layer.
2425
+
2426
+ ```javascript
2427
+ // Do this once when your application starts
2428
+ createSchema.addValidator('slug', (context) => {
2429
+ const slugRegex = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
2430
+
2431
+ if (typeof context.value !== 'string' || !slugRegex.test(context.value)) {
2432
+ // Use the public context method to throw a standardized error
2433
+ context.throwParamError(
2434
+ 'INVALID_SLUG', // Custom error code
2435
+ 'Value must be a valid slug (e.g., my-post).'
2436
+ );
2437
+ }
2438
+ });
2439
+
2440
+ // Now you can use 'slug' in any schema!
2441
+ const articleSchema = createSchema({
2442
+ title: { type: 'string', required: true },
2443
+ slug: { type: 'string', required: true, slug: true } // Use it here
2444
+ });
2445
+ ```
2446
+
2447
+ ### Creating a Custom Type
2448
+
2449
+ A `Type` is used for casting. Imagine you want a `csv` type that takes a string like `"apple,banana,cherry"` and turns it into an array `['apple', 'banana', 'cherry']`.
2450
+
2451
+ ```javascript
2452
+ // Do this once when your application starts
2453
+ createSchema.addType('csv', (context) => {
2454
+ if (context.value === undefined || context.value === null) {
2455
+ return [];
2456
+ }
2457
+ if (typeof context.value !== 'string') {
2458
+ // Use the public context method to throw a standardized type error
2459
+ context.throwTypeError();
2460
+ }
2461
+ // Trim whitespace from each item
2462
+ return context.value.split(',').map(item => item.trim());
2463
+ });
2464
+
2465
+ // Now use your new 'csv' type
2466
+ const productSchema = createSchema({
2467
+ name: { type: 'string', required: true },
2468
+ tags: { type: 'csv' }
2469
+ });
2470
+
2471
+ const product = { name: 'Laptop', tags: ' electronics, computers, tech ' };
2472
+ const { validatedObject } = productSchema.create(product);
2473
+
2474
+ // validatedObject.tags will be: ['electronics', 'computers', 'tech']
2475
+ console.log(validatedObject.tags);
2476
+ ```
2477
+
2478
+ ### Creating an Isolated Schema Factory
2479
+
2480
+ Sometimes you want local custom types or validators without mutating the default `createSchema` factory for the whole application.
2481
+
2482
+ Use `createSchemaFactory()` for that:
2483
+
2484
+ ```javascript
2485
+ import { createSchemaFactory } from 'json-rest-schema'
2486
+
2487
+ const adminSchemaFactory = createSchemaFactory()
2488
+
2489
+ adminSchemaFactory.addType('admin-prefix-string', context => {
2490
+ return `admin-${context.value}`
2491
+ })
2492
+
2493
+ const adminSchema = adminSchemaFactory({
2494
+ name: { type: 'string', required: true },
2495
+ internalCode: { type: 'admin-prefix-string' }
2496
+ })
2497
+
2498
+ const { validatedObject } = adminSchema.create({
2499
+ name: ' Alice ',
2500
+ internalCode: 'ops'
2501
+ })
2502
+
2503
+ // Built-in handlers still work.
2504
+ console.log(validatedObject.name) // 'Alice'
2505
+
2506
+ // Custom handlers stay local to this factory.
2507
+ console.log(validatedObject.internalCode) // 'admin-ops'
2508
+ ```
2509
+
2510
+ `createSchemaFactory()` installs the built-in core handlers by default so it is usable out of the box.
2511
+
2512
+ If you really want a completely bare registry, make that explicit:
2513
+
2514
+ ```javascript
2515
+ import { createSchemaFactory } from 'json-rest-schema'
2516
+
2517
+ const bareFactory = createSchemaFactory({ installCore: false })
2518
+ ```
2519
+
2520
+ That mode is useful only when you intentionally want to provide every type and validator yourself.
2521
+
2522
+ ---
2523
+
2524
+ ## Advanced: Creating a Plugin
2525
+
2526
+ If you create a lot of custom types and validators for your project, you can bundle them into a single, reusable **Plugin**. A plugin is just an object with an `install` method.
2527
+
2528
+ ```javascript
2529
+ // my-custom-plugin.js
2530
+ const MyCustomPlugin = {
2531
+ install(manager) { // The 'manager' object has .addType and .addValidator
2532
+ manager.addType('csv', context => {
2533
+ if (context.value === undefined || context.value === null) return [];
2534
+ if (typeof context.value !== 'string') context.throwTypeError();
2535
+ return context.value.split(',').map(item => item.trim());
2536
+ });
2537
+
2538
+ manager.addValidator('slug', context => {
2539
+ const slugRegex = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
2540
+ if (typeof context.value !== 'string' || !slugRegex.test(context.value)) {
2541
+ context.throwParamError('INVALID_SLUG', 'Value must be a valid slug.');
2542
+ }
2543
+ });
2544
+ }
2545
+ };
2546
+
2547
+ export default MyCustomPlugin;
2548
+
2549
+ // in your main app file:
2550
+ import { createSchema } from 'json-rest-schema';
2551
+ import MyCustomPlugin from './my-custom-plugin.js';
2552
+
2553
+ // Install all your custom rules in one line!
2554
+ createSchema.use(MyCustomPlugin);
2555
+
2556
+ // Now 'slug' and 'csv' are available to all schemas.
2557
+ const mySchema = createSchema({
2558
+ tags: { type: 'csv' },
2559
+ pageUrl: { type: 'string', slug: true }
2560
+ });
2561
+ ```
2562
+
2563
+ This makes your custom rules portable and keeps your main application setup clean.
2564
+
2565
+ ---
2566
+
2567
+ ## Design Scope
2568
+
2569
+ `json-rest-schema` is intentionally **synchronous**. Shared schemas need to run the same way on the client and the server, so this library is scoped to:
2570
+
2571
+ * typing and casting
2572
+ * normalization
2573
+ * local field validation
2574
+ * local cross-field validation
2575
+
2576
+ It is **not** the place for database-backed uniqueness checks, external API lookups, or any other stateful async business rule. Put those checks in higher layers such as services, repositories, or actions after schema validation has produced a normalized payload.
2577
+
2578
+ `json-rest-schema` is also deliberately scoped to runtime validation and transformation. It does not prescribe a specific persistence layer. Treat the schemas you build with this library as the canonical description of your data when you design storage models, migrations, API responses, or documentation.
2579
+
2580
+ If you pair the library with a database toolkit (such as Knex), keep the tooling concerns separate: write migrations and models in the tool that best fits your project, then reuse the same field definitions inside `createSchema` so validation, casting, and persistence stay aligned.
2581
+
2582
+ > Looking for automation around database schema generation? See `FUTURE_MIGRATION_MODULE.md` for a high-level proposal of an optional companion package.