@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,291 @@
1
+ /**
2
+ * Config File Discovery
3
+ *
4
+ * Discovers config files across all scopes and formats.
5
+ * Searches:
6
+ * - Global: ~/.vibes/{namespace}.{ts,js,json,jsonc,yaml}
7
+ * - Local: ./.vibes/{namespace}.{ts,js,json,jsonc,yaml}
8
+ * - Project: ./vibes.{namespace}.{ts,js,json,jsonc,yaml}
9
+ *
10
+ * NOTE: This file uses lazy-loaded Node.js modules to avoid
11
+ * Vite/Rollup bundler issues when the file is analyzed for client builds.
12
+ * The actual imports happen at runtime when functions are called.
13
+ */
14
+
15
+ import { getRuntimeEnv } from '@vibesdotdev/runtime';
16
+
17
+ // Lazy-loaded Node.js modules to avoid bundler issues
18
+ let _join: typeof import('path').join | null = null;
19
+ let _homedir: typeof import('os').homedir | null = null;
20
+
21
+ async function getJoin(): Promise<typeof import('path').join> {
22
+ if (!_join) {
23
+ const path = await import('path');
24
+ _join = path.join;
25
+ }
26
+ return _join;
27
+ }
28
+
29
+ async function getHomedir(): Promise<typeof import('os').homedir> {
30
+ if (!_homedir) {
31
+ const os = await import('os');
32
+ _homedir = os.homedir;
33
+ }
34
+ return _homedir;
35
+ }
36
+
37
+ import {
38
+ type ConfigFileFormat,
39
+ type ConfigFileScope,
40
+ type ConfigPriority,
41
+ type DiscoveredConfigFile,
42
+ type DiscoveryOptions,
43
+ CONFIG_PRIORITIES
44
+ } from './types.ts';
45
+
46
+ /**
47
+ * All supported file extensions in priority order
48
+ * (TypeScript highest priority as it's most expressive)
49
+ */
50
+ const FORMAT_EXTENSIONS: ConfigFileFormat[] = ['ts', 'js', 'json', 'jsonc', 'yaml'];
51
+
52
+ /**
53
+ * YAML file extensions
54
+ */
55
+ const YAML_EXTENSIONS = ['yaml', 'yml'];
56
+
57
+ /**
58
+ * Get the global vibes directory. Profile-aware: when VIBES_PROFILE is set,
59
+ * resolves to ~/.vibes/profile/{profile}/.
60
+ */
61
+ export async function getVibesDir(): Promise<string> {
62
+ const join = await getJoin();
63
+ const homedir = await getHomedir();
64
+ const profile = getRuntimeEnv('VIBES_PROFILE') || getRuntimeEnv('VIBES_PROFILE_NAME');
65
+ if (profile) {
66
+ return join(homedir(), '.vibes', 'profile', profile);
67
+ }
68
+ return join(homedir(), '.vibes');
69
+ }
70
+
71
+ /**
72
+ * Generate all possible file paths for a namespace and scope
73
+ */
74
+ async function getPathsForScope(
75
+ namespace: string,
76
+ scope: ConfigFileScope,
77
+ cwd: string
78
+ ): Promise<{ path: string; format: ConfigFileFormat }[]> {
79
+ const join = await getJoin();
80
+ const paths: { path: string; format: ConfigFileFormat }[] = [];
81
+
82
+ switch (scope) {
83
+ case 'global': {
84
+ // ~/.vibes/{namespace}.{ext}
85
+ const dir = await getVibesDir();
86
+ for (const format of FORMAT_EXTENSIONS) {
87
+ if (format === 'yaml') {
88
+ // Support both .yaml and .yml
89
+ for (const ext of YAML_EXTENSIONS) {
90
+ paths.push({ path: join(dir, `${namespace}.${ext}`), format: 'yaml' });
91
+ }
92
+ } else {
93
+ paths.push({ path: join(dir, `${namespace}.${format}`), format });
94
+ }
95
+ }
96
+ break;
97
+ }
98
+
99
+ case 'local': {
100
+ // ./.vibes/{namespace}.{ext}
101
+ const dir = join(cwd, '.vibes');
102
+ for (const format of FORMAT_EXTENSIONS) {
103
+ if (format === 'yaml') {
104
+ for (const ext of YAML_EXTENSIONS) {
105
+ paths.push({ path: join(dir, `${namespace}.${ext}`), format: 'yaml' });
106
+ }
107
+ } else {
108
+ paths.push({ path: join(dir, `${namespace}.${format}`), format });
109
+ }
110
+ }
111
+ break;
112
+ }
113
+
114
+ case 'project': {
115
+ // ./vibes.{namespace}.{ext}
116
+ for (const format of FORMAT_EXTENSIONS) {
117
+ if (format === 'yaml') {
118
+ for (const ext of YAML_EXTENSIONS) {
119
+ paths.push({ path: join(cwd, `vibes.${namespace}.${ext}`), format: 'yaml' });
120
+ }
121
+ } else {
122
+ paths.push({ path: join(cwd, `vibes.${namespace}.${format}`), format });
123
+ }
124
+ }
125
+ break;
126
+ }
127
+ }
128
+
129
+ return paths;
130
+ }
131
+
132
+ /**
133
+ * Get priority for a scope
134
+ */
135
+ function getPriorityForScope(scope: ConfigFileScope): ConfigPriority {
136
+ switch (scope) {
137
+ case 'global':
138
+ return CONFIG_PRIORITIES.GLOBAL;
139
+ case 'local':
140
+ return CONFIG_PRIORITIES.LOCAL;
141
+ case 'project':
142
+ return CONFIG_PRIORITIES.PROJECT;
143
+ }
144
+ }
145
+
146
+ /**
147
+ * Check if a file exists
148
+ */
149
+ async function fileExists(path: string): Promise<boolean> {
150
+ try {
151
+ const file = Bun.file(path);
152
+ return await file.exists();
153
+ } catch {
154
+ return false;
155
+ }
156
+ }
157
+
158
+ /**
159
+ * Discover all config files for a namespace
160
+ *
161
+ * Returns files in priority order (lowest to highest).
162
+ * Only returns files that exist.
163
+ *
164
+ * @example
165
+ * ```ts
166
+ * const files = await discoverConfigFiles({
167
+ * namespace: 'autoloop',
168
+ * scopes: ['global', 'local', 'project'],
169
+ * });
170
+ * // Returns existing files like:
171
+ * // - ~/.vibes/autoloop.json (priority 1)
172
+ * // - ./.vibes/autoloop.ts (priority 2)
173
+ * // - ./vibes.autoloop.ts (priority 3)
174
+ * ```
175
+ */
176
+ export async function discoverConfigFiles(
177
+ options: DiscoveryOptions
178
+ ): Promise<DiscoveredConfigFile[]> {
179
+ const {
180
+ namespace,
181
+ scopes = ['global', 'local', 'project'],
182
+ patterns = [],
183
+ fallbackPatterns = [],
184
+ cwd = process.cwd()
185
+ } = options;
186
+
187
+ const discovered: DiscoveredConfigFile[] = [];
188
+ const checkedPaths = new Set<string>();
189
+
190
+ // Check standard paths for each scope
191
+ for (const scope of scopes) {
192
+ const scopePaths = await getPathsForScope(namespace, scope, cwd);
193
+ const priority = getPriorityForScope(scope);
194
+
195
+ // Find first existing file for this scope (highest format priority)
196
+ for (const { path, format } of scopePaths) {
197
+ if (checkedPaths.has(path)) continue;
198
+ checkedPaths.add(path);
199
+
200
+ const exists = await fileExists(path);
201
+ if (exists) {
202
+ discovered.push({
203
+ path,
204
+ format,
205
+ scope,
206
+ priority,
207
+ exists: true
208
+ });
209
+ // Only take first existing file per scope (highest format priority)
210
+ break;
211
+ }
212
+ }
213
+ }
214
+
215
+ // Check custom patterns (project-level priority)
216
+ const join = await getJoin();
217
+ for (const pattern of patterns) {
218
+ const path = pattern.startsWith('/') ? pattern : join(cwd, pattern);
219
+ if (checkedPaths.has(path)) continue;
220
+ checkedPaths.add(path);
221
+
222
+ const exists = await fileExists(path);
223
+ if (exists) {
224
+ const format = detectFormat(path);
225
+ discovered.push({
226
+ path,
227
+ format,
228
+ scope: 'project',
229
+ priority: CONFIG_PRIORITIES.PROJECT,
230
+ exists: true
231
+ });
232
+ }
233
+ }
234
+
235
+ // Check fallback patterns if no files found yet
236
+ if (discovered.length === 0) {
237
+ for (const pattern of fallbackPatterns) {
238
+ const path = pattern.startsWith('/') ? pattern : join(cwd, pattern);
239
+ if (checkedPaths.has(path)) continue;
240
+ checkedPaths.add(path);
241
+
242
+ const exists = await fileExists(path);
243
+ if (exists) {
244
+ const format = detectFormat(path);
245
+ discovered.push({
246
+ path,
247
+ format,
248
+ scope: 'project',
249
+ priority: CONFIG_PRIORITIES.PROJECT,
250
+ exists: true
251
+ });
252
+ break; // Only use first fallback found
253
+ }
254
+ }
255
+ }
256
+
257
+ // Sort by priority (lowest to highest for merge order)
258
+ discovered.sort((a, b) => a.priority - b.priority);
259
+
260
+ return discovered;
261
+ }
262
+
263
+ /**
264
+ * Detect file format from path
265
+ */
266
+ export function detectFormat(path: string): ConfigFileFormat {
267
+ const lower = path.toLowerCase();
268
+ if (lower.endsWith('.ts')) return 'ts';
269
+ if (lower.endsWith('.js') || lower.endsWith('.mjs') || lower.endsWith('.cjs')) return 'js';
270
+ if (lower.endsWith('.jsonc')) return 'jsonc';
271
+ if (lower.endsWith('.json')) return 'json';
272
+ if (lower.endsWith('.yaml') || lower.endsWith('.yml')) return 'yaml';
273
+ return 'json'; // Default
274
+ }
275
+
276
+ /**
277
+ * Get all search paths that would be checked for a namespace
278
+ * (useful for error messages and debugging)
279
+ */
280
+ export async function getAllSearchPaths(
281
+ namespace: string,
282
+ scopes: ConfigFileScope[] = ['global', 'local', 'project'],
283
+ cwd: string = process.cwd()
284
+ ): Promise<string[]> {
285
+ const paths: string[] = [];
286
+ for (const scope of scopes) {
287
+ const scopePaths = await getPathsForScope(namespace, scope, cwd);
288
+ paths.push(...scopePaths.map((p) => p.path));
289
+ }
290
+ return paths;
291
+ }
@@ -0,0 +1,262 @@
1
+ /// <reference path="../js-yaml.d.ts" />
2
+
3
+ /**
4
+ * Config File Loader
5
+ *
6
+ * Loads config files in various formats (ts/js/json/jsonc/yaml).
7
+ * Handles dynamic imports for TypeScript/JavaScript files.
8
+ */
9
+
10
+ import type { DiscoveredConfigFile, LoadedConfigSource } from './types.ts';
11
+ import type { ConfigFileLocation } from '../manifest/types.ts';
12
+ import { detectFormat } from './discovery.ts';
13
+
14
+ /**
15
+ * Load a config file and return its contents
16
+ */
17
+ export async function loadConfigFile<T = unknown>(
18
+ file: DiscoveredConfigFile,
19
+ configFileLocation?: ConfigFileLocation
20
+ ): Promise<LoadedConfigSource<T>> {
21
+ const { path, format, scope, priority } = file;
22
+
23
+ try {
24
+ let data: T;
25
+
26
+ switch (format) {
27
+ case 'ts':
28
+ case 'js':
29
+ data = await loadTsJsFile<T>(path, configFileLocation);
30
+ break;
31
+
32
+ case 'json':
33
+ data = await loadJsonFile<T>(path);
34
+ break;
35
+
36
+ case 'jsonc':
37
+ data = await loadJsoncFile<T>(path);
38
+ break;
39
+
40
+ case 'yaml':
41
+ data = await loadYamlFile<T>(path);
42
+ break;
43
+
44
+ default:
45
+ throw new Error(`Unsupported format: ${format}`);
46
+ }
47
+
48
+ return {
49
+ source: path,
50
+ scope,
51
+ priority,
52
+ data,
53
+ format,
54
+ loaded: true
55
+ };
56
+ } catch (error) {
57
+ return {
58
+ source: path,
59
+ scope,
60
+ priority,
61
+ data: {} as T,
62
+ format,
63
+ loaded: false,
64
+ error: error instanceof Error ? error.message : String(error)
65
+ };
66
+ }
67
+ }
68
+
69
+ /**
70
+ * Load a TypeScript or JavaScript config file
71
+ */
72
+ async function loadTsJsFile<T>(path: string, configFileLocation?: ConfigFileLocation): Promise<T> {
73
+ // Dynamic import the module
74
+ let module: Record<string, unknown>;
75
+ try {
76
+ // Add timestamp to bust cache for development
77
+ const importPath = `${path}?t=${Date.now()}`;
78
+ module = await import(importPath);
79
+ } catch (importError) {
80
+ const msg = importError instanceof Error ? importError.message : String(importError);
81
+ throw new Error(`Failed to import ${path}: ${msg}`);
82
+ }
83
+
84
+ // Determine which export to use
85
+ const exportName = configFileLocation?.exportName;
86
+ let result: unknown;
87
+
88
+ // Try explicit export name
89
+ if (exportName && exportName !== 'default') {
90
+ result = module[exportName];
91
+ if (result === undefined) {
92
+ throw new Error(`Export '${exportName}' not found in ${path}`);
93
+ }
94
+ }
95
+ // Try default export
96
+ else if (module.default !== undefined) {
97
+ result = module.default;
98
+ }
99
+ // Try configs export (for record-type manifests)
100
+ else if (configFileLocation?.configsExport && module[configFileLocation.configsExport]) {
101
+ result = module[configFileLocation.configsExport];
102
+ }
103
+ // Try common export names
104
+ else if (module.config !== undefined) {
105
+ result = module.config;
106
+ } else if (module.configs !== undefined) {
107
+ result = module.configs;
108
+ }
109
+ // Use entire module if it looks like a config object
110
+ else {
111
+ // Filter out module metadata
112
+ const { __esModule, ...rest } = module as Record<string, unknown>;
113
+ if (Object.keys(rest).length > 0) {
114
+ result = rest;
115
+ } else {
116
+ throw new Error(`No valid export found in ${path}`);
117
+ }
118
+ }
119
+
120
+ // If result is a function, call it (supports factory configs)
121
+ if (typeof result === 'function') {
122
+ try {
123
+ result = await result();
124
+ } catch (execError) {
125
+ const msg = execError instanceof Error ? execError.message : String(execError);
126
+ throw new Error(`Failed to execute config factory in ${path}: ${msg}`);
127
+ }
128
+ }
129
+
130
+ return result as T;
131
+ }
132
+
133
+ /**
134
+ * Load a JSON config file
135
+ */
136
+ async function loadJsonFile<T>(path: string): Promise<T> {
137
+ const file = Bun.file(path);
138
+ const content = await file.text();
139
+ return JSON.parse(content) as T;
140
+ }
141
+
142
+ /**
143
+ * Load a JSONC (JSON with comments) config file
144
+ */
145
+ async function loadJsoncFile<T>(path: string): Promise<T> {
146
+ const file = Bun.file(path);
147
+ const content = await file.text();
148
+ // Strip comments (single-line // and multi-line /* */)
149
+ const stripped = content
150
+ .replace(/\/\/.*$/gm, '') // Single-line comments
151
+ .replace(/\/\*[\s\S]*?\*\//g, ''); // Multi-line comments
152
+ return JSON.parse(stripped) as T;
153
+ }
154
+
155
+ /**
156
+ * Load a YAML config file
157
+ */
158
+ async function loadYamlFile<T>(path: string): Promise<T> {
159
+ const file = Bun.file(path);
160
+ const content = await file.text();
161
+
162
+ // Use js-yaml for parsing (bundled with Bun)
163
+ try {
164
+ const yaml = await import('js-yaml');
165
+ return yaml.load(content) as T;
166
+ } catch (_yamlError) {
167
+ // Fallback: try simple YAML parsing for basic configs
168
+ return parseSimpleYaml<T>(content);
169
+ }
170
+ }
171
+
172
+ /**
173
+ * Simple YAML parser for basic key-value configs
174
+ * Falls back to this if js-yaml isn't available
175
+ */
176
+ function parseSimpleYaml<T>(content: string): T {
177
+ const result: Record<string, unknown> = {};
178
+ const lines = content.split('\n');
179
+ const _currentIndent = 0;
180
+ let currentObj = result;
181
+ const stack: { obj: Record<string, unknown>; indent: number }[] = [{ obj: result, indent: 0 }];
182
+
183
+ for (const line of lines) {
184
+ // Skip empty lines and comments
185
+ const trimmed = line.trim();
186
+ if (!trimmed || trimmed.startsWith('#')) continue;
187
+
188
+ // Calculate indent
189
+ const indent = line.search(/\S/);
190
+
191
+ // Pop stack if we're at a lower indent level
192
+ while (stack.length > 1 && indent <= stack[stack.length - 1].indent) {
193
+ stack.pop();
194
+ }
195
+ currentObj = stack[stack.length - 1].obj;
196
+
197
+ // Parse key: value
198
+ const colonIndex = trimmed.indexOf(':');
199
+ if (colonIndex === -1) continue;
200
+
201
+ const key = trimmed.slice(0, colonIndex).trim();
202
+ const value = trimmed.slice(colonIndex + 1).trim();
203
+
204
+ if (value === '' || value === '|' || value === '>') {
205
+ // Nested object or multiline string
206
+ currentObj[key] = {};
207
+ stack.push({ obj: currentObj[key] as Record<string, unknown>, indent });
208
+ } else {
209
+ // Parse value
210
+ currentObj[key] = parseYamlValue(value);
211
+ }
212
+ }
213
+
214
+ return result as T;
215
+ }
216
+
217
+ /**
218
+ * Parse a YAML value
219
+ */
220
+ function parseYamlValue(value: string): unknown {
221
+ // Remove quotes
222
+ if (
223
+ (value.startsWith('"') && value.endsWith('"')) ||
224
+ (value.startsWith("'") && value.endsWith("'"))
225
+ ) {
226
+ return value.slice(1, -1);
227
+ }
228
+ // Boolean
229
+ if (value === 'true') return true;
230
+ if (value === 'false') return false;
231
+ // Null
232
+ if (value === 'null' || value === '~') return null;
233
+ // Number
234
+ const num = Number(value);
235
+ if (!isNaN(num) && value !== '') return num;
236
+ // String
237
+ return value;
238
+ }
239
+
240
+ /**
241
+ * Load a config file from a path (auto-detect format)
242
+ */
243
+ export async function loadConfigFromPath<T = unknown>(
244
+ path: string,
245
+ configFileLocation?: ConfigFileLocation
246
+ ): Promise<T> {
247
+ const format = detectFormat(path);
248
+ const file: DiscoveredConfigFile = {
249
+ path,
250
+ format,
251
+ scope: 'project',
252
+ priority: 3,
253
+ exists: true
254
+ };
255
+
256
+ const result = await loadConfigFile<T>(file, configFileLocation);
257
+ if (!result.loaded) {
258
+ throw new Error(result.error || `Failed to load ${path}`);
259
+ }
260
+
261
+ return result.data;
262
+ }