@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,214 @@
1
+ /**
2
+ * Config Plugin
3
+ *
4
+ * Registers config/manifest kind with the runtime.
5
+ * This is the entry point for the config module's runtime integration.
6
+ *
7
+ * The config/manifest kind extends storage/manifest with:
8
+ * - Form field metadata for UI rendering
9
+ * - Navigation configuration for settings placement
10
+ * - Context constraints for conditional availability
11
+ * - Configuration tiers (system, user, internal)
12
+ */
13
+
14
+ import { createRuntimePlugin, loader } from '@vibesdotdev/runtime';
15
+ import { createRuntimeImplementation } from '@vibesdotdev/runtime/factory/implementation';
16
+ import {
17
+ ConfigManifestDescriptorSchema,
18
+ type ConfigManifestDescriptor
19
+ } from './schemas/config-manifest-descriptor';
20
+ import { ConfigManifest } from './manifest/config-manifest';
21
+ import type { HardwareContext } from './manifest/types';
22
+ import {
23
+ ConfigCollectionDescriptorSchema,
24
+ type ConfigCollectionDescriptor
25
+ } from './schemas/collection';
26
+ import { ConfigCollection } from './collection/collection';
27
+ import { SettingsSectionDescriptorSchema } from './settings/settings-section.schema';
28
+ import configLoaderDescriptor, {
29
+ type ConfigLoaderInterface,
30
+ type LoadResult,
31
+ type SaveResult
32
+ } from './services/loader/loader.descriptor';
33
+
34
+ // Config loader kind definition
35
+ const configLoaderKind = {
36
+ id: 'config/loader',
37
+ descriptorSchema: configLoaderDescriptor.schemas.input,
38
+
39
+ /**
40
+ * Default implementation selection:
41
+ * - consumer + { storage: 'local' } → LocalConfigLoader
42
+ * - consumer + { storage: 'local-first' } → LocalFirstConfigLoader (sync)
43
+ * - cloud + { storage: 'cloud' } → CloudConfigLoader
44
+ */
45
+ resolve: (_candidates: unknown[], scope: { hardware: string; qualifiers?: Record<string, unknown> }) => {
46
+ // Implementation selection is handled by runtime based on scope constraints
47
+ // Each implementation declares its scope, runtime picks the best match
48
+ return undefined; // Let runtime use implementation registration
49
+ }
50
+ };
51
+
52
+ // Type-safe kind definition
53
+ const configManifestKind = {
54
+ id: 'config/manifest',
55
+ descriptorSchema: ConfigManifestDescriptorSchema,
56
+
57
+ /**
58
+ * Default implementation: ConfigManifest
59
+ *
60
+ * ConfigManifest extends StorageManifest with:
61
+ * - Form field metadata
62
+ * - Context-aware defaults
63
+ * - Visibility rules
64
+ * - Navigation configuration
65
+ */
66
+ defaultImplementation: ConfigManifest as new (
67
+ descriptor: ConfigManifestDescriptor
68
+ ) => ConfigManifest<unknown>,
69
+
70
+ /**
71
+ * Resolution strategy: Match by tier and context constraints.
72
+ *
73
+ * Config manifests are typically looked up by ID, but when
74
+ * querying by tier or navigation, we filter by context.
75
+ */
76
+ resolve: (candidates: ConfigManifestDescriptor[], scope: { hardware: string }) => {
77
+ // Filter to candidates matching hardware (type-safe cast to HardwareContext)
78
+ const hardwareContext = scope.hardware as HardwareContext;
79
+ const matching = candidates.filter((d: ConfigManifestDescriptor) => {
80
+ // Check hardware constraint
81
+ if (d.context?.hardware && !d.context.hardware.includes(hardwareContext)) {
82
+ return false;
83
+ }
84
+ // Check enabled
85
+ if (d.enabled === false) {
86
+ return false;
87
+ }
88
+ return true;
89
+ });
90
+
91
+ if (matching.length === 0) return undefined;
92
+
93
+ // Return first match (typically looked up by ID anyway)
94
+ return matching[0];
95
+ }
96
+ };
97
+
98
+ /**
99
+ * Config plugin - registers config/manifest kind with the runtime.
100
+ *
101
+ * Kinds registered:
102
+ * - `config/manifest` - User-editable configuration with form metadata
103
+ *
104
+ * Dependencies:
105
+ * - Requires storage plugin for adapter resolution
106
+ *
107
+ * @example
108
+ * ```ts
109
+ * import { getVibesRuntime } from '@vibesdotdev/runtime';
110
+ * import { storagePlugin } from '@vibesdotdev/storage';
111
+ * import configPlugin from 'config.plugin';
112
+ *
113
+ * const runtime = getVibesRuntime();
114
+ *
115
+ * // Register storage first (config depends on it)
116
+ * await runtime.registerPlugin(storagePlugin);
117
+ * await runtime.registerPlugin(configPlugin);
118
+ *
119
+ * // Now you can query config manifests
120
+ * const aiConfig = await runtime.query('config/manifest')
121
+ * .filter(d => d.id === 'ai')
122
+ * .resolve();
123
+ *
124
+ * const config = await aiConfig.loadWithDefaults(ctx);
125
+ * ```
126
+ */
127
+ // Config collection kind definition
128
+ const configCollectionKind = {
129
+ id: 'config/collection',
130
+ descriptorSchema: ConfigCollectionDescriptorSchema,
131
+
132
+ /**
133
+ * Default implementation: ConfigCollection
134
+ *
135
+ * ConfigCollection groups related config manifests and provides
136
+ * unified load/subscribe/dispose lifecycle.
137
+ */
138
+ defaultImplementation: ConfigCollection as new (
139
+ descriptor: ConfigCollectionDescriptor,
140
+ ...args: unknown[]
141
+ ) => ConfigCollection
142
+ };
143
+
144
+ /**
145
+ * Settings section kind — pure-data contribution.
146
+ *
147
+ * Each owning module registers a `settings/section` descriptor naming its
148
+ * `config/manifest` IDs. Surfaces assemble the global Settings UI by
149
+ * concatenating every registered section, sorted by `order`. Config itself
150
+ * does not enumerate which sections exist.
151
+ *
152
+ * See `./settings/assemble.ts` for `assembleSettingsSections(runtime)`.
153
+ */
154
+ const settingsSectionKind = {
155
+ id: 'settings/section',
156
+ descriptorSchema: SettingsSectionDescriptorSchema
157
+ // No defaultImplementation — descriptors are the contribution.
158
+ // No resolve override — runtime returns all registered candidates.
159
+ };
160
+
161
+ import type { AnyRuntimeKindDescriptor } from '@vibesdotdev/runtime';
162
+
163
+ // CLI command descriptors
164
+ import settingsDescriptor from './cli/settings.descriptor';
165
+ import configContextDescriptor from './config.context.descriptor';
166
+
167
+ // Docs
168
+ import manifestsDescriptor from './docs/manifests.docs.descriptor';
169
+ import environmentDescriptor from './docs/environment.docs.descriptor';
170
+ import validationDescriptor from './docs/validation.docs.descriptor';
171
+
172
+ export default createRuntimePlugin({
173
+ id: 'config',
174
+ name: 'Config Module',
175
+ description:
176
+ 'User-editable configuration with form metadata, navigation, and context-aware defaults',
177
+
178
+ // Config depends on storage for adapter resolution. TUI integrations are
179
+ // activated after discovery so they do not depend on bootstrap order.
180
+ dependencies: ['storage'],
181
+
182
+ kinds: [
183
+ configLoaderKind,
184
+ configManifestKind,
185
+ configCollectionKind,
186
+ settingsSectionKind
187
+ ] as readonly AnyRuntimeKindDescriptor[],
188
+
189
+ descriptors: [configLoaderDescriptor, settingsDescriptor, configContextDescriptor, manifestsDescriptor, environmentDescriptor, validationDescriptor],
190
+
191
+ loaders: [
192
+ // Config loader implementations - selected by runtime based on scope
193
+ loader(
194
+ 'config.loader.local',
195
+ { kind: 'config/loader', scope: 'consumer' },
196
+ () => import('./services/loader/loader.impl.consumer.js')
197
+ ),
198
+ loader(
199
+ 'config.loader.local-first',
200
+ { kind: 'config/loader', scope: 'consumer' },
201
+ () => import('./services/loader/loader.impl.consumer.local-first.js')
202
+ ),
203
+ loader(
204
+ 'config.loader.cloud',
205
+ { kind: 'config/loader', scope: 'cloud' },
206
+ () => import('./services/loader/loader.impl.cloud.js')
207
+ )
208
+ ],
209
+
210
+ onRegister: async (_runtime) => {
211
+ // TUI apps (config settings, registry) are registered by
212
+ // @vibesdotdev/plugins-tui so they do not leak JSX into non-TUI consumers.
213
+ }
214
+ });
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Leaf-level CRUD base types.
3
+ *
4
+ * Extracted from `./types.ts` so other type modules (extensions, routing)
5
+ * can reference `BaseRecord`, `CRUDViewMode`, and `FormStep` without
6
+ * cycling through the full crud/types module that itself imports those
7
+ * sibling type modules.
8
+ */
9
+
10
+ export type { CRUDViewMode, BaseRecord, FormStep } from './schemas/base-types.schema.ts';
@@ -0,0 +1,15 @@
1
+ export type { BaseRecord, CRUDViewMode, FormStep } from './base-types.ts';
2
+ export type {
3
+ ListColumn,
4
+ ListViewConfig,
5
+ ListAction,
6
+ FormViewConfig,
7
+ DetailViewConfig,
8
+ DetailSection,
9
+ DeleteConfig,
10
+ DetectionConfig,
11
+ CRUDConfig,
12
+ RecordManifest,
13
+ CRUDPageProps
14
+ } from './types.ts';
15
+ export { isRecordManifest, hasNestedRoutings } from './types.ts';
@@ -0,0 +1,20 @@
1
+ export type CRUDViewMode = 'list' | 'create' | 'edit' | 'view' | 'delete';
2
+
3
+ export interface BaseRecord {
4
+ id: string;
5
+ }
6
+
7
+ export interface FormStep {
8
+ id: string;
9
+ title: string;
10
+ description?: string;
11
+ icon?: string;
12
+ fields: string[];
13
+ validate?: 'fields' | 'custom' | 'none';
14
+ optional?: boolean;
15
+ visibleWhen?: {
16
+ field: string;
17
+ operator: 'equals' | 'notEquals' | 'in' | 'notIn' | 'exists' | 'isEmpty';
18
+ value?: unknown;
19
+ };
20
+ }
@@ -0,0 +1,14 @@
1
+ export interface BaseRecord {
2
+ id: string;
3
+ createdAt?: Date | string;
4
+ updatedAt?: Date | string;
5
+ }
6
+
7
+ export type CRUDViewMode = 'list' | 'create' | 'edit' | 'detail' | 'delete';
8
+
9
+ export interface FormStep {
10
+ id: string;
11
+ title: string;
12
+ fields: string[];
13
+ optional?: boolean;
14
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * CRUD Shared Types
3
+ *
4
+ * Base types that are shared across config modules to avoid circular dependencies.
5
+ * These are minimal type definitions that don't import from other config modules.
6
+ */
7
+
8
+ export type { BaseRecord, CRUDViewMode, FormStep } from './schemas/shared.schema.ts';
@@ -0,0 +1,299 @@
1
+ /**
2
+ * CRUD Metadata Types for Config Manifests
3
+ *
4
+ * Extends the manifest system with metadata for rendering
5
+ * list views, create/edit forms, and delete confirmations.
6
+ */
7
+
8
+ import type { ReactNode } from 'react';
9
+ import type { ConfigManifest, ConfigFieldMeta } from '../manifest/types.ts';
10
+ import type { ExtensionSurface } from '../extensions/types.ts';
11
+ import type { ManifestRouting, NestedRouting } from '../routing/types.ts';
12
+
13
+ import type { BaseRecord, CRUDViewMode, FormStep } from './base-types.ts';
14
+ export type { BaseRecord, CRUDViewMode, FormStep } from './base-types.ts';
15
+
16
+ // =============================================================================
17
+ // List View Configuration
18
+
19
+ /**
20
+ * Column definition for list/table views
21
+ */
22
+ export interface ListColumn<T = unknown> {
23
+ /** Field key to display (dot notation for nested) */
24
+ key: string;
25
+ /** Column header label */
26
+ label: string;
27
+ /** Column width (characters or 'auto') */
28
+ width?: number | 'auto';
29
+ /** Text alignment */
30
+ align?: 'left' | 'center' | 'right';
31
+ /** Whether column is sortable */
32
+ sortable?: boolean;
33
+ /** Custom render function */
34
+ render?: (value: unknown, record: T) => ReactNode;
35
+ /** Format preset (applies default render) */
36
+ format?: 'text' | 'number' | 'date' | 'boolean' | 'status' | 'badge';
37
+ }
38
+
39
+ /**
40
+ * List view configuration
41
+ */
42
+ export interface ListViewConfig<T = unknown> {
43
+ /** Columns to display */
44
+ columns: ListColumn<T>[];
45
+ /** Field to use as display name in UI */
46
+ displayField: string;
47
+ /** Field to use as unique identifier */
48
+ idField?: string; // defaults to 'id'
49
+ /** Default sort field */
50
+ defaultSort?: string;
51
+ /** Default sort direction */
52
+ defaultSortDirection?: 'asc' | 'desc';
53
+ /** Empty state message */
54
+ emptyMessage?: string;
55
+ /** Whether to show search/filter */
56
+ searchable?: boolean;
57
+ /** Fields to search in */
58
+ searchFields?: string[];
59
+ /** Row actions (edit, delete, custom) */
60
+ actions?: ListAction[];
61
+ /** Bulk actions */
62
+ bulkActions?: ListAction[];
63
+ }
64
+
65
+ /**
66
+ * Action available in list view
67
+ */
68
+ export interface ListAction {
69
+ id: string;
70
+ label: string;
71
+ icon?: string;
72
+ variant?: 'primary' | 'secondary' | 'danger' | 'ghost';
73
+ /** When action should be disabled */
74
+ disabledWhen?: (record: unknown) => boolean;
75
+ /** When action should be hidden */
76
+ hiddenWhen?: (record: unknown) => boolean;
77
+ }
78
+
79
+ // Form View Configuration
80
+
81
+ /**
82
+ * Form view configuration (create/edit)
83
+ */
84
+ export interface FormViewConfig {
85
+ /** Title for create mode */
86
+ createTitle?: string;
87
+ /** Title for edit mode */
88
+ editTitle?: string;
89
+ /** Fields to show in create mode (defaults to all) */
90
+ createFields?: string[];
91
+ /** Fields to show in edit mode (defaults to all) */
92
+ editFields?: string[];
93
+ /** Fields that are read-only in edit mode */
94
+ readOnlyInEdit?: string[];
95
+ /** Whether to show cancel button */
96
+ showCancel?: boolean;
97
+ /** Submit button label for create */
98
+ createSubmitLabel?: string;
99
+ /** Submit button label for edit */
100
+ editSubmitLabel?: string;
101
+ /** Layout mode */
102
+ layout?: 'vertical' | 'horizontal' | 'grid';
103
+ /**
104
+ * Optional wizard steps for multi-step forms.
105
+ * If provided, form renders as a stepped wizard.
106
+ * If omitted, form renders all fields in a single view.
107
+ */
108
+ steps?: FormStep[];
109
+ }
110
+
111
+ // Detail View Configuration
112
+
113
+ /**
114
+ * Detail/view configuration (read-only view of single record)
115
+ */
116
+ export interface DetailViewConfig {
117
+ /** Title template (can include {field} placeholders) */
118
+ titleTemplate?: string;
119
+ /** Fields to display */
120
+ fields?: string[];
121
+ /** Whether to group fields */
122
+ grouped?: boolean;
123
+ /** Custom sections */
124
+ sections?: DetailSection[];
125
+ }
126
+
127
+ /**
128
+ * Section in detail view
129
+ */
130
+ export interface DetailSection {
131
+ id: string;
132
+ title: string;
133
+ icon?: string;
134
+ fields: string[];
135
+ collapsed?: boolean;
136
+ }
137
+
138
+ // Delete Confirmation Configuration
139
+
140
+ /**
141
+ * Delete confirmation configuration
142
+ */
143
+ export interface DeleteConfig {
144
+ /** Confirmation message template */
145
+ confirmMessage?: string;
146
+ /** Whether to require typing name to confirm */
147
+ requireNameConfirmation?: boolean;
148
+ /** Warning message about consequences */
149
+ warningMessage?: string;
150
+ /** Related records that will be affected */
151
+ cascadeWarning?: string;
152
+ }
153
+
154
+ // Auto-Detection Configuration
155
+
156
+ /**
157
+ * Auto-detection configuration for CRUD resources
158
+ * Enables scanning for local/cloud providers, agents, etc.
159
+ */
160
+ export interface DetectionConfig<TDetected = unknown, TRecord = unknown> {
161
+ /** Whether detection is enabled */
162
+ enabled: boolean;
163
+ /** Function that performs detection */
164
+ detector: () => Promise<TDetected[]>;
165
+ /** Label for detection button */
166
+ label?: string;
167
+ /** Description of what will be detected */
168
+ description?: string;
169
+ /** Function to match detected item with existing record */
170
+ matcher: (detected: TDetected, existing: TRecord) => boolean;
171
+ }
172
+
173
+ // Combined CRUD Configuration
174
+
175
+ /**
176
+ * Complete CRUD configuration for a record-type manifest
177
+ */
178
+ export interface CRUDConfig<T = unknown, TDetected = unknown> {
179
+ /** List view configuration */
180
+ list: ListViewConfig<T>;
181
+ /** Form view configuration */
182
+ form?: FormViewConfig;
183
+ /** Detail view configuration */
184
+ detail?: DetailViewConfig;
185
+ /** Delete confirmation configuration */
186
+ delete?: DeleteConfig;
187
+ /** Auto-detection configuration */
188
+ detection?: DetectionConfig<TDetected, T>;
189
+ /** Whether records can be created */
190
+ canCreate?: boolean;
191
+ /** Whether records can be edited */
192
+ canEdit?: boolean;
193
+ /** Whether records can be deleted */
194
+ canDelete?: boolean;
195
+ /** Whether records can be duplicated */
196
+ canDuplicate?: boolean;
197
+ }
198
+
199
+ // Record Manifest (Manifest + CRUD Config)
200
+
201
+ /**
202
+ * A manifest for record-type configurations (providers, agents, etc.)
203
+ * Extends ConfigManifest with CRUD metadata for automatic UI generation.
204
+ */
205
+ export interface RecordManifest<T = unknown, TDetected = unknown> extends ConfigManifest {
206
+ /** CRUD configuration for list/form/detail views */
207
+ crud: CRUDConfig<T, TDetected>;
208
+ /** Schema for individual records (vs the full config) */
209
+ recordSchema?: ConfigManifest['schema'];
210
+ /**
211
+ * Discriminated routing configuration (single discriminator).
212
+ * When present, a discriminator field value determines which variant
213
+ * fields, schema, and overrides are active.
214
+ */
215
+ routing?: ManifestRouting;
216
+ /**
217
+ * Nested routing configurations (multiple discriminators).
218
+ * Used when a manifest contains multiple independent discriminated unions,
219
+ * each at a different path. For example, agent role configurations where
220
+ * each role (orchestration, development, etc.) has its own type discriminator.
221
+ *
222
+ * @example
223
+ * ```typescript
224
+ * nestedRoutings: [
225
+ * { path: 'agents.orchestration', discriminator: 'type', label: 'Orchestration Agent', variants: agentVariants },
226
+ * { path: 'agents.development', discriminator: 'type', label: 'Development Agent', variants: agentVariants },
227
+ * ]
228
+ * ```
229
+ */
230
+ nestedRoutings?: NestedRouting[];
231
+ }
232
+
233
+ /**
234
+ * Type guard to check if manifest has CRUD config
235
+ */
236
+ export function isRecordManifest(manifest: ConfigManifest): manifest is RecordManifest {
237
+ return 'crud' in manifest && manifest.crud !== undefined;
238
+ }
239
+
240
+ /**
241
+ * Type guard to check if manifest has nested routings
242
+ */
243
+ export function hasNestedRoutings(
244
+ manifest: ConfigManifest
245
+ ): manifest is RecordManifest & { nestedRoutings: NestedRouting[] } {
246
+ return (
247
+ isRecordManifest(manifest) &&
248
+ 'nestedRoutings' in manifest &&
249
+ Array.isArray(manifest.nestedRoutings) &&
250
+ manifest.nestedRoutings.length > 0
251
+ );
252
+ }
253
+
254
+ // CRUD Page Props
255
+
256
+ /**
257
+ * Props for the generic CRUD page component
258
+ */
259
+ export interface CRUDPageProps<T extends BaseRecord = BaseRecord> {
260
+ /** The record manifest */
261
+ manifest: RecordManifest<T>;
262
+ /** Surface for loading extensions (enables extension loading when set) */
263
+ surface?: ExtensionSurface;
264
+ /** Whether component is embedded (removes padding and FocusZone) */
265
+ embedded?: boolean;
266
+ /** Initial view mode */
267
+ initialMode?: CRUDViewMode;
268
+ /** Selected record ID (for edit/view/delete modes) */
269
+ selectedId?: string;
270
+ /** Called when navigating between modes */
271
+ onModeChange?: (mode: CRUDViewMode, recordId?: string) => void;
272
+ /** Called after successful create */
273
+ onCreated?: (record: T) => void;
274
+ /** Called after successful update */
275
+ onUpdated?: (record: T) => void;
276
+ /** Called after successful delete */
277
+ onDeleted?: (recordId: string) => void;
278
+ /** Custom list row renderer */
279
+ renderListRow?: (record: T, defaultRender: () => ReactNode) => ReactNode;
280
+ /** Custom form field renderer */
281
+ renderFormField?: (
282
+ field: ConfigFieldMeta,
283
+ value: unknown,
284
+ onChange: (value: unknown) => void,
285
+ defaultRender: () => ReactNode
286
+ ) => ReactNode;
287
+ /** Custom detail field renderer */
288
+ renderDetailField?: (
289
+ field: ConfigFieldMeta,
290
+ value: unknown,
291
+ defaultRender: () => ReactNode
292
+ ) => ReactNode;
293
+ /** Custom empty state */
294
+ renderEmpty?: () => ReactNode;
295
+ /** Custom header */
296
+ renderHeader?: (mode: CRUDViewMode, record?: T) => ReactNode;
297
+ /** Custom footer */
298
+ renderFooter?: (mode: CRUDViewMode, record?: T) => ReactNode;
299
+ }