@vibesdotdev/config 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (620) hide show
  1. package/README.md +85 -0
  2. package/SPEC.md +71 -0
  3. package/dist/adapters/cli/flags.d.ts +75 -0
  4. package/dist/adapters/cli/flags.d.ts.map +1 -0
  5. package/dist/adapters/cli/flags.js +221 -0
  6. package/dist/adapters/cli/flags.js.map +1 -0
  7. package/dist/adapters/cli/index.d.ts +12 -0
  8. package/dist/adapters/cli/index.d.ts.map +1 -0
  9. package/dist/adapters/cli/index.js +9 -0
  10. package/dist/adapters/cli/index.js.map +1 -0
  11. package/dist/adapters/cli/mappings.d.ts +17 -0
  12. package/dist/adapters/cli/mappings.d.ts.map +1 -0
  13. package/dist/adapters/cli/mappings.js +32 -0
  14. package/dist/adapters/cli/mappings.js.map +1 -0
  15. package/dist/adapters/cli/prompts.d.ts +28 -0
  16. package/dist/adapters/cli/prompts.d.ts.map +1 -0
  17. package/dist/adapters/cli/prompts.js +55 -0
  18. package/dist/adapters/cli/prompts.js.map +1 -0
  19. package/dist/adapters/cli/schemas/flags.schema.d.ts +8 -0
  20. package/dist/adapters/cli/schemas/flags.schema.d.ts.map +1 -0
  21. package/dist/adapters/cli/schemas/flags.schema.js +2 -0
  22. package/dist/adapters/cli/schemas/flags.schema.js.map +1 -0
  23. package/dist/adapters/cli/schemas/mappings.schema.d.ts +2 -0
  24. package/dist/adapters/cli/schemas/mappings.schema.d.ts.map +1 -0
  25. package/dist/adapters/cli/schemas/mappings.schema.js +2 -0
  26. package/dist/adapters/cli/schemas/mappings.schema.js.map +1 -0
  27. package/dist/adapters/cli/schemas/prompts.schema.d.ts +5 -0
  28. package/dist/adapters/cli/schemas/prompts.schema.d.ts.map +1 -0
  29. package/dist/adapters/cli/schemas/prompts.schema.js +2 -0
  30. package/dist/adapters/cli/schemas/prompts.schema.js.map +1 -0
  31. package/dist/adapters/cli/schemas/wizard.schema.d.ts +19 -0
  32. package/dist/adapters/cli/schemas/wizard.schema.d.ts.map +1 -0
  33. package/dist/adapters/cli/schemas/wizard.schema.js +2 -0
  34. package/dist/adapters/cli/schemas/wizard.schema.js.map +1 -0
  35. package/dist/adapters/cli/wizard.d.ts +33 -0
  36. package/dist/adapters/cli/wizard.d.ts.map +1 -0
  37. package/dist/adapters/cli/wizard.js +77 -0
  38. package/dist/adapters/cli/wizard.js.map +1 -0
  39. package/dist/browser/index.d.ts +7 -0
  40. package/dist/browser/index.d.ts.map +1 -0
  41. package/dist/browser/index.js +4 -0
  42. package/dist/browser/index.js.map +1 -0
  43. package/dist/cli/settings.descriptor.d.ts +9 -0
  44. package/dist/cli/settings.descriptor.d.ts.map +1 -0
  45. package/dist/cli/settings.descriptor.js +18 -0
  46. package/dist/cli/settings.descriptor.js.map +1 -0
  47. package/dist/cli/types.d.ts +57 -0
  48. package/dist/cli/types.d.ts.map +1 -0
  49. package/dist/cli/types.js +9 -0
  50. package/dist/cli/types.js.map +1 -0
  51. package/dist/client/index.d.ts +19 -0
  52. package/dist/client/index.d.ts.map +1 -0
  53. package/dist/client/index.js +145 -0
  54. package/dist/client/index.js.map +1 -0
  55. package/dist/client/storage.d.ts +48 -0
  56. package/dist/client/storage.d.ts.map +1 -0
  57. package/dist/client/storage.js +46 -0
  58. package/dist/client/storage.js.map +1 -0
  59. package/dist/collection/collection.d.ts +46 -0
  60. package/dist/collection/collection.d.ts.map +1 -0
  61. package/dist/collection/collection.js +93 -0
  62. package/dist/collection/collection.js.map +1 -0
  63. package/dist/collection/index.d.ts +6 -0
  64. package/dist/collection/index.d.ts.map +1 -0
  65. package/dist/collection/index.js +5 -0
  66. package/dist/collection/index.js.map +1 -0
  67. package/dist/common/index.d.ts +7 -0
  68. package/dist/common/index.d.ts.map +1 -0
  69. package/dist/common/index.js +4 -0
  70. package/dist/common/index.js.map +1 -0
  71. package/dist/config.context.descriptor.d.ts +21 -0
  72. package/dist/config.context.descriptor.d.ts.map +1 -0
  73. package/dist/config.context.descriptor.js +11 -0
  74. package/dist/config.context.descriptor.js.map +1 -0
  75. package/dist/config.plugin.d.ts +15 -0
  76. package/dist/config.plugin.d.ts.map +1 -0
  77. package/dist/config.plugin.js +166 -0
  78. package/dist/config.plugin.js.map +1 -0
  79. package/dist/crud/base-types.d.ts +10 -0
  80. package/dist/crud/base-types.d.ts.map +1 -0
  81. package/dist/crud/base-types.js +10 -0
  82. package/dist/crud/base-types.js.map +1 -0
  83. package/dist/crud/index.d.ts +4 -0
  84. package/dist/crud/index.d.ts.map +1 -0
  85. package/dist/crud/index.js +2 -0
  86. package/dist/crud/index.js.map +1 -0
  87. package/dist/crud/schemas/base-types.schema.d.ts +19 -0
  88. package/dist/crud/schemas/base-types.schema.d.ts.map +1 -0
  89. package/dist/crud/schemas/base-types.schema.js +2 -0
  90. package/dist/crud/schemas/base-types.schema.js.map +1 -0
  91. package/dist/crud/schemas/shared.schema.d.ts +13 -0
  92. package/dist/crud/schemas/shared.schema.d.ts.map +1 -0
  93. package/dist/crud/schemas/shared.schema.js +2 -0
  94. package/dist/crud/schemas/shared.schema.js.map +1 -0
  95. package/dist/crud/shared.d.ts +8 -0
  96. package/dist/crud/shared.d.ts.map +1 -0
  97. package/dist/crud/shared.js +8 -0
  98. package/dist/crud/shared.js.map +1 -0
  99. package/dist/crud/types.d.ts +250 -0
  100. package/dist/crud/types.d.ts.map +1 -0
  101. package/dist/crud/types.js +22 -0
  102. package/dist/crud/types.js.map +1 -0
  103. package/dist/docs/environment.docs.descriptor.d.ts +4 -0
  104. package/dist/docs/environment.docs.descriptor.d.ts.map +1 -0
  105. package/dist/docs/environment.docs.descriptor.js +383 -0
  106. package/dist/docs/environment.docs.descriptor.js.map +1 -0
  107. package/dist/docs/manifests.docs.descriptor.d.ts +4 -0
  108. package/dist/docs/manifests.docs.descriptor.d.ts.map +1 -0
  109. package/dist/docs/manifests.docs.descriptor.js +503 -0
  110. package/dist/docs/manifests.docs.descriptor.js.map +1 -0
  111. package/dist/docs/validation.docs.descriptor.d.ts +4 -0
  112. package/dist/docs/validation.docs.descriptor.d.ts.map +1 -0
  113. package/dist/docs/validation.docs.descriptor.js +441 -0
  114. package/dist/docs/validation.docs.descriptor.js.map +1 -0
  115. package/dist/doctor.d.ts +42 -0
  116. package/dist/doctor.d.ts.map +1 -0
  117. package/dist/doctor.js +119 -0
  118. package/dist/doctor.js.map +1 -0
  119. package/dist/env.d.ts +28 -0
  120. package/dist/env.d.ts.map +1 -0
  121. package/dist/env.js +75 -0
  122. package/dist/env.js.map +1 -0
  123. package/dist/env.runtime.d.ts +19 -0
  124. package/dist/env.runtime.d.ts.map +1 -0
  125. package/dist/env.runtime.js +37 -0
  126. package/dist/env.runtime.js.map +1 -0
  127. package/dist/environment/current.d.ts +32 -0
  128. package/dist/environment/current.d.ts.map +1 -0
  129. package/dist/environment/current.js +91 -0
  130. package/dist/environment/current.js.map +1 -0
  131. package/dist/environment/environment.config.descriptor.d.ts +11 -0
  132. package/dist/environment/environment.config.descriptor.d.ts.map +1 -0
  133. package/dist/environment/environment.config.descriptor.js +51 -0
  134. package/dist/environment/environment.config.descriptor.js.map +1 -0
  135. package/dist/environment/environment.config.schema.d.ts +47 -0
  136. package/dist/environment/environment.config.schema.d.ts.map +1 -0
  137. package/dist/environment/environment.config.schema.js +19 -0
  138. package/dist/environment/environment.config.schema.js.map +1 -0
  139. package/dist/environment/environment.local.descriptor.d.ts +11 -0
  140. package/dist/environment/environment.local.descriptor.d.ts.map +1 -0
  141. package/dist/environment/environment.local.descriptor.js +42 -0
  142. package/dist/environment/environment.local.descriptor.js.map +1 -0
  143. package/dist/environment/environment.plugin.d.ts +9 -0
  144. package/dist/environment/environment.plugin.d.ts.map +1 -0
  145. package/dist/environment/environment.plugin.js +27 -0
  146. package/dist/environment/environment.plugin.js.map +1 -0
  147. package/dist/environment/environment.production.descriptor.d.ts +10 -0
  148. package/dist/environment/environment.production.descriptor.d.ts.map +1 -0
  149. package/dist/environment/environment.production.descriptor.js +37 -0
  150. package/dist/environment/environment.production.descriptor.js.map +1 -0
  151. package/dist/environment/environment.staging.descriptor.d.ts +11 -0
  152. package/dist/environment/environment.staging.descriptor.d.ts.map +1 -0
  153. package/dist/environment/environment.staging.descriptor.js +22 -0
  154. package/dist/environment/environment.staging.descriptor.js.map +1 -0
  155. package/dist/environment/index.d.ts +8 -0
  156. package/dist/environment/index.d.ts.map +1 -0
  157. package/dist/environment/index.js +9 -0
  158. package/dist/environment/index.js.map +1 -0
  159. package/dist/environment/kinds/environment.default.d.ts +23 -0
  160. package/dist/environment/kinds/environment.default.d.ts.map +1 -0
  161. package/dist/environment/kinds/environment.default.js +49 -0
  162. package/dist/environment/kinds/environment.default.js.map +1 -0
  163. package/dist/environment/kinds/environment.interface.d.ts +7 -0
  164. package/dist/environment/kinds/environment.interface.d.ts.map +1 -0
  165. package/dist/environment/kinds/environment.interface.js +7 -0
  166. package/dist/environment/kinds/environment.interface.js.map +1 -0
  167. package/dist/environment/kinds/environment.kind.d.ts +10 -0
  168. package/dist/environment/kinds/environment.kind.d.ts.map +1 -0
  169. package/dist/environment/kinds/environment.kind.js +57 -0
  170. package/dist/environment/kinds/environment.kind.js.map +1 -0
  171. package/dist/environment/kinds/environment.schema.d.ts +34 -0
  172. package/dist/environment/kinds/environment.schema.d.ts.map +1 -0
  173. package/dist/environment/kinds/environment.schema.js +46 -0
  174. package/dist/environment/kinds/environment.schema.js.map +1 -0
  175. package/dist/environment/kinds/index.d.ts +8 -0
  176. package/dist/environment/kinds/index.d.ts.map +1 -0
  177. package/dist/environment/kinds/index.js +7 -0
  178. package/dist/environment/kinds/index.js.map +1 -0
  179. package/dist/environment/kinds/schemas/environment.interface.schema.d.ts +11 -0
  180. package/dist/environment/kinds/schemas/environment.interface.schema.d.ts.map +1 -0
  181. package/dist/environment/kinds/schemas/environment.interface.schema.js +2 -0
  182. package/dist/environment/kinds/schemas/environment.interface.schema.js.map +1 -0
  183. package/dist/environment/kinds/schemas/environment.schema.d.ts +30 -0
  184. package/dist/environment/kinds/schemas/environment.schema.d.ts.map +1 -0
  185. package/dist/environment/kinds/schemas/environment.schema.js +2 -0
  186. package/dist/environment/kinds/schemas/environment.schema.js.map +1 -0
  187. package/dist/environment/schemas/current.schema.d.ts +20 -0
  188. package/dist/environment/schemas/current.schema.d.ts.map +1 -0
  189. package/dist/environment/schemas/current.schema.js +2 -0
  190. package/dist/environment/schemas/current.schema.js.map +1 -0
  191. package/dist/environment/schemas/environment.config.schema.d.ts +4 -0
  192. package/dist/environment/schemas/environment.config.schema.d.ts.map +1 -0
  193. package/dist/environment/schemas/environment.config.schema.js +2 -0
  194. package/dist/environment/schemas/environment.config.schema.js.map +1 -0
  195. package/dist/extensions/index.d.ts +8 -0
  196. package/dist/extensions/index.d.ts.map +1 -0
  197. package/dist/extensions/index.js +8 -0
  198. package/dist/extensions/index.js.map +1 -0
  199. package/dist/extensions/registry.d.ts +41 -0
  200. package/dist/extensions/registry.d.ts.map +1 -0
  201. package/dist/extensions/registry.js +142 -0
  202. package/dist/extensions/registry.js.map +1 -0
  203. package/dist/extensions/types.d.ts +101 -0
  204. package/dist/extensions/types.d.ts.map +1 -0
  205. package/dist/extensions/types.js +8 -0
  206. package/dist/extensions/types.js.map +1 -0
  207. package/dist/form/core/field-resolver.d.ts +42 -0
  208. package/dist/form/core/field-resolver.d.ts.map +1 -0
  209. package/dist/form/core/field-resolver.js +293 -0
  210. package/dist/form/core/field-resolver.js.map +1 -0
  211. package/dist/form/core/groups.d.ts +20 -0
  212. package/dist/form/core/groups.d.ts.map +1 -0
  213. package/dist/form/core/groups.js +69 -0
  214. package/dist/form/core/groups.js.map +1 -0
  215. package/dist/form/core/index.d.ts +8 -0
  216. package/dist/form/core/index.d.ts.map +1 -0
  217. package/dist/form/core/index.js +6 -0
  218. package/dist/form/core/index.js.map +1 -0
  219. package/dist/form/core/nested-utils.d.ts +40 -0
  220. package/dist/form/core/nested-utils.d.ts.map +1 -0
  221. package/dist/form/core/nested-utils.js +98 -0
  222. package/dist/form/core/nested-utils.js.map +1 -0
  223. package/dist/form/core/schemas/validation.schema.d.ts +9 -0
  224. package/dist/form/core/schemas/validation.schema.d.ts.map +1 -0
  225. package/dist/form/core/schemas/validation.schema.js +2 -0
  226. package/dist/form/core/schemas/validation.schema.js.map +1 -0
  227. package/dist/form/core/types.d.ts +103 -0
  228. package/dist/form/core/types.d.ts.map +1 -0
  229. package/dist/form/core/types.js +2 -0
  230. package/dist/form/core/types.js.map +1 -0
  231. package/dist/form/core/validation.d.ts +23 -0
  232. package/dist/form/core/validation.d.ts.map +1 -0
  233. package/dist/form/core/validation.js +103 -0
  234. package/dist/form/core/validation.js.map +1 -0
  235. package/dist/form/core/visibility.d.ts +37 -0
  236. package/dist/form/core/visibility.d.ts.map +1 -0
  237. package/dist/form/core/visibility.js +128 -0
  238. package/dist/form/core/visibility.js.map +1 -0
  239. package/dist/form/index.d.ts +8 -0
  240. package/dist/form/index.d.ts.map +1 -0
  241. package/dist/form/index.js +2 -0
  242. package/dist/form/index.js.map +1 -0
  243. package/dist/index.d.ts +18 -0
  244. package/dist/index.d.ts.map +1 -0
  245. package/dist/index.js +18 -0
  246. package/dist/index.js.map +1 -0
  247. package/dist/loader/cli/index.d.ts +61 -0
  248. package/dist/loader/cli/index.d.ts.map +1 -0
  249. package/dist/loader/cli/index.js +263 -0
  250. package/dist/loader/cli/index.js.map +1 -0
  251. package/dist/loader/cli/loaders.d.ts +13 -0
  252. package/dist/loader/cli/loaders.d.ts.map +1 -0
  253. package/dist/loader/cli/loaders.js +132 -0
  254. package/dist/loader/cli/loaders.js.map +1 -0
  255. package/dist/loader/cli/types.d.ts +152 -0
  256. package/dist/loader/cli/types.d.ts.map +1 -0
  257. package/dist/loader/cli/types.js +5 -0
  258. package/dist/loader/cli/types.js.map +1 -0
  259. package/dist/loader/cli/utils.d.ts +53 -0
  260. package/dist/loader/cli/utils.d.ts.map +1 -0
  261. package/dist/loader/cli/utils.js +198 -0
  262. package/dist/loader/cli/utils.js.map +1 -0
  263. package/dist/loader/client.d.ts +18 -0
  264. package/dist/loader/client.d.ts.map +1 -0
  265. package/dist/loader/client.js +109 -0
  266. package/dist/loader/client.js.map +1 -0
  267. package/dist/loader/discovery.d.ts +48 -0
  268. package/dist/loader/discovery.d.ts.map +1 -0
  269. package/dist/loader/discovery.js +253 -0
  270. package/dist/loader/discovery.js.map +1 -0
  271. package/dist/loader/file-loader.d.ts +17 -0
  272. package/dist/loader/file-loader.d.ts.map +1 -0
  273. package/dist/loader/file-loader.js +237 -0
  274. package/dist/loader/file-loader.js.map +1 -0
  275. package/dist/loader/index.d.ts +9 -0
  276. package/dist/loader/index.d.ts.map +1 -0
  277. package/dist/loader/index.js +8 -0
  278. package/dist/loader/index.js.map +1 -0
  279. package/dist/loader/index.server.d.ts +66 -0
  280. package/dist/loader/index.server.d.ts.map +1 -0
  281. package/dist/loader/index.server.js +256 -0
  282. package/dist/loader/index.server.js.map +1 -0
  283. package/dist/loader/merge.d.ts +88 -0
  284. package/dist/loader/merge.d.ts.map +1 -0
  285. package/dist/loader/merge.js +301 -0
  286. package/dist/loader/merge.js.map +1 -0
  287. package/dist/loader/schemas/merge.schema.d.ts +8 -0
  288. package/dist/loader/schemas/merge.schema.d.ts.map +1 -0
  289. package/dist/loader/schemas/merge.schema.js +2 -0
  290. package/dist/loader/schemas/merge.schema.js.map +1 -0
  291. package/dist/loader/schemas/validation.schema.d.ts +17 -0
  292. package/dist/loader/schemas/validation.schema.d.ts.map +1 -0
  293. package/dist/loader/schemas/validation.schema.js +2 -0
  294. package/dist/loader/schemas/validation.schema.js.map +1 -0
  295. package/dist/loader/server.d.ts +3 -0
  296. package/dist/loader/server.d.ts.map +1 -0
  297. package/dist/loader/server.js +2 -0
  298. package/dist/loader/server.js.map +1 -0
  299. package/dist/loader/types.d.ts +136 -0
  300. package/dist/loader/types.d.ts.map +1 -0
  301. package/dist/loader/types.js +24 -0
  302. package/dist/loader/types.js.map +1 -0
  303. package/dist/loader/validation.d.ts +59 -0
  304. package/dist/loader/validation.d.ts.map +1 -0
  305. package/dist/loader/validation.js +218 -0
  306. package/dist/loader/validation.js.map +1 -0
  307. package/dist/manifest/builder.d.ts +172 -0
  308. package/dist/manifest/builder.d.ts.map +1 -0
  309. package/dist/manifest/builder.js +336 -0
  310. package/dist/manifest/builder.js.map +1 -0
  311. package/dist/manifest/config-manifest.d.ts +199 -0
  312. package/dist/manifest/config-manifest.d.ts.map +1 -0
  313. package/dist/manifest/config-manifest.js +388 -0
  314. package/dist/manifest/config-manifest.js.map +1 -0
  315. package/dist/manifest/index.d.ts +10 -0
  316. package/dist/manifest/index.d.ts.map +1 -0
  317. package/dist/manifest/index.js +20 -0
  318. package/dist/manifest/index.js.map +1 -0
  319. package/dist/manifest/schema.d.ts +460 -0
  320. package/dist/manifest/schema.d.ts.map +1 -0
  321. package/dist/manifest/schema.js +187 -0
  322. package/dist/manifest/schema.js.map +1 -0
  323. package/dist/manifest/schemas/builder.schema.d.ts +20 -0
  324. package/dist/manifest/schemas/builder.schema.d.ts.map +1 -0
  325. package/dist/manifest/schemas/builder.schema.js +2 -0
  326. package/dist/manifest/schemas/builder.schema.js.map +1 -0
  327. package/dist/manifest/schemas/config-manifest.schema.d.ts +2 -0
  328. package/dist/manifest/schemas/config-manifest.schema.d.ts.map +1 -0
  329. package/dist/manifest/schemas/config-manifest.schema.js +2 -0
  330. package/dist/manifest/schemas/config-manifest.schema.js.map +1 -0
  331. package/dist/manifest/schemas/schema.schema.d.ts +83 -0
  332. package/dist/manifest/schemas/schema.schema.d.ts.map +1 -0
  333. package/dist/manifest/schemas/schema.schema.js +2 -0
  334. package/dist/manifest/schemas/schema.schema.js.map +1 -0
  335. package/dist/manifest/types.d.ts +563 -0
  336. package/dist/manifest/types.d.ts.map +1 -0
  337. package/dist/manifest/types.js +9 -0
  338. package/dist/manifest/types.js.map +1 -0
  339. package/dist/routing/index.d.ts +29 -0
  340. package/dist/routing/index.d.ts.map +1 -0
  341. package/dist/routing/index.js +35 -0
  342. package/dist/routing/index.js.map +1 -0
  343. package/dist/routing/merge.d.ts +164 -0
  344. package/dist/routing/merge.d.ts.map +1 -0
  345. package/dist/routing/merge.js +460 -0
  346. package/dist/routing/merge.js.map +1 -0
  347. package/dist/routing/registry.d.ts +145 -0
  348. package/dist/routing/registry.d.ts.map +1 -0
  349. package/dist/routing/registry.js +459 -0
  350. package/dist/routing/registry.js.map +1 -0
  351. package/dist/routing/schemas/merge.schema.d.ts +5 -0
  352. package/dist/routing/schemas/merge.schema.d.ts.map +1 -0
  353. package/dist/routing/schemas/merge.schema.js +2 -0
  354. package/dist/routing/schemas/merge.schema.js.map +1 -0
  355. package/dist/routing/types.d.ts +358 -0
  356. package/dist/routing/types.d.ts.map +1 -0
  357. package/dist/routing/types.js +89 -0
  358. package/dist/routing/types.js.map +1 -0
  359. package/dist/schema/extend-zod.d.ts +137 -0
  360. package/dist/schema/extend-zod.d.ts.map +1 -0
  361. package/dist/schema/extend-zod.js +243 -0
  362. package/dist/schema/extend-zod.js.map +1 -0
  363. package/dist/schema/index.d.ts +9 -0
  364. package/dist/schema/index.d.ts.map +1 -0
  365. package/dist/schema/index.js +10 -0
  366. package/dist/schema/index.js.map +1 -0
  367. package/dist/schema/references.d.ts +9 -0
  368. package/dist/schema/references.d.ts.map +1 -0
  369. package/dist/schema/references.js +9 -0
  370. package/dist/schema/references.js.map +1 -0
  371. package/dist/schema/resolver.d.ts +45 -0
  372. package/dist/schema/resolver.d.ts.map +1 -0
  373. package/dist/schema/resolver.js +267 -0
  374. package/dist/schema/resolver.js.map +1 -0
  375. package/dist/schema/schemas/extend-zod.schema.d.ts +16 -0
  376. package/dist/schema/schemas/extend-zod.schema.d.ts.map +1 -0
  377. package/dist/schema/schemas/extend-zod.schema.js +2 -0
  378. package/dist/schema/schemas/extend-zod.schema.js.map +1 -0
  379. package/dist/schema/schemas/references.schema.d.ts +70 -0
  380. package/dist/schema/schemas/references.schema.d.ts.map +1 -0
  381. package/dist/schema/schemas/references.schema.js +2 -0
  382. package/dist/schema/schemas/references.schema.js.map +1 -0
  383. package/dist/schemas/collection.d.ts +31 -0
  384. package/dist/schemas/collection.d.ts.map +1 -0
  385. package/dist/schemas/collection.js +22 -0
  386. package/dist/schemas/collection.js.map +1 -0
  387. package/dist/schemas/config-manifest-descriptor.d.ts +495 -0
  388. package/dist/schemas/config-manifest-descriptor.d.ts.map +1 -0
  389. package/dist/schemas/config-manifest-descriptor.js +210 -0
  390. package/dist/schemas/config-manifest-descriptor.js.map +1 -0
  391. package/dist/schemas/config-registry-state.d.ts +8 -0
  392. package/dist/schemas/config-registry-state.d.ts.map +1 -0
  393. package/dist/schemas/config-registry-state.js +6 -0
  394. package/dist/schemas/config-registry-state.js.map +1 -0
  395. package/dist/schemas/doctor.schema.d.ts +25 -0
  396. package/dist/schemas/doctor.schema.d.ts.map +1 -0
  397. package/dist/schemas/doctor.schema.js +2 -0
  398. package/dist/schemas/doctor.schema.js.map +1 -0
  399. package/dist/schemas/index.d.ts +8 -0
  400. package/dist/schemas/index.d.ts.map +1 -0
  401. package/dist/schemas/index.js +21 -0
  402. package/dist/schemas/index.js.map +1 -0
  403. package/dist/server/index.d.ts +5 -0
  404. package/dist/server/index.d.ts.map +1 -0
  405. package/dist/server/index.js +4 -0
  406. package/dist/server/index.js.map +1 -0
  407. package/dist/services/config-accessor.d.ts +40 -0
  408. package/dist/services/config-accessor.d.ts.map +1 -0
  409. package/dist/services/config-accessor.js +180 -0
  410. package/dist/services/config-accessor.js.map +1 -0
  411. package/dist/services/config-storage/index.d.ts +8 -0
  412. package/dist/services/config-storage/index.d.ts.map +1 -0
  413. package/dist/services/config-storage/index.js +7 -0
  414. package/dist/services/config-storage/index.js.map +1 -0
  415. package/dist/services/config-storage/service.d.ts +63 -0
  416. package/dist/services/config-storage/service.d.ts.map +1 -0
  417. package/dist/services/config-storage/service.js +234 -0
  418. package/dist/services/config-storage/service.js.map +1 -0
  419. package/dist/services/config.d.ts +3 -0
  420. package/dist/services/config.d.ts.map +1 -0
  421. package/dist/services/config.js +30 -0
  422. package/dist/services/config.js.map +1 -0
  423. package/dist/services/encryption.d.ts +114 -0
  424. package/dist/services/encryption.d.ts.map +1 -0
  425. package/dist/services/encryption.js +232 -0
  426. package/dist/services/encryption.js.map +1 -0
  427. package/dist/services/index.d.ts +12 -0
  428. package/dist/services/index.d.ts.map +1 -0
  429. package/dist/services/index.js +16 -0
  430. package/dist/services/index.js.map +1 -0
  431. package/dist/services/loader/loader.descriptor.d.ts +103 -0
  432. package/dist/services/loader/loader.descriptor.d.ts.map +1 -0
  433. package/dist/services/loader/loader.descriptor.js +60 -0
  434. package/dist/services/loader/loader.descriptor.js.map +1 -0
  435. package/dist/services/loader/loader.impl.cloud.d.ts +55 -0
  436. package/dist/services/loader/loader.impl.cloud.d.ts.map +1 -0
  437. package/dist/services/loader/loader.impl.cloud.js +182 -0
  438. package/dist/services/loader/loader.impl.cloud.js.map +1 -0
  439. package/dist/services/loader/loader.impl.consumer.d.ts +48 -0
  440. package/dist/services/loader/loader.impl.consumer.d.ts.map +1 -0
  441. package/dist/services/loader/loader.impl.consumer.js +175 -0
  442. package/dist/services/loader/loader.impl.consumer.js.map +1 -0
  443. package/dist/services/loader/loader.impl.consumer.local-first.d.ts +59 -0
  444. package/dist/services/loader/loader.impl.consumer.local-first.d.ts.map +1 -0
  445. package/dist/services/loader/loader.impl.consumer.local-first.js +347 -0
  446. package/dist/services/loader/loader.impl.consumer.local-first.js.map +1 -0
  447. package/dist/services/manifest-utils.d.ts +47 -0
  448. package/dist/services/manifest-utils.d.ts.map +1 -0
  449. package/dist/services/manifest-utils.js +105 -0
  450. package/dist/services/manifest-utils.js.map +1 -0
  451. package/dist/services/schemas/config-accessor.schema.d.ts +10 -0
  452. package/dist/services/schemas/config-accessor.schema.d.ts.map +1 -0
  453. package/dist/services/schemas/config-accessor.schema.js +2 -0
  454. package/dist/services/schemas/config-accessor.schema.js.map +1 -0
  455. package/dist/services/schemas/encryption.schema.d.ts +22 -0
  456. package/dist/services/schemas/encryption.schema.d.ts.map +1 -0
  457. package/dist/services/schemas/encryption.schema.js +2 -0
  458. package/dist/services/schemas/encryption.schema.js.map +1 -0
  459. package/dist/services/schemas/manifest-utils.schema.d.ts +4 -0
  460. package/dist/services/schemas/manifest-utils.schema.d.ts.map +1 -0
  461. package/dist/services/schemas/manifest-utils.schema.js +2 -0
  462. package/dist/services/schemas/manifest-utils.schema.js.map +1 -0
  463. package/dist/settings/assemble.d.ts +28 -0
  464. package/dist/settings/assemble.d.ts.map +1 -0
  465. package/dist/settings/assemble.js +30 -0
  466. package/dist/settings/assemble.js.map +1 -0
  467. package/dist/settings/index.d.ts +10 -0
  468. package/dist/settings/index.d.ts.map +1 -0
  469. package/dist/settings/index.js +10 -0
  470. package/dist/settings/index.js.map +1 -0
  471. package/dist/settings/settings-section.schema.d.ts +49 -0
  472. package/dist/settings/settings-section.schema.d.ts.map +1 -0
  473. package/dist/settings/settings-section.schema.js +70 -0
  474. package/dist/settings/settings-section.schema.js.map +1 -0
  475. package/dist/storage/adapter.d.ts +11 -0
  476. package/dist/storage/adapter.d.ts.map +1 -0
  477. package/dist/storage/adapter.js +8 -0
  478. package/dist/storage/adapter.js.map +1 -0
  479. package/dist/storage/index.d.ts +8 -0
  480. package/dist/storage/index.d.ts.map +1 -0
  481. package/dist/storage/index.js +8 -0
  482. package/dist/storage/index.js.map +1 -0
  483. package/dist/storage/schemas.d.ts +257 -0
  484. package/dist/storage/schemas.d.ts.map +1 -0
  485. package/dist/storage/schemas.js +179 -0
  486. package/dist/storage/schemas.js.map +1 -0
  487. package/dist/storage/types.d.ts +74 -0
  488. package/dist/storage/types.d.ts.map +1 -0
  489. package/dist/storage/types.js +7 -0
  490. package/dist/storage/types.js.map +1 -0
  491. package/dist/system-constants.d.ts +95 -0
  492. package/dist/system-constants.d.ts.map +1 -0
  493. package/dist/system-constants.js +110 -0
  494. package/dist/system-constants.js.map +1 -0
  495. package/package.json +417 -0
  496. package/src/adapters/cli/flags.ts +260 -0
  497. package/src/adapters/cli/index.ts +24 -0
  498. package/src/adapters/cli/mappings.ts +43 -0
  499. package/src/adapters/cli/prompts.ts +70 -0
  500. package/src/adapters/cli/schemas/flags.schema.ts +8 -0
  501. package/src/adapters/cli/schemas/mappings.schema.ts +3 -0
  502. package/src/adapters/cli/schemas/prompts.schema.ts +4 -0
  503. package/src/adapters/cli/schemas/wizard.schema.ts +21 -0
  504. package/src/adapters/cli/wizard.ts +106 -0
  505. package/src/adapters/web/components/ManifestForm.svelte +817 -0
  506. package/src/browser/index.ts +86 -0
  507. package/src/cli/settings.descriptor.ts +23 -0
  508. package/src/cli/types.ts +59 -0
  509. package/src/client/index.ts +169 -0
  510. package/src/client/storage.ts +76 -0
  511. package/src/collection/collection.ts +121 -0
  512. package/src/collection/index.ts +6 -0
  513. package/src/common/index.ts +86 -0
  514. package/src/config.context.descriptor.ts +12 -0
  515. package/src/config.plugin.ts +214 -0
  516. package/src/crud/base-types.ts +10 -0
  517. package/src/crud/index.ts +15 -0
  518. package/src/crud/schemas/base-types.schema.ts +20 -0
  519. package/src/crud/schemas/shared.schema.ts +14 -0
  520. package/src/crud/shared.ts +8 -0
  521. package/src/crud/types.ts +299 -0
  522. package/src/docs/environment.docs.descriptor.ts +385 -0
  523. package/src/docs/manifests.docs.descriptor.ts +505 -0
  524. package/src/docs/validation.docs.descriptor.ts +443 -0
  525. package/src/doctor.ts +143 -0
  526. package/src/env.runtime.ts +49 -0
  527. package/src/env.ts +91 -0
  528. package/src/environment/current.ts +108 -0
  529. package/src/environment/environment.config.descriptor.ts +60 -0
  530. package/src/environment/environment.config.schema.ts +24 -0
  531. package/src/environment/environment.local.descriptor.ts +45 -0
  532. package/src/environment/environment.plugin.ts +31 -0
  533. package/src/environment/environment.production.descriptor.ts +40 -0
  534. package/src/environment/environment.staging.descriptor.ts +25 -0
  535. package/src/environment/index.ts +22 -0
  536. package/src/environment/kinds/environment.default.ts +57 -0
  537. package/src/environment/kinds/environment.interface.ts +10 -0
  538. package/src/environment/kinds/environment.kind.ts +69 -0
  539. package/src/environment/kinds/environment.schema.ts +57 -0
  540. package/src/environment/kinds/index.ts +8 -0
  541. package/src/environment/kinds/schemas/environment.interface.schema.ts +11 -0
  542. package/src/environment/kinds/schemas/environment.schema.ts +24 -0
  543. package/src/environment/schemas/current.schema.ts +21 -0
  544. package/src/environment/schemas/environment.config.schema.ts +3 -0
  545. package/src/extensions/index.ts +26 -0
  546. package/src/extensions/registry.ts +179 -0
  547. package/src/extensions/types.ts +123 -0
  548. package/src/form/core/field-resolver.ts +380 -0
  549. package/src/form/core/groups.ts +96 -0
  550. package/src/form/core/index.ts +41 -0
  551. package/src/form/core/nested-utils.ts +115 -0
  552. package/src/form/core/schemas/validation.schema.ts +9 -0
  553. package/src/form/core/types.ts +115 -0
  554. package/src/form/core/validation.ts +137 -0
  555. package/src/form/core/visibility.ts +172 -0
  556. package/src/form/index.ts +36 -0
  557. package/src/index.ts +69 -0
  558. package/src/js-yaml.d.ts +4 -0
  559. package/src/loader/cli/index.ts +386 -0
  560. package/src/loader/cli/loaders.ts +153 -0
  561. package/src/loader/cli/types.ts +181 -0
  562. package/src/loader/cli/utils.ts +236 -0
  563. package/src/loader/client.ts +140 -0
  564. package/src/loader/discovery.ts +291 -0
  565. package/src/loader/file-loader.ts +262 -0
  566. package/src/loader/index.server.ts +389 -0
  567. package/src/loader/index.ts +18 -0
  568. package/src/loader/merge.ts +366 -0
  569. package/src/loader/schemas/merge.schema.ts +8 -0
  570. package/src/loader/schemas/validation.schema.ts +18 -0
  571. package/src/loader/server.ts +15 -0
  572. package/src/loader/types.ts +142 -0
  573. package/src/loader/validation.ts +261 -0
  574. package/src/manifest/builder.ts +452 -0
  575. package/src/manifest/config-manifest.ts +482 -0
  576. package/src/manifest/index.ts +92 -0
  577. package/src/manifest/schema.ts +249 -0
  578. package/src/manifest/schemas/builder.schema.ts +33 -0
  579. package/src/manifest/schemas/config-manifest.schema.ts +1 -0
  580. package/src/manifest/schemas/schema.schema.ts +99 -0
  581. package/src/manifest/types.ts +726 -0
  582. package/src/routing/index.ts +105 -0
  583. package/src/routing/merge.ts +589 -0
  584. package/src/routing/registry.ts +595 -0
  585. package/src/routing/schemas/merge.schema.ts +6 -0
  586. package/src/routing/types.ts +470 -0
  587. package/src/schema/extend-zod.ts +289 -0
  588. package/src/schema/index.ts +44 -0
  589. package/src/schema/references.ts +21 -0
  590. package/src/schema/resolver.ts +343 -0
  591. package/src/schema/schemas/extend-zod.schema.ts +16 -0
  592. package/src/schema/schemas/references.schema.ts +86 -0
  593. package/src/schemas/collection.ts +38 -0
  594. package/src/schemas/config-manifest-descriptor.ts +259 -0
  595. package/src/schemas/config-registry-state.ts +13 -0
  596. package/src/schemas/doctor.schema.ts +27 -0
  597. package/src/schemas/index.ts +53 -0
  598. package/src/server/index.ts +4 -0
  599. package/src/services/config-accessor.ts +218 -0
  600. package/src/services/config-storage/index.ts +8 -0
  601. package/src/services/config-storage/service.ts +355 -0
  602. package/src/services/config.ts +37 -0
  603. package/src/services/encryption.ts +260 -0
  604. package/src/services/index.ts +34 -0
  605. package/src/services/loader/loader.descriptor.ts +96 -0
  606. package/src/services/loader/loader.impl.cloud.ts +214 -0
  607. package/src/services/loader/loader.impl.consumer.local-first.ts +417 -0
  608. package/src/services/loader/loader.impl.consumer.ts +213 -0
  609. package/src/services/manifest-utils.ts +119 -0
  610. package/src/services/schemas/config-accessor.schema.ts +11 -0
  611. package/src/services/schemas/encryption.schema.ts +23 -0
  612. package/src/services/schemas/manifest-utils.schema.ts +4 -0
  613. package/src/settings/assemble.ts +46 -0
  614. package/src/settings/index.ts +19 -0
  615. package/src/settings/settings-section.schema.ts +84 -0
  616. package/src/storage/adapter.ts +12 -0
  617. package/src/storage/index.ts +48 -0
  618. package/src/storage/schemas.ts +215 -0
  619. package/src/storage/types.ts +88 -0
  620. package/src/system-constants.ts +121 -0
@@ -0,0 +1,595 @@
1
+ /**
2
+ * Variant Registry
3
+ *
4
+ * Generic registry for manifest variants with lazy loading support.
5
+ * Can be used for providers, agents, or any discriminated config type.
6
+ */
7
+
8
+ import {
9
+ type ManifestVariant,
10
+ type ManifestRouting,
11
+ type ResolvedVariant,
12
+ type NestedRouting,
13
+ type ResolvedNestedVariant,
14
+ type ActiveNestedVariant,
15
+ hasLazyVariants,
16
+ hasEagerVariants,
17
+ hasNestedLazyVariants,
18
+ hasNestedEagerVariants,
19
+ getNestedDiscriminatorPath,
20
+ getNestedEnablePath
21
+ } from './types.ts';
22
+
23
+ // Registry State
24
+
25
+ /**
26
+ * Internal registry state for a specific manifest's variants
27
+ */
28
+ interface RegistryState {
29
+ /** Loaded variants map */
30
+ variants: Map<string, ManifestVariant>;
31
+ /** Whether lazy variants have been loaded */
32
+ loaded: boolean;
33
+ /** Loading promise (for deduplication) */
34
+ loadingPromise?: Promise<void>;
35
+ }
36
+
37
+ /**
38
+ * Global registry state keyed by manifest ID
39
+ */
40
+ const registryState = new Map<string, RegistryState>();
41
+
42
+ // Registry Functions
43
+
44
+ /**
45
+ * Get or create registry state for a manifest
46
+ */
47
+ function getState(manifestId: string): RegistryState {
48
+ let state = registryState.get(manifestId);
49
+ if (!state) {
50
+ state = {
51
+ variants: new Map(),
52
+ loaded: false
53
+ };
54
+ registryState.set(manifestId, state);
55
+ }
56
+ return state;
57
+ }
58
+
59
+ /**
60
+ * Register a variant for a manifest
61
+ *
62
+ * @param manifestId - The manifest this variant belongs to
63
+ * @param variant - The variant to register
64
+ */
65
+ export function registerVariant(manifestId: string, variant: ManifestVariant): void {
66
+ const state = getState(manifestId);
67
+ state.variants.set(variant.id, variant);
68
+ }
69
+
70
+ /**
71
+ * Register multiple variants for a manifest
72
+ *
73
+ * @param manifestId - The manifest these variants belong to
74
+ * @param variants - Array of variants to register
75
+ */
76
+ export function registerVariants(manifestId: string, variants: ManifestVariant[]): void {
77
+ const state = getState(manifestId);
78
+ for (const variant of variants) {
79
+ state.variants.set(variant.id, variant);
80
+ }
81
+ }
82
+
83
+ /**
84
+ * Get a specific variant by ID
85
+ *
86
+ * @param manifestId - The manifest to look up
87
+ * @param variantId - The variant ID (discriminator value)
88
+ * @returns The variant or undefined
89
+ */
90
+ export function getVariant(manifestId: string, variantId: string): ManifestVariant | undefined {
91
+ const state = getState(manifestId);
92
+ return state.variants.get(variantId);
93
+ }
94
+
95
+ /**
96
+ * Get all registered variants for a manifest
97
+ *
98
+ * @param manifestId - The manifest to look up
99
+ * @returns Map of variants keyed by ID
100
+ */
101
+ export function getAllVariants(manifestId: string): Map<string, ManifestVariant> {
102
+ const state = getState(manifestId);
103
+ return new Map(state.variants);
104
+ }
105
+
106
+ /**
107
+ * Check if a variant is registered
108
+ *
109
+ * @param manifestId - The manifest to check
110
+ * @param variantId - The variant ID to check
111
+ * @returns Whether the variant is registered
112
+ */
113
+ export function hasVariant(manifestId: string, variantId: string): boolean {
114
+ const state = getState(manifestId);
115
+ return state.variants.has(variantId);
116
+ }
117
+
118
+ /**
119
+ * Clear all variants for a manifest
120
+ *
121
+ * @param manifestId - The manifest to clear
122
+ */
123
+ export function clearVariants(manifestId: string): void {
124
+ const state = getState(manifestId);
125
+ state.variants.clear();
126
+ state.loaded = false;
127
+ state.loadingPromise = undefined;
128
+ }
129
+
130
+ /**
131
+ * Clear the entire registry (useful for testing)
132
+ */
133
+ export function clearRegistry(): void {
134
+ registryState.clear();
135
+ }
136
+
137
+ // Routing Integration
138
+
139
+ /**
140
+ * Load variants from a routing configuration
141
+ * Handles both eager and lazy loading, with deduplication
142
+ *
143
+ * @param manifestId - The manifest ID
144
+ * @param routing - The routing configuration
145
+ */
146
+ export async function loadVariantsFromRouting(
147
+ manifestId: string,
148
+ routing: ManifestRouting
149
+ ): Promise<void> {
150
+ const state = getState(manifestId);
151
+
152
+ // Already loaded
153
+ if (state.loaded) {
154
+ return;
155
+ }
156
+
157
+ // Loading in progress - wait for it
158
+ if (state.loadingPromise) {
159
+ return state.loadingPromise;
160
+ }
161
+
162
+ // Eager variants - just copy them
163
+ if (hasEagerVariants(routing)) {
164
+ for (const [id, variant] of routing.variants) {
165
+ state.variants.set(id, variant);
166
+ }
167
+ state.loaded = true;
168
+ return;
169
+ }
170
+
171
+ // Lazy variants - load them
172
+ if (hasLazyVariants(routing)) {
173
+ state.loadingPromise = (async () => {
174
+ try {
175
+ const loadedVariants = await routing.variants();
176
+ for (const [id, variant] of loadedVariants) {
177
+ state.variants.set(id, variant);
178
+ }
179
+ state.loaded = true;
180
+ } finally {
181
+ state.loadingPromise = undefined;
182
+ }
183
+ })();
184
+
185
+ return state.loadingPromise;
186
+ }
187
+ }
188
+
189
+ /**
190
+ * Resolve a variant from routing based on discriminator value
191
+ *
192
+ * @param manifestId - The manifest ID
193
+ * @param routing - The routing configuration
194
+ * @param discriminatorValue - The current value of the discriminator field
195
+ * @returns Resolved variant information
196
+ */
197
+ export async function resolveVariant<
198
+ TConfig extends Record<string, unknown> = Record<string, unknown>
199
+ >(
200
+ manifestId: string,
201
+ routing: ManifestRouting,
202
+ discriminatorValue: string
203
+ ): Promise<ResolvedVariant<TConfig>> {
204
+ // Ensure variants are loaded
205
+ await loadVariantsFromRouting(manifestId, routing);
206
+
207
+ const state = getState(manifestId);
208
+ const variant = state.variants.get(discriminatorValue) as ManifestVariant<TConfig> | undefined;
209
+
210
+ if (variant) {
211
+ return {
212
+ variant,
213
+ found: true,
214
+ discriminatorValue,
215
+ usedFallback: false
216
+ };
217
+ }
218
+
219
+ // Try fallback
220
+ if (routing.fallback) {
221
+ return {
222
+ variant: routing.fallback as ManifestVariant<TConfig>,
223
+ found: true,
224
+ discriminatorValue,
225
+ usedFallback: true
226
+ };
227
+ }
228
+
229
+ return {
230
+ variant: undefined,
231
+ found: false,
232
+ discriminatorValue,
233
+ usedFallback: false
234
+ };
235
+ }
236
+
237
+ /**
238
+ * Synchronously get a variant (only works if already loaded)
239
+ * Use this when you know variants have been pre-loaded
240
+ *
241
+ * @param manifestId - The manifest ID
242
+ * @param routing - The routing configuration
243
+ * @param discriminatorValue - The current value of the discriminator field
244
+ * @returns The variant or undefined
245
+ */
246
+ export function resolveVariantSync<
247
+ TConfig extends Record<string, unknown> = Record<string, unknown>
248
+ >(
249
+ manifestId: string,
250
+ routing: ManifestRouting,
251
+ discriminatorValue: string
252
+ ): ManifestVariant<TConfig> | undefined {
253
+ const state = getState(manifestId);
254
+
255
+ // Check if lazy variants need loading
256
+ if (!state.loaded && hasLazyVariants(routing)) {
257
+ // Can't resolve synchronously - variants not loaded
258
+ return undefined;
259
+ }
260
+
261
+ // For eager variants, ensure they're in state
262
+ if (hasEagerVariants(routing)) {
263
+ for (const [id, variant] of routing.variants) {
264
+ if (!state.variants.has(id)) {
265
+ state.variants.set(id, variant);
266
+ }
267
+ }
268
+ }
269
+
270
+ const variant = state.variants.get(discriminatorValue);
271
+ if (variant) {
272
+ return variant as ManifestVariant<TConfig>;
273
+ }
274
+
275
+ // Try fallback
276
+ if (routing.fallback) {
277
+ return routing.fallback as ManifestVariant<TConfig>;
278
+ }
279
+
280
+ return undefined;
281
+ }
282
+
283
+ // Nested Routing Integration
284
+
285
+ /**
286
+ * Generate a unique registry key for a nested routing path
287
+ * This allows nested routings to share variants when they use the same variants map
288
+ *
289
+ * @param manifestId - The base manifest ID
290
+ * @param path - The nested routing path
291
+ */
292
+ function getNestedRegistryKey(manifestId: string, path: string): string {
293
+ return `${manifestId}:${path}`;
294
+ }
295
+
296
+ /**
297
+ * Load variants from a nested routing configuration
298
+ * Handles both eager and lazy loading, with deduplication
299
+ *
300
+ * @param manifestId - The base manifest ID
301
+ * @param routing - The nested routing configuration
302
+ */
303
+ export async function loadNestedVariantsFromRouting(
304
+ manifestId: string,
305
+ routing: NestedRouting
306
+ ): Promise<void> {
307
+ const registryKey = getNestedRegistryKey(manifestId, routing.path);
308
+ const state = getState(registryKey);
309
+
310
+ // Already loaded
311
+ if (state.loaded) {
312
+ return;
313
+ }
314
+
315
+ // Loading in progress - wait for it
316
+ if (state.loadingPromise) {
317
+ return state.loadingPromise;
318
+ }
319
+
320
+ // Eager variants - just copy them
321
+ if (hasNestedEagerVariants(routing)) {
322
+ for (const [id, variant] of routing.variants) {
323
+ state.variants.set(id, variant);
324
+ }
325
+ state.loaded = true;
326
+ return;
327
+ }
328
+
329
+ // Lazy variants - load them
330
+ if (hasNestedLazyVariants(routing)) {
331
+ state.loadingPromise = (async () => {
332
+ try {
333
+ const loadedVariants = await routing.variants();
334
+ for (const [id, variant] of loadedVariants) {
335
+ state.variants.set(id, variant);
336
+ }
337
+ state.loaded = true;
338
+ } finally {
339
+ state.loadingPromise = undefined;
340
+ }
341
+ })();
342
+
343
+ return state.loadingPromise;
344
+ }
345
+ }
346
+
347
+ /**
348
+ * Get a value at a dot-notation path from an object
349
+ */
350
+ function getValueAtPath(obj: Record<string, unknown>, path: string): unknown {
351
+ const parts = path.split('.');
352
+ let current: unknown = obj;
353
+ for (const part of parts) {
354
+ if (current == null || typeof current !== 'object') {
355
+ return undefined;
356
+ }
357
+ current = (current as Record<string, unknown>)[part];
358
+ }
359
+ return current;
360
+ }
361
+
362
+ /**
363
+ * Resolve a nested variant from routing based on discriminator value
364
+ *
365
+ * @param manifestId - The base manifest ID
366
+ * @param routing - The nested routing configuration
367
+ * @param values - Current form values (used to extract discriminator value)
368
+ * @returns Resolved nested variant information
369
+ */
370
+ export async function resolveNestedVariant<
371
+ TConfig extends Record<string, unknown> = Record<string, unknown>
372
+ >(
373
+ manifestId: string,
374
+ routing: NestedRouting,
375
+ values: Record<string, unknown>
376
+ ): Promise<ResolvedNestedVariant<TConfig>> {
377
+ // Get the discriminator value from the nested path
378
+ const discriminatorPath = getNestedDiscriminatorPath(routing);
379
+ const discriminatorValue = getValueAtPath(values, discriminatorPath) as string | undefined;
380
+
381
+ // Check if this section is enabled
382
+ const enablePath = getNestedEnablePath(routing);
383
+ const enabled = enablePath
384
+ ? ((getValueAtPath(values, enablePath) as boolean) ?? false)
385
+ : (routing.required ?? true);
386
+
387
+ // If not enabled and not required, return early
388
+ if (!enabled && !routing.required) {
389
+ return {
390
+ path: routing.path,
391
+ variant: undefined,
392
+ found: false,
393
+ discriminatorValue: discriminatorValue ?? '',
394
+ usedFallback: false,
395
+ enabled: false
396
+ };
397
+ }
398
+
399
+ // No discriminator value yet
400
+ if (!discriminatorValue) {
401
+ return {
402
+ path: routing.path,
403
+ variant: undefined,
404
+ found: false,
405
+ discriminatorValue: '',
406
+ usedFallback: false,
407
+ enabled
408
+ };
409
+ }
410
+
411
+ // Ensure variants are loaded
412
+ await loadNestedVariantsFromRouting(manifestId, routing);
413
+
414
+ const registryKey = getNestedRegistryKey(manifestId, routing.path);
415
+ const state = getState(registryKey);
416
+ const variant = state.variants.get(discriminatorValue) as ManifestVariant<TConfig> | undefined;
417
+
418
+ if (variant) {
419
+ return {
420
+ path: routing.path,
421
+ variant,
422
+ found: true,
423
+ discriminatorValue,
424
+ usedFallback: false,
425
+ enabled
426
+ };
427
+ }
428
+
429
+ // Try fallback
430
+ if (routing.fallback) {
431
+ return {
432
+ path: routing.path,
433
+ variant: routing.fallback as ManifestVariant<TConfig>,
434
+ found: true,
435
+ discriminatorValue,
436
+ usedFallback: true,
437
+ enabled
438
+ };
439
+ }
440
+
441
+ return {
442
+ path: routing.path,
443
+ variant: undefined,
444
+ found: false,
445
+ discriminatorValue,
446
+ usedFallback: false,
447
+ enabled
448
+ };
449
+ }
450
+
451
+ /**
452
+ * Resolve all nested variants from multiple routing configurations
453
+ *
454
+ * @param manifestId - The base manifest ID
455
+ * @param routings - Array of nested routing configurations
456
+ * @param values - Current form values
457
+ * @returns Array of resolved nested variants
458
+ */
459
+ export async function resolveAllNestedVariants<
460
+ TConfig extends Record<string, unknown> = Record<string, unknown>
461
+ >(
462
+ manifestId: string,
463
+ routings: NestedRouting[],
464
+ values: Record<string, unknown>
465
+ ): Promise<ResolvedNestedVariant<TConfig>[]> {
466
+ const results = await Promise.all(
467
+ routings.map((routing) => resolveNestedVariant<TConfig>(manifestId, routing, values))
468
+ );
469
+ return results;
470
+ }
471
+
472
+ /**
473
+ * Get all active nested variants (enabled and resolved)
474
+ *
475
+ * @param manifestId - The base manifest ID
476
+ * @param routings - Array of nested routing configurations
477
+ * @param values - Current form values
478
+ * @returns Map of active variants keyed by path
479
+ */
480
+ export async function getActiveNestedVariants(
481
+ manifestId: string,
482
+ routings: NestedRouting[],
483
+ values: Record<string, unknown>
484
+ ): Promise<Map<string, ActiveNestedVariant>> {
485
+ const resolved = await resolveAllNestedVariants(manifestId, routings, values);
486
+ const active = new Map<string, ActiveNestedVariant>();
487
+
488
+ for (const result of resolved) {
489
+ if (result.found && result.variant && result.enabled) {
490
+ active.set(result.path, {
491
+ path: result.path,
492
+ discriminatorValue: result.discriminatorValue,
493
+ variant: result.variant,
494
+ enabled: result.enabled
495
+ });
496
+ }
497
+ }
498
+
499
+ return active;
500
+ }
501
+
502
+ /**
503
+ * Synchronously get a nested variant (only works if already loaded)
504
+ *
505
+ * @param manifestId - The base manifest ID
506
+ * @param routing - The nested routing configuration
507
+ * @param discriminatorValue - The discriminator value
508
+ * @returns The variant or undefined
509
+ */
510
+ export function resolveNestedVariantSync<
511
+ TConfig extends Record<string, unknown> = Record<string, unknown>
512
+ >(
513
+ manifestId: string,
514
+ routing: NestedRouting,
515
+ discriminatorValue: string
516
+ ): ManifestVariant<TConfig> | undefined {
517
+ const registryKey = getNestedRegistryKey(manifestId, routing.path);
518
+ const state = getState(registryKey);
519
+
520
+ // Check if lazy variants need loading
521
+ if (!state.loaded && hasNestedLazyVariants(routing)) {
522
+ // Can't resolve synchronously - variants not loaded
523
+ return undefined;
524
+ }
525
+
526
+ // For eager variants, ensure they're in state
527
+ if (hasNestedEagerVariants(routing)) {
528
+ for (const [id, variant] of routing.variants) {
529
+ if (!state.variants.has(id)) {
530
+ state.variants.set(id, variant);
531
+ }
532
+ }
533
+ }
534
+
535
+ const variant = state.variants.get(discriminatorValue);
536
+ if (variant) {
537
+ return variant as ManifestVariant<TConfig>;
538
+ }
539
+
540
+ // Try fallback
541
+ if (routing.fallback) {
542
+ return routing.fallback as ManifestVariant<TConfig>;
543
+ }
544
+
545
+ return undefined;
546
+ }
547
+
548
+ /**
549
+ * Check if nested variants are loaded for a manifest path
550
+ */
551
+ export function areNestedVariantsLoaded(manifestId: string, path: string): boolean {
552
+ const registryKey = getNestedRegistryKey(manifestId, path);
553
+ const state = registryState.get(registryKey);
554
+ return state?.loaded ?? false;
555
+ }
556
+
557
+ /**
558
+ * Get all nested variants for a manifest path
559
+ */
560
+ export function getAllNestedVariants(
561
+ manifestId: string,
562
+ path: string
563
+ ): Map<string, ManifestVariant> {
564
+ const registryKey = getNestedRegistryKey(manifestId, path);
565
+ const state = getState(registryKey);
566
+ return new Map(state.variants);
567
+ }
568
+
569
+ // Registry Information
570
+
571
+ /**
572
+ * Get registry status for debugging
573
+ */
574
+ export function getRegistryStatus(): {
575
+ manifests: string[];
576
+ variants: Record<string, string[]>;
577
+ } {
578
+ const manifests: string[] = [];
579
+ const variants: Record<string, string[]> = {};
580
+
581
+ for (const [manifestId, state] of registryState) {
582
+ manifests.push(manifestId);
583
+ variants[manifestId] = Array.from(state.variants.keys());
584
+ }
585
+
586
+ return { manifests, variants };
587
+ }
588
+
589
+ /**
590
+ * Check if variants are loaded for a manifest
591
+ */
592
+ export function areVariantsLoaded(manifestId: string): boolean {
593
+ const state = registryState.get(manifestId);
594
+ return state?.loaded ?? false;
595
+ }
@@ -0,0 +1,6 @@
1
+ import type { ConfigFieldGroup, ConfigFieldMeta } from '../../manifest/types.ts';
2
+
3
+ export interface MergeManifestOptions {
4
+ mergeSchemas?: boolean;
5
+ injectIntoSteps?: boolean;
6
+ }