@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,36 @@
1
+ /**
2
+ * Config Form Module
3
+ *
4
+ * Core form rendering infrastructure for manifest-driven forms
5
+ */
6
+ export type {
7
+ RenderContext,
8
+ ComponentOverride,
9
+ FormRenderOptions,
10
+ ResolvedField,
11
+ ResolvedGroup,
12
+ FormState,
13
+ FormActions
14
+ } from './core/index.ts';
15
+ export {
16
+ inferFieldComponent,
17
+ getFieldDefault,
18
+ resolveFields,
19
+ groupFields,
20
+ resolveFieldDefault,
21
+ resolveDefaults,
22
+ validateField,
23
+ validateForm,
24
+ getFieldSchema,
25
+ evaluateRule,
26
+ isFieldVisible,
27
+ isFieldDisabled,
28
+ isFieldRequired,
29
+ resolveGroups,
30
+ getGroupFields,
31
+ isGroupCollapsed,
32
+ getNestedValue,
33
+ setNestedValue,
34
+ buildNestedObject,
35
+ flattenNestedObject
36
+ } from './core/index.ts';
package/src/index.ts ADDED
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Universal Configuration Module
3
+ *
4
+ * Schema-driven configuration system for all surfaces:
5
+ * - TUI (Studio)
6
+ * - CLI
7
+ * - Web (SvelteKit)
8
+ * - Bridge App
9
+ */
10
+
11
+ // Schemas (New Runtime API)
12
+
13
+ export {
14
+ ConfigManifestDescriptorSchema,
15
+ isConfigManifestDescriptor,
16
+ ConfigTierSchema,
17
+ ConfigSurfaceSchema,
18
+ HardwareContextSchema,
19
+ EnvironmentContextSchema,
20
+ FieldComponentSchema,
21
+ FieldWidthSchema,
22
+ FieldUISchema,
23
+ FieldOptionSchema,
24
+ ReferenceConfigSchema,
25
+ FieldAccessSchema,
26
+ ConfigFieldMetaSchema,
27
+ ConfigFieldGroupSchema,
28
+ ManifestNavigationSchema,
29
+ ManifestContextSchema,
30
+ ConfigCollectionDescriptorSchema
31
+ } from './schemas/index.ts';
32
+ export type {
33
+ ConfigManifestDescriptor,
34
+ ConfigTier,
35
+ ConfigSurface,
36
+ HardwareContext,
37
+ EnvironmentContext,
38
+ FieldComponent,
39
+ FieldWidth,
40
+ FieldUI,
41
+ FieldOption,
42
+ ReferenceConfig,
43
+ FieldAccess,
44
+ ConfigFieldMeta,
45
+ ConfigFieldGroup,
46
+ ManifestNavigation,
47
+ ManifestContext,
48
+ ConfigCollectionDescriptor
49
+ } from './schemas/index.ts';
50
+
51
+ // Manifest Class
52
+
53
+ export { ConfigManifest } from './manifest/config-manifest.ts';
54
+ export type { ConfigChangeCallback } from './manifest/config-manifest.ts';
55
+
56
+ // Config Collection
57
+
58
+ export { ConfigCollection } from './collection/collection.ts';
59
+ export type { CollectionState, CollectionCallback } from './collection/collection.ts';
60
+
61
+ // Config Doctor
62
+
63
+ export { diagnoseConfig, diagnoseCollection } from './doctor.ts';
64
+ export type {
65
+ DiagnosticSeverity,
66
+ DiagnosticIssue,
67
+ DetailedDiagnostic,
68
+ DiagnoseConfigOptions
69
+ } from './doctor.ts';
@@ -0,0 +1,4 @@
1
+ declare module 'js-yaml' {
2
+ export function load<T = unknown>(input: string): T;
3
+ export function dump(value: unknown, options?: { noRefs?: boolean }): string;
4
+ }
@@ -0,0 +1,386 @@
1
+ /**
2
+ * Unified Config Loader for CLI
3
+ *
4
+ * Provides a single, consistent way to load configs with proper
5
+ * specificity ordering and format support.
6
+ *
7
+ * This is the CLI-specific loader that uses ConfigStorageService from
8
+ * the config package's storage layer instead of LocalDB directly.
9
+ */
10
+
11
+ import type {
12
+ ConfigLoaderOptions,
13
+ ConfigLoadResult,
14
+ ConfigSource,
15
+ ConfigScope,
16
+ ConfigSaveOptions
17
+ } from './types';
18
+ import {
19
+ getConfigSearchPaths,
20
+ getDefaultScopes,
21
+ getNestedValue,
22
+ setNestedValue,
23
+ deepMerge,
24
+ detectSecrets,
25
+ detectFormat,
26
+ fileExists,
27
+ ensureDir,
28
+ getVibesDir
29
+ } from './utils';
30
+
31
+ async function getLoaders() {
32
+ // `./loaders` is a literal subpath — let vite resolve and chunk it.
33
+ // The previous `/* @vite-ignore */` left an unresolved relative import
34
+ // in the chunked output that wrangler's esbuild pass could not
35
+ // resolve (the parent chunk landed in `output/server/chunks/` while
36
+ // the relative target lived elsewhere).
37
+ return import('./loaders');
38
+ }
39
+
40
+ import { dirname } from 'path';
41
+
42
+ // Storage service will be imported from config-storage service
43
+ // For now, placeholder that will be resolved when the service is created
44
+ let _configStorageService: any = null;
45
+
46
+ function getStorageService() {
47
+ if (!_configStorageService) {
48
+ // Will use runtime.resolve('config-storage/service') when available
49
+ throw new Error('ConfigStorageService not initialized. Call setStorageService() first.');
50
+ }
51
+ return _configStorageService;
52
+ }
53
+
54
+ export function setStorageService(service: any) {
55
+ _configStorageService = service;
56
+ }
57
+
58
+ /**
59
+ * Load configuration with proper specificity ordering
60
+ *
61
+ * Specificity order (least → most specific):
62
+ * 1. Global: stored in config storage under scope='global'
63
+ * 2. Local: stored in config storage under scope='local'
64
+ * 3. Project: stored in config storage under scope='project'
65
+ *
66
+ * Later configs override earlier ones via deep merge.
67
+ *
68
+ * If configPath is provided, loads from that file directly (for imports).
69
+ */
70
+ export async function loadConfig<T = any>(
71
+ options: ConfigLoaderOptions<T> = {}
72
+ ): Promise<ConfigLoadResult<T>> {
73
+ const {
74
+ configPath,
75
+ scopes = getDefaultScopes(),
76
+ schema,
77
+ merge = true,
78
+ namespace,
79
+ warnSecrets = false
80
+ } = options;
81
+
82
+ if (configPath) {
83
+ return loadConfigFromFile<T>(configPath, options);
84
+ }
85
+
86
+ return loadConfigFromStorage<T>({
87
+ ...options,
88
+ scopes,
89
+ namespace,
90
+ warnSecrets
91
+ });
92
+ }
93
+
94
+ /**
95
+ * Load configuration from a specific file path (import mode)
96
+ */
97
+ async function loadConfigFromFile<T = any>(
98
+ configPath: string,
99
+ options: ConfigLoaderOptions<T>
100
+ ): Promise<ConfigLoadResult<T>> {
101
+ const { schema, namespace, warnSecrets = true } = options;
102
+
103
+ const { loadConfigFromPath } = await getLoaders();
104
+ const config = await loadConfigFromPath(configPath, options.format);
105
+ const format = detectFormat(configPath);
106
+ const extractedConfig = namespace ? getNestedValue(config, namespace) || {} : config;
107
+
108
+ const sources: ConfigSource[] = [
109
+ {
110
+ path: configPath,
111
+ scope: 'project',
112
+ format,
113
+ exists: true,
114
+ merged: false
115
+ }
116
+ ];
117
+
118
+ const allSecrets: any[] = [];
119
+ if (warnSecrets && (format === 'ts' || format === 'js')) {
120
+ const secrets = detectSecrets(extractedConfig, configPath);
121
+ allSecrets.push(...secrets);
122
+ }
123
+
124
+ const finalConfig = schema ? schema.parse(extractedConfig) : extractedConfig;
125
+
126
+ return {
127
+ config: finalConfig,
128
+ sources,
129
+ secrets: allSecrets.length > 0 ? allSecrets : undefined
130
+ };
131
+ }
132
+
133
+ /**
134
+ * Load configuration from storage service
135
+ */
136
+ async function loadConfigFromStorage<T = any>(
137
+ options: ConfigLoaderOptions<T>
138
+ ): Promise<ConfigLoadResult<T>> {
139
+ const { scopes, schema, merge = true, namespace, warnSecrets = false } = options;
140
+ const service = getStorageService();
141
+ const allSecrets: any[] = [];
142
+ const sources: ConfigSource[] = [];
143
+
144
+ const nsValue = namespace ?? null;
145
+
146
+ const { config: mergedConfig, sources: storageSources } = await service.getDocumentMerged(
147
+ scopes ?? ['global', 'local', 'project'],
148
+ null
149
+ );
150
+
151
+ for (const storageSource of storageSources) {
152
+ sources.push({
153
+ path: `storage:${storageSource.scope}${nsValue ? `:${nsValue}` : ''}`,
154
+ scope: storageSource.scope,
155
+ format: 'json',
156
+ exists: true,
157
+ merged: merge
158
+ });
159
+ }
160
+
161
+ for (const scope of scopes ?? ['global', 'local', 'project']) {
162
+ if (!storageSources.find((s: any) => s.scope === scope)) {
163
+ sources.push({
164
+ path: `storage:${scope}${nsValue ? `:${nsValue}` : ''}`,
165
+ scope,
166
+ format: 'json',
167
+ exists: false,
168
+ merged: false
169
+ });
170
+ }
171
+ }
172
+
173
+ let extractedConfig = mergedConfig;
174
+ if (nsValue && mergedConfig) {
175
+ extractedConfig = getNestedValue(mergedConfig, nsValue) || {};
176
+ }
177
+
178
+ if (warnSecrets && extractedConfig) {
179
+ const secrets = detectSecrets(extractedConfig, 'storage', '');
180
+ allSecrets.push(...secrets);
181
+ }
182
+
183
+ const finalConfig = schema ? schema.parse(extractedConfig) : extractedConfig;
184
+
185
+ return {
186
+ config: finalConfig ?? ({} as T),
187
+ sources,
188
+ secrets: allSecrets.length > 0 ? allSecrets : undefined
189
+ };
190
+ }
191
+
192
+ /**
193
+ * Save configuration to storage
194
+ */
195
+ export async function saveConfig<T = any>(config: T, options: ConfigSaveOptions): Promise<void> {
196
+ const { scope, namespace, merge: shouldMerge = true, encrypt = false } = options;
197
+ const service = getStorageService();
198
+ const nsValue = namespace ?? null;
199
+
200
+ let contentToSave: Record<string, unknown>;
201
+
202
+ if (nsValue) {
203
+ const existing = await service.getDocument(scope, null);
204
+ contentToSave = existing || {};
205
+ setNestedValue(contentToSave, nsValue, config);
206
+ } else {
207
+ contentToSave = config as Record<string, unknown>;
208
+ }
209
+
210
+ if (shouldMerge) {
211
+ await service.mergeDocument(scope, contentToSave, null);
212
+ } else {
213
+ await service.setDocument({
214
+ scope,
215
+ namespace: null,
216
+ content: contentToSave,
217
+ encrypted: encrypt
218
+ });
219
+ }
220
+ }
221
+
222
+ /**
223
+ * Check if any config exists for given options
224
+ */
225
+ export async function configExists(
226
+ scopes: ConfigScope[] = getDefaultScopes(),
227
+ namespace?: string
228
+ ): Promise<boolean> {
229
+ const nsValue = namespace ?? null;
230
+ const service = getStorageService();
231
+
232
+ for (const scope of scopes) {
233
+ const doc = await service.getDocument(scope, nsValue);
234
+ if (doc && Object.keys(doc).length > 0) {
235
+ return true;
236
+ }
237
+ }
238
+
239
+ return false;
240
+ }
241
+
242
+ /**
243
+ * Get all existing config sources
244
+ */
245
+ export async function getExistingConfigs(
246
+ scopes: ConfigScope[] = getDefaultScopes(),
247
+ namespace?: string
248
+ ): Promise<ConfigSource[]> {
249
+ const nsValue = namespace ?? null;
250
+ const service = getStorageService();
251
+ const sources: ConfigSource[] = [];
252
+
253
+ for (const scope of scopes) {
254
+ const doc = await service.getDocument(scope, nsValue);
255
+ sources.push({
256
+ path: `storage:${scope}${nsValue ? `:${nsValue}` : ''}`,
257
+ scope,
258
+ format: 'json',
259
+ exists: doc !== null && Object.keys(doc).length > 0,
260
+ merged: false
261
+ });
262
+ }
263
+
264
+ return sources;
265
+ }
266
+
267
+ /**
268
+ * Import configuration from a file into storage
269
+ */
270
+ export async function importConfigFromFile(
271
+ filePath: string,
272
+ targetScope: ConfigScope,
273
+ options: {
274
+ namespace?: string;
275
+ merge?: boolean;
276
+ format?: 'ts' | 'js' | 'json' | 'yaml' | 'auto';
277
+ } = {}
278
+ ): Promise<{ imported: boolean; keys: number }> {
279
+ const { namespace, merge = true, format } = options;
280
+
281
+ const { loadConfigFromPath } = await getLoaders();
282
+ const config = await loadConfigFromPath(filePath, format);
283
+
284
+ if (!config || Object.keys(config).length === 0) {
285
+ return { imported: false, keys: 0 };
286
+ }
287
+
288
+ const nsValue = namespace ?? null;
289
+ const service = getStorageService();
290
+
291
+ let contentToSave: Record<string, unknown>;
292
+ if (nsValue) {
293
+ const existing = await service.getDocument(targetScope, null);
294
+ contentToSave = existing || {};
295
+ setNestedValue(contentToSave, nsValue, config);
296
+ } else {
297
+ contentToSave = config;
298
+ }
299
+
300
+ if (merge) {
301
+ await service.mergeDocument(targetScope, contentToSave, null);
302
+ } else {
303
+ await service.setDocument({
304
+ scope: targetScope,
305
+ namespace: null,
306
+ content: contentToSave,
307
+ encrypted: false
308
+ });
309
+ }
310
+
311
+ const countKeys = (obj: any): number => {
312
+ let count = 0;
313
+ for (const value of Object.values(obj)) {
314
+ count++;
315
+ if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
316
+ count += countKeys(value);
317
+ }
318
+ }
319
+ return count;
320
+ };
321
+
322
+ return { imported: true, keys: countKeys(config) };
323
+ }
324
+
325
+ /**
326
+ * Export configuration from storage to a file
327
+ */
328
+ export async function exportConfigToFile(
329
+ filePath: string,
330
+ scope: ConfigScope,
331
+ options: {
332
+ namespace?: string;
333
+ format?: 'json' | 'yaml';
334
+ pretty?: boolean;
335
+ } = {}
336
+ ): Promise<{ exported: boolean; keys: number }> {
337
+ const { namespace, format = 'json', pretty = true } = options;
338
+
339
+ const service = getStorageService();
340
+ const doc = await service.getDocument(scope, namespace ?? null);
341
+
342
+ if (!doc || Object.keys(doc).length === 0) {
343
+ return { exported: false, keys: 0 };
344
+ }
345
+
346
+ await ensureDir(dirname(filePath));
347
+
348
+ const { saveConfigToPath } = await getLoaders();
349
+ await saveConfigToPath(doc, filePath, format, pretty);
350
+
351
+ const countKeys = (obj: any): number => {
352
+ let count = 0;
353
+ for (const value of Object.values(obj)) {
354
+ count++;
355
+ if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
356
+ count += countKeys(value);
357
+ }
358
+ }
359
+ return count;
360
+ };
361
+
362
+ return { exported: true, keys: countKeys(doc) };
363
+ }
364
+
365
+ // Re-export types and utilities
366
+ export type {
367
+ ConfigFormat,
368
+ ConfigScope,
369
+ ConfigLoaderOptions,
370
+ ConfigLoadResult,
371
+ ConfigSource,
372
+ SecretDetection,
373
+ ConfigSaveOptions
374
+ } from './types';
375
+ export {
376
+ getVibesDir,
377
+ getConfigPath,
378
+ getConfigSearchPaths,
379
+ getDefaultScopes,
380
+ detectFormat,
381
+ deepMerge,
382
+ isSensitiveKey,
383
+ detectSecrets,
384
+ fileExists,
385
+ ensureDir
386
+ } from './utils';
@@ -0,0 +1,153 @@
1
+ /**
2
+ * Unified Config Loader - Format-specific loaders
3
+ */
4
+
5
+ import type { ConfigFormat } from './types';
6
+ import { detectFormat, fileExists } from './utils';
7
+
8
+ /**
9
+ * Load config from a file path with format detection
10
+ */
11
+ export async function loadConfigFromPath(path: string, format?: ConfigFormat): Promise<any> {
12
+ if (!(await fileExists(path))) {
13
+ throw new Error(`Config file not found: ${path}`);
14
+ }
15
+
16
+ const fileFormat = format && format !== 'auto' ? format : detectFormat(path);
17
+
18
+ switch (fileFormat) {
19
+ case 'ts':
20
+ return await loadTypeScriptConfig(path);
21
+ case 'js':
22
+ return await loadJavaScriptConfig(path);
23
+ case 'json':
24
+ return await loadJSONConfig(path);
25
+ case 'yaml':
26
+ return await loadYAMLConfig(path);
27
+ default:
28
+ throw new Error(`Unsupported config format: ${fileFormat}`);
29
+ }
30
+ }
31
+
32
+ /**
33
+ * Load TypeScript config file
34
+ */
35
+ async function loadTypeScriptConfig(path: string): Promise<any> {
36
+ try {
37
+ const module = await import(/* @vite-ignore */ path);
38
+ const config = module.default || module.config || module;
39
+
40
+ if (typeof config === 'function') {
41
+ return await config();
42
+ }
43
+
44
+ return config;
45
+ } catch (error) {
46
+ throw new Error(
47
+ `Failed to load TypeScript config from ${path}: ${error instanceof Error ? error.message : String(error)}`
48
+ );
49
+ }
50
+ }
51
+
52
+ /**
53
+ * Load JavaScript config file
54
+ */
55
+ async function loadJavaScriptConfig(path: string): Promise<any> {
56
+ try {
57
+ const module = await import(/* @vite-ignore */ path);
58
+ const config = module.default || module.config || module;
59
+
60
+ if (typeof config === 'function') {
61
+ return await config();
62
+ }
63
+
64
+ return config;
65
+ } catch (error) {
66
+ throw new Error(
67
+ `Failed to load JavaScript config from ${path}: ${error instanceof Error ? error.message : String(error)}`
68
+ );
69
+ }
70
+ }
71
+
72
+ /**
73
+ * Load JSON config file
74
+ */
75
+ async function loadJSONConfig(path: string): Promise<any> {
76
+ try {
77
+ const file = Bun.file(path);
78
+ const content = await file.text();
79
+ return JSON.parse(content);
80
+ } catch (error) {
81
+ throw new Error(
82
+ `Failed to load JSON config from ${path}: ${error instanceof Error ? error.message : String(error)}`
83
+ );
84
+ }
85
+ }
86
+
87
+ /**
88
+ * Load YAML config file
89
+ */
90
+ async function loadYAMLConfig(path: string): Promise<any> {
91
+ try {
92
+ const file = Bun.file(path);
93
+ const content = await file.text();
94
+ const { parse } = await import('yaml');
95
+ return parse(content);
96
+ } catch (error) {
97
+ throw new Error(
98
+ `Failed to load YAML config from ${path}: ${error instanceof Error ? error.message : String(error)}`
99
+ );
100
+ }
101
+ }
102
+
103
+ /**
104
+ * Save config to a file path
105
+ */
106
+ export async function saveConfigToPath(
107
+ config: any,
108
+ path: string,
109
+ format?: ConfigFormat,
110
+ pretty = true
111
+ ): Promise<void> {
112
+ const fileFormat = format && format !== 'auto' ? format : detectFormat(path);
113
+
114
+ let content: string;
115
+
116
+ switch (fileFormat) {
117
+ case 'ts':
118
+ case 'js':
119
+ content = generateModuleConfig(config, fileFormat);
120
+ break;
121
+ case 'json':
122
+ content = JSON.stringify(config, null, pretty ? 2 : 0);
123
+ break;
124
+ case 'yaml':
125
+ const { stringify } = await import('yaml');
126
+ content = stringify(config, null, pretty ? 2 : 0);
127
+ break;
128
+ default:
129
+ throw new Error(`Unsupported config format for saving: ${fileFormat}`);
130
+ }
131
+
132
+ await Bun.write(path, content);
133
+
134
+ if (fileFormat === 'json') {
135
+ await Bun.spawn(['chmod', '600', path], { stderr: 'ignore' }).exited;
136
+ }
137
+ }
138
+
139
+ /**
140
+ * Generate TS/JS module config content
141
+ */
142
+ function generateModuleConfig(config: any, format: 'ts' | 'js'): string {
143
+ const isTS = format === 'ts';
144
+ const typeAnnotation = isTS ? ': any' : '';
145
+
146
+ const configStr = JSON.stringify(config, null, 2)
147
+ .replace(/"([^"]+)":/g, '$1:')
148
+ .replace(/"/g, "'");
149
+
150
+ return `${isTS ? '// TypeScript Config\n' : '// JavaScript Config\n'}
151
+ export default ${typeAnnotation} ${configStr};
152
+ `;
153
+ }