@vibesdotdev/storage 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 (423) hide show
  1. package/README.md +75 -0
  2. package/SPEC.md +60 -0
  3. package/dist/adapters/index.d.ts +14 -0
  4. package/dist/adapters/index.d.ts.map +1 -0
  5. package/dist/adapters/index.js +15 -0
  6. package/dist/adapters/index.js.map +1 -0
  7. package/dist/bridge/index.d.ts +3 -0
  8. package/dist/bridge/index.d.ts.map +1 -0
  9. package/dist/bridge/index.js +2 -0
  10. package/dist/bridge/index.js.map +1 -0
  11. package/dist/bridge/storage-kind-bridge.d.ts +27 -0
  12. package/dist/bridge/storage-kind-bridge.d.ts.map +1 -0
  13. package/dist/bridge/storage-kind-bridge.js +110 -0
  14. package/dist/bridge/storage-kind-bridge.js.map +1 -0
  15. package/dist/bridge/types.d.ts +45 -0
  16. package/dist/bridge/types.d.ts.map +1 -0
  17. package/dist/bridge/types.js +8 -0
  18. package/dist/bridge/types.js.map +1 -0
  19. package/dist/cli/commands/list/storage.list.cli-command.descriptor.d.ts +4 -0
  20. package/dist/cli/commands/list/storage.list.cli-command.descriptor.d.ts.map +1 -0
  21. package/dist/cli/commands/list/storage.list.cli-command.descriptor.js +18 -0
  22. package/dist/cli/commands/list/storage.list.cli-command.descriptor.js.map +1 -0
  23. package/dist/cli/commands/list/storage.list.cli-command.impl.d.ts +11 -0
  24. package/dist/cli/commands/list/storage.list.cli-command.impl.d.ts.map +1 -0
  25. package/dist/cli/commands/list/storage.list.cli-command.impl.js +48 -0
  26. package/dist/cli/commands/list/storage.list.cli-command.impl.js.map +1 -0
  27. package/dist/cli/commands/sync/pull/storage.sync.pull.cli-command.descriptor.d.ts +4 -0
  28. package/dist/cli/commands/sync/pull/storage.sync.pull.cli-command.descriptor.d.ts.map +1 -0
  29. package/dist/cli/commands/sync/pull/storage.sync.pull.cli-command.descriptor.js +26 -0
  30. package/dist/cli/commands/sync/pull/storage.sync.pull.cli-command.descriptor.js.map +1 -0
  31. package/dist/cli/commands/sync/pull/storage.sync.pull.cli-command.impl.d.ts +13 -0
  32. package/dist/cli/commands/sync/pull/storage.sync.pull.cli-command.impl.d.ts.map +1 -0
  33. package/dist/cli/commands/sync/pull/storage.sync.pull.cli-command.impl.js +136 -0
  34. package/dist/cli/commands/sync/pull/storage.sync.pull.cli-command.impl.js.map +1 -0
  35. package/dist/cli/commands/sync/push/storage.sync.push.cli-command.descriptor.d.ts +4 -0
  36. package/dist/cli/commands/sync/push/storage.sync.push.cli-command.descriptor.d.ts.map +1 -0
  37. package/dist/cli/commands/sync/push/storage.sync.push.cli-command.descriptor.js +26 -0
  38. package/dist/cli/commands/sync/push/storage.sync.push.cli-command.descriptor.js.map +1 -0
  39. package/dist/cli/commands/sync/push/storage.sync.push.cli-command.impl.d.ts +13 -0
  40. package/dist/cli/commands/sync/push/storage.sync.push.cli-command.impl.d.ts.map +1 -0
  41. package/dist/cli/commands/sync/push/storage.sync.push.cli-command.impl.js +165 -0
  42. package/dist/cli/commands/sync/push/storage.sync.push.cli-command.impl.js.map +1 -0
  43. package/dist/cli/commands/sync/resolve/storage.sync.resolve.cli-command.descriptor.d.ts +4 -0
  44. package/dist/cli/commands/sync/resolve/storage.sync.resolve.cli-command.descriptor.d.ts.map +1 -0
  45. package/dist/cli/commands/sync/resolve/storage.sync.resolve.cli-command.descriptor.js +20 -0
  46. package/dist/cli/commands/sync/resolve/storage.sync.resolve.cli-command.descriptor.js.map +1 -0
  47. package/dist/cli/commands/sync/resolve/storage.sync.resolve.cli-command.impl.d.ts +12 -0
  48. package/dist/cli/commands/sync/resolve/storage.sync.resolve.cli-command.impl.d.ts.map +1 -0
  49. package/dist/cli/commands/sync/resolve/storage.sync.resolve.cli-command.impl.js +95 -0
  50. package/dist/cli/commands/sync/resolve/storage.sync.resolve.cli-command.impl.js.map +1 -0
  51. package/dist/cli/commands/sync/status/storage.sync.status.cli-command.descriptor.d.ts +4 -0
  52. package/dist/cli/commands/sync/status/storage.sync.status.cli-command.descriptor.d.ts.map +1 -0
  53. package/dist/cli/commands/sync/status/storage.sync.status.cli-command.descriptor.js +15 -0
  54. package/dist/cli/commands/sync/status/storage.sync.status.cli-command.descriptor.js.map +1 -0
  55. package/dist/cli/commands/sync/status/storage.sync.status.cli-command.impl.d.ts +13 -0
  56. package/dist/cli/commands/sync/status/storage.sync.status.cli-command.impl.d.ts.map +1 -0
  57. package/dist/cli/commands/sync/status/storage.sync.status.cli-command.impl.js +150 -0
  58. package/dist/cli/commands/sync/status/storage.sync.status.cli-command.impl.js.map +1 -0
  59. package/dist/cli/context.consumer.d.ts +26 -0
  60. package/dist/cli/context.consumer.d.ts.map +1 -0
  61. package/dist/cli/context.consumer.js +164 -0
  62. package/dist/cli/context.consumer.js.map +1 -0
  63. package/dist/cli/storage.cli-group.descriptor.d.ts +4 -0
  64. package/dist/cli/storage.cli-group.descriptor.d.ts.map +1 -0
  65. package/dist/cli/storage.cli-group.descriptor.js +11 -0
  66. package/dist/cli/storage.cli-group.descriptor.js.map +1 -0
  67. package/dist/cli/storage.sync.cli-group.descriptor.d.ts +4 -0
  68. package/dist/cli/storage.sync.cli-group.descriptor.d.ts.map +1 -0
  69. package/dist/cli/storage.sync.cli-group.descriptor.js +12 -0
  70. package/dist/cli/storage.sync.cli-group.descriptor.js.map +1 -0
  71. package/dist/cli/types.d.ts +26 -0
  72. package/dist/cli/types.d.ts.map +1 -0
  73. package/dist/cli/types.js +11 -0
  74. package/dist/cli/types.js.map +1 -0
  75. package/dist/client/index.d.ts +10 -0
  76. package/dist/client/index.d.ts.map +1 -0
  77. package/dist/client/index.js +10 -0
  78. package/dist/client/index.js.map +1 -0
  79. package/dist/client/list-browsable-adapters.d.ts +31 -0
  80. package/dist/client/list-browsable-adapters.d.ts.map +1 -0
  81. package/dist/client/list-browsable-adapters.js +40 -0
  82. package/dist/client/list-browsable-adapters.js.map +1 -0
  83. package/dist/daemon/commands/sync.d.ts +23 -0
  84. package/dist/daemon/commands/sync.d.ts.map +1 -0
  85. package/dist/daemon/commands/sync.js +169 -0
  86. package/dist/daemon/commands/sync.js.map +1 -0
  87. package/dist/docs/adapters.docs.descriptor.d.ts +4 -0
  88. package/dist/docs/adapters.docs.descriptor.d.ts.map +1 -0
  89. package/dist/docs/adapters.docs.descriptor.js +223 -0
  90. package/dist/docs/adapters.docs.descriptor.js.map +1 -0
  91. package/dist/docs/manifests.docs.descriptor.d.ts +4 -0
  92. package/dist/docs/manifests.docs.descriptor.d.ts.map +1 -0
  93. package/dist/docs/manifests.docs.descriptor.js +316 -0
  94. package/dist/docs/manifests.docs.descriptor.js.map +1 -0
  95. package/dist/docs/records.docs.descriptor.d.ts +4 -0
  96. package/dist/docs/records.docs.descriptor.d.ts.map +1 -0
  97. package/dist/docs/records.docs.descriptor.js +269 -0
  98. package/dist/docs/records.docs.descriptor.js.map +1 -0
  99. package/dist/docs/sync.docs.descriptor.d.ts +4 -0
  100. package/dist/docs/sync.docs.descriptor.d.ts.map +1 -0
  101. package/dist/docs/sync.docs.descriptor.js +279 -0
  102. package/dist/docs/sync.docs.descriptor.js.map +1 -0
  103. package/dist/index.d.ts +27 -0
  104. package/dist/index.d.ts.map +1 -0
  105. package/dist/index.js +29 -0
  106. package/dist/index.js.map +1 -0
  107. package/dist/interfaces/adapter.d.ts +382 -0
  108. package/dist/interfaces/adapter.d.ts.map +1 -0
  109. package/dist/interfaces/adapter.js +11 -0
  110. package/dist/interfaces/adapter.js.map +1 -0
  111. package/dist/interfaces/document-store.d.ts +62 -0
  112. package/dist/interfaces/document-store.d.ts.map +1 -0
  113. package/dist/interfaces/document-store.js +8 -0
  114. package/dist/interfaces/document-store.js.map +1 -0
  115. package/dist/interfaces/index.d.ts +17 -0
  116. package/dist/interfaces/index.d.ts.map +1 -0
  117. package/dist/interfaces/index.js +24 -0
  118. package/dist/interfaces/index.js.map +1 -0
  119. package/dist/interfaces/key-value.d.ts +95 -0
  120. package/dist/interfaces/key-value.d.ts.map +1 -0
  121. package/dist/interfaces/key-value.js +8 -0
  122. package/dist/interfaces/key-value.js.map +1 -0
  123. package/dist/interfaces/query-builder.d.ts +31 -0
  124. package/dist/interfaces/query-builder.d.ts.map +1 -0
  125. package/dist/interfaces/query-builder.js +11 -0
  126. package/dist/interfaces/query-builder.js.map +1 -0
  127. package/dist/interfaces/record/index.d.ts +7 -0
  128. package/dist/interfaces/record/index.d.ts.map +1 -0
  129. package/dist/interfaces/record/index.js +7 -0
  130. package/dist/interfaces/record/index.js.map +1 -0
  131. package/dist/interfaces/record/interface.d.ts +593 -0
  132. package/dist/interfaces/record/interface.d.ts.map +1 -0
  133. package/dist/interfaces/record/interface.js +49 -0
  134. package/dist/interfaces/record/interface.js.map +1 -0
  135. package/dist/interfaces/repository.d.ts +262 -0
  136. package/dist/interfaces/repository.d.ts.map +1 -0
  137. package/dist/interfaces/repository.js +8 -0
  138. package/dist/interfaces/repository.js.map +1 -0
  139. package/dist/interfaces/schema/index.d.ts +8 -0
  140. package/dist/interfaces/schema/index.d.ts.map +1 -0
  141. package/dist/interfaces/schema/index.js +10 -0
  142. package/dist/interfaces/schema/index.js.map +1 -0
  143. package/dist/interfaces/schema/schema-interface.d.ts +516 -0
  144. package/dist/interfaces/schema/schema-interface.d.ts.map +1 -0
  145. package/dist/interfaces/schema/schema-interface.js +31 -0
  146. package/dist/interfaces/schema/schema-interface.js.map +1 -0
  147. package/dist/interfaces/schema/table-interface.d.ts +250 -0
  148. package/dist/interfaces/schema/table-interface.d.ts.map +1 -0
  149. package/dist/interfaces/schema/table-interface.js +31 -0
  150. package/dist/interfaces/schema/table-interface.js.map +1 -0
  151. package/dist/interfaces/storage-consumer-fs.d.ts +40 -0
  152. package/dist/interfaces/storage-consumer-fs.d.ts.map +1 -0
  153. package/dist/interfaces/storage-consumer-fs.js +42 -0
  154. package/dist/interfaces/storage-consumer-fs.js.map +1 -0
  155. package/dist/manifest/base.d.ts +187 -0
  156. package/dist/manifest/base.d.ts.map +1 -0
  157. package/dist/manifest/base.js +516 -0
  158. package/dist/manifest/base.js.map +1 -0
  159. package/dist/manifest/cloud-sync.consumer.d.ts +7 -0
  160. package/dist/manifest/cloud-sync.consumer.d.ts.map +1 -0
  161. package/dist/manifest/cloud-sync.consumer.js +82 -0
  162. package/dist/manifest/cloud-sync.consumer.js.map +1 -0
  163. package/dist/manifest/index.d.ts +7 -0
  164. package/dist/manifest/index.d.ts.map +1 -0
  165. package/dist/manifest/index.js +7 -0
  166. package/dist/manifest/index.js.map +1 -0
  167. package/dist/manifest/source-policy.d.ts +8 -0
  168. package/dist/manifest/source-policy.d.ts.map +1 -0
  169. package/dist/manifest/source-policy.js +62 -0
  170. package/dist/manifest/source-policy.js.map +1 -0
  171. package/dist/paths.d.ts +6 -0
  172. package/dist/paths.d.ts.map +1 -0
  173. package/dist/paths.js +152 -0
  174. package/dist/paths.js.map +1 -0
  175. package/dist/policy/context.d.ts +9 -0
  176. package/dist/policy/context.d.ts.map +1 -0
  177. package/dist/policy/context.js +29 -0
  178. package/dist/policy/context.js.map +1 -0
  179. package/dist/policy/index.d.ts +4 -0
  180. package/dist/policy/index.d.ts.map +1 -0
  181. package/dist/policy/index.js +4 -0
  182. package/dist/policy/index.js.map +1 -0
  183. package/dist/policy/overrides.d.ts +40 -0
  184. package/dist/policy/overrides.d.ts.map +1 -0
  185. package/dist/policy/overrides.js +37 -0
  186. package/dist/policy/overrides.js.map +1 -0
  187. package/dist/policy/persistence.d.ts +38 -0
  188. package/dist/policy/persistence.d.ts.map +1 -0
  189. package/dist/policy/persistence.js +65 -0
  190. package/dist/policy/persistence.js.map +1 -0
  191. package/dist/policy/types.d.ts +21 -0
  192. package/dist/policy/types.d.ts.map +1 -0
  193. package/dist/policy/types.js +7 -0
  194. package/dist/policy/types.js.map +1 -0
  195. package/dist/record/base.d.ts +186 -0
  196. package/dist/record/base.d.ts.map +1 -0
  197. package/dist/record/base.js +1437 -0
  198. package/dist/record/base.js.map +1 -0
  199. package/dist/record/events.d.ts +71 -0
  200. package/dist/record/events.d.ts.map +1 -0
  201. package/dist/record/events.js +52 -0
  202. package/dist/record/events.js.map +1 -0
  203. package/dist/record/extensions.d.ts +51 -0
  204. package/dist/record/extensions.d.ts.map +1 -0
  205. package/dist/record/extensions.js +222 -0
  206. package/dist/record/extensions.js.map +1 -0
  207. package/dist/record/index.d.ts +7 -0
  208. package/dist/record/index.d.ts.map +1 -0
  209. package/dist/record/index.js +7 -0
  210. package/dist/record/index.js.map +1 -0
  211. package/dist/resolver/storage-backed-resolver.d.ts +23 -0
  212. package/dist/resolver/storage-backed-resolver.d.ts.map +1 -0
  213. package/dist/resolver/storage-backed-resolver.js +187 -0
  214. package/dist/resolver/storage-backed-resolver.js.map +1 -0
  215. package/dist/schemas/adapter-descriptor.d.ts +108 -0
  216. package/dist/schemas/adapter-descriptor.d.ts.map +1 -0
  217. package/dist/schemas/adapter-descriptor.js +101 -0
  218. package/dist/schemas/adapter-descriptor.js.map +1 -0
  219. package/dist/schemas/index.d.ts +14 -0
  220. package/dist/schemas/index.d.ts.map +1 -0
  221. package/dist/schemas/index.js +12 -0
  222. package/dist/schemas/index.js.map +1 -0
  223. package/dist/schemas/manifest-descriptor.d.ts +110 -0
  224. package/dist/schemas/manifest-descriptor.d.ts.map +1 -0
  225. package/dist/schemas/manifest-descriptor.js +114 -0
  226. package/dist/schemas/manifest-descriptor.js.map +1 -0
  227. package/dist/schemas/record/descriptor.d.ts +570 -0
  228. package/dist/schemas/record/descriptor.d.ts.map +1 -0
  229. package/dist/schemas/record/descriptor.js +389 -0
  230. package/dist/schemas/record/descriptor.js.map +1 -0
  231. package/dist/schemas/record/index.d.ts +8 -0
  232. package/dist/schemas/record/index.d.ts.map +1 -0
  233. package/dist/schemas/record/index.js +7 -0
  234. package/dist/schemas/record/index.js.map +1 -0
  235. package/dist/schemas/record/relation.d.ts +36 -0
  236. package/dist/schemas/record/relation.d.ts.map +1 -0
  237. package/dist/schemas/record/relation.js +37 -0
  238. package/dist/schemas/record/relation.js.map +1 -0
  239. package/dist/schemas/schema/descriptor.d.ts +231 -0
  240. package/dist/schemas/schema/descriptor.d.ts.map +1 -0
  241. package/dist/schemas/schema/descriptor.js +205 -0
  242. package/dist/schemas/schema/descriptor.js.map +1 -0
  243. package/dist/schemas/schema/index.d.ts +7 -0
  244. package/dist/schemas/schema/index.d.ts.map +1 -0
  245. package/dist/schemas/schema/index.js +7 -0
  246. package/dist/schemas/schema/index.js.map +1 -0
  247. package/dist/schemas/sync-bridge-descriptor.d.ts +124 -0
  248. package/dist/schemas/sync-bridge-descriptor.d.ts.map +1 -0
  249. package/dist/schemas/sync-bridge-descriptor.js +67 -0
  250. package/dist/schemas/sync-bridge-descriptor.js.map +1 -0
  251. package/dist/server/manifest-route.d.ts +92 -0
  252. package/dist/server/manifest-route.d.ts.map +1 -0
  253. package/dist/server/manifest-route.js +226 -0
  254. package/dist/server/manifest-route.js.map +1 -0
  255. package/dist/storage-policy.context.descriptor.d.ts +16 -0
  256. package/dist/storage-policy.context.descriptor.d.ts.map +1 -0
  257. package/dist/storage-policy.context.descriptor.js +16 -0
  258. package/dist/storage-policy.context.descriptor.js.map +1 -0
  259. package/dist/storage-policy.context.server.d.ts +14 -0
  260. package/dist/storage-policy.context.server.d.ts.map +1 -0
  261. package/dist/storage-policy.context.server.js +27 -0
  262. package/dist/storage-policy.context.server.js.map +1 -0
  263. package/dist/storage.plugin.d.ts +38 -0
  264. package/dist/storage.plugin.d.ts.map +1 -0
  265. package/dist/storage.plugin.js +204 -0
  266. package/dist/storage.plugin.js.map +1 -0
  267. package/dist/sync/cloud-pull.d.ts +15 -0
  268. package/dist/sync/cloud-pull.d.ts.map +1 -0
  269. package/dist/sync/cloud-pull.js +130 -0
  270. package/dist/sync/cloud-pull.js.map +1 -0
  271. package/dist/sync/cloud-record-crud-config.d.ts +19 -0
  272. package/dist/sync/cloud-record-crud-config.d.ts.map +1 -0
  273. package/dist/sync/cloud-record-crud-config.js +22 -0
  274. package/dist/sync/cloud-record-crud-config.js.map +1 -0
  275. package/dist/sync/record-sync-bridge.d.ts +5 -0
  276. package/dist/sync/record-sync-bridge.d.ts.map +1 -0
  277. package/dist/sync/record-sync-bridge.js +121 -0
  278. package/dist/sync/record-sync-bridge.js.map +1 -0
  279. package/dist/sync/resolve-sync-target.d.ts +23 -0
  280. package/dist/sync/resolve-sync-target.d.ts.map +1 -0
  281. package/dist/sync/resolve-sync-target.js +45 -0
  282. package/dist/sync/resolve-sync-target.js.map +1 -0
  283. package/dist/sync/schemas/cloud-pull.d.ts +25 -0
  284. package/dist/sync/schemas/cloud-pull.d.ts.map +1 -0
  285. package/dist/sync/schemas/cloud-pull.js +7 -0
  286. package/dist/sync/schemas/cloud-pull.js.map +1 -0
  287. package/dist/sync/schemas/index.d.ts +9 -0
  288. package/dist/sync/schemas/index.d.ts.map +1 -0
  289. package/dist/sync/schemas/index.js +9 -0
  290. package/dist/sync/schemas/index.js.map +1 -0
  291. package/dist/sync/schemas/sync-helpers.d.ts +17 -0
  292. package/dist/sync/schemas/sync-helpers.d.ts.map +1 -0
  293. package/dist/sync/schemas/sync-helpers.js +7 -0
  294. package/dist/sync/schemas/sync-helpers.js.map +1 -0
  295. package/dist/sync/schemas/sync-state.d.ts +65 -0
  296. package/dist/sync/schemas/sync-state.d.ts.map +1 -0
  297. package/dist/sync/schemas/sync-state.js +32 -0
  298. package/dist/sync/schemas/sync-state.js.map +1 -0
  299. package/dist/sync/sync-bridge.d.ts +80 -0
  300. package/dist/sync/sync-bridge.d.ts.map +1 -0
  301. package/dist/sync/sync-bridge.js +617 -0
  302. package/dist/sync/sync-bridge.js.map +1 -0
  303. package/dist/sync/sync-manifest.d.ts +20 -0
  304. package/dist/sync/sync-manifest.d.ts.map +1 -0
  305. package/dist/sync/sync-manifest.js +140 -0
  306. package/dist/sync/sync-manifest.js.map +1 -0
  307. package/dist/sync/sync-state.consumer.d.ts +23 -0
  308. package/dist/sync/sync-state.consumer.d.ts.map +1 -0
  309. package/dist/sync/sync-state.consumer.js +111 -0
  310. package/dist/sync/sync-state.consumer.js.map +1 -0
  311. package/dist/transform/index.d.ts +75 -0
  312. package/dist/transform/index.d.ts.map +1 -0
  313. package/dist/transform/index.js +81 -0
  314. package/dist/transform/index.js.map +1 -0
  315. package/dist/transform/transform-descriptor.d.ts +51 -0
  316. package/dist/transform/transform-descriptor.d.ts.map +1 -0
  317. package/dist/transform/transform-descriptor.js +30 -0
  318. package/dist/transform/transform-descriptor.js.map +1 -0
  319. package/dist/tui/storage-explorer.descriptor.d.ts +14 -0
  320. package/dist/tui/storage-explorer.descriptor.d.ts.map +1 -0
  321. package/dist/tui/storage-explorer.descriptor.js +29 -0
  322. package/dist/tui/storage-explorer.descriptor.js.map +1 -0
  323. package/dist/tui/storage-explorer.impl.consumer.d.ts +11 -0
  324. package/dist/tui/storage-explorer.impl.consumer.d.ts.map +1 -0
  325. package/dist/tui/storage-explorer.impl.consumer.js +13 -0
  326. package/dist/tui/storage-explorer.impl.consumer.js.map +1 -0
  327. package/dist/tui/storage-open.descriptor.d.ts +14 -0
  328. package/dist/tui/storage-open.descriptor.d.ts.map +1 -0
  329. package/dist/tui/storage-open.descriptor.js +28 -0
  330. package/dist/tui/storage-open.descriptor.js.map +1 -0
  331. package/dist/tui/storage-open.impl.consumer.d.ts +11 -0
  332. package/dist/tui/storage-open.impl.consumer.d.ts.map +1 -0
  333. package/dist/tui/storage-open.impl.consumer.js +13 -0
  334. package/dist/tui/storage-open.impl.consumer.js.map +1 -0
  335. package/dist/utils/error-context.d.ts +2 -0
  336. package/dist/utils/error-context.d.ts.map +1 -0
  337. package/dist/utils/error-context.js +17 -0
  338. package/dist/utils/error-context.js.map +1 -0
  339. package/package.json +241 -0
  340. package/src/adapters/index.ts +13 -0
  341. package/src/bridge/index.ts +2 -0
  342. package/src/bridge/storage-kind-bridge.ts +131 -0
  343. package/src/bridge/types.ts +46 -0
  344. package/src/cli/commands/list/storage.list.cli-command.descriptor.ts +20 -0
  345. package/src/cli/commands/list/storage.list.cli-command.impl.ts +72 -0
  346. package/src/cli/commands/sync/pull/storage.sync.pull.cli-command.descriptor.ts +28 -0
  347. package/src/cli/commands/sync/pull/storage.sync.pull.cli-command.impl.ts +171 -0
  348. package/src/cli/commands/sync/push/storage.sync.push.cli-command.descriptor.ts +28 -0
  349. package/src/cli/commands/sync/push/storage.sync.push.cli-command.impl.ts +213 -0
  350. package/src/cli/commands/sync/resolve/storage.sync.resolve.cli-command.descriptor.ts +22 -0
  351. package/src/cli/commands/sync/resolve/storage.sync.resolve.cli-command.impl.ts +129 -0
  352. package/src/cli/commands/sync/status/storage.sync.status.cli-command.descriptor.ts +17 -0
  353. package/src/cli/commands/sync/status/storage.sync.status.cli-command.impl.ts +192 -0
  354. package/src/cli/context.consumer.ts +195 -0
  355. package/src/cli/storage.cli-group.descriptor.ts +13 -0
  356. package/src/cli/storage.sync.cli-group.descriptor.ts +14 -0
  357. package/src/cli/types.ts +25 -0
  358. package/src/client/index.ts +10 -0
  359. package/src/client/list-browsable-adapters.ts +42 -0
  360. package/src/daemon/commands/sync.ts +225 -0
  361. package/src/docs/adapters.docs.descriptor.ts +225 -0
  362. package/src/docs/manifests.docs.descriptor.ts +318 -0
  363. package/src/docs/records.docs.descriptor.ts +271 -0
  364. package/src/docs/sync.docs.descriptor.ts +281 -0
  365. package/src/index.ts +109 -0
  366. package/src/interfaces/adapter.ts +451 -0
  367. package/src/interfaces/document-store.ts +74 -0
  368. package/src/interfaces/index.ts +117 -0
  369. package/src/interfaces/key-value.ts +112 -0
  370. package/src/interfaces/query-builder.ts +31 -0
  371. package/src/interfaces/record/index.ts +58 -0
  372. package/src/interfaces/record/interface.ts +723 -0
  373. package/src/interfaces/repository.ts +300 -0
  374. package/src/interfaces/schema/index.ts +37 -0
  375. package/src/interfaces/schema/schema-interface.ts +586 -0
  376. package/src/interfaces/schema/table-interface.ts +314 -0
  377. package/src/interfaces/storage-consumer-fs.ts +66 -0
  378. package/src/manifest/base.ts +594 -0
  379. package/src/manifest/cloud-sync.consumer.ts +120 -0
  380. package/src/manifest/index.ts +7 -0
  381. package/src/manifest/source-policy.ts +74 -0
  382. package/src/paths.ts +171 -0
  383. package/src/policy/context.ts +30 -0
  384. package/src/policy/index.ts +20 -0
  385. package/src/policy/overrides.ts +46 -0
  386. package/src/policy/persistence.ts +117 -0
  387. package/src/policy/types.ts +28 -0
  388. package/src/record/base.ts +1872 -0
  389. package/src/record/events.ts +56 -0
  390. package/src/record/extensions.ts +308 -0
  391. package/src/record/index.ts +7 -0
  392. package/src/resolver/storage-backed-resolver.ts +255 -0
  393. package/src/schemas/adapter-descriptor.ts +128 -0
  394. package/src/schemas/index.ts +104 -0
  395. package/src/schemas/manifest-descriptor.ts +143 -0
  396. package/src/schemas/record/descriptor.ts +621 -0
  397. package/src/schemas/record/index.ts +60 -0
  398. package/src/schemas/record/relation.ts +49 -0
  399. package/src/schemas/schema/descriptor.ts +278 -0
  400. package/src/schemas/schema/index.ts +14 -0
  401. package/src/schemas/sync-bridge-descriptor.ts +143 -0
  402. package/src/server/manifest-route.ts +319 -0
  403. package/src/storage-policy.context.descriptor.ts +17 -0
  404. package/src/storage-policy.context.server.ts +34 -0
  405. package/src/storage.plugin.ts +264 -0
  406. package/src/sync/cloud-pull.ts +202 -0
  407. package/src/sync/cloud-record-crud-config.ts +41 -0
  408. package/src/sync/record-sync-bridge.ts +183 -0
  409. package/src/sync/resolve-sync-target.ts +57 -0
  410. package/src/sync/schemas/cloud-pull.ts +26 -0
  411. package/src/sync/schemas/index.ts +18 -0
  412. package/src/sync/schemas/sync-helpers.ts +18 -0
  413. package/src/sync/schemas/sync-state.ts +41 -0
  414. package/src/sync/sync-bridge.ts +763 -0
  415. package/src/sync/sync-manifest.ts +212 -0
  416. package/src/sync/sync-state.consumer.ts +144 -0
  417. package/src/transform/index.ts +130 -0
  418. package/src/transform/transform-descriptor.ts +53 -0
  419. package/src/tui/storage-explorer.descriptor.ts +32 -0
  420. package/src/tui/storage-explorer.impl.consumer.ts +14 -0
  421. package/src/tui/storage-open.descriptor.ts +31 -0
  422. package/src/tui/storage-open.impl.consumer.ts +14 -0
  423. package/src/utils/error-context.ts +19 -0
@@ -0,0 +1,316 @@
1
+ const descriptor = {
2
+ kind: 'docs/topic',
3
+ id: 'storage.manifests',
4
+ title: 'Storage Manifests',
5
+ summary: 'Manifest declarations, allowed adapters, and namespace organization',
6
+ body: {
7
+ type: 'markdown',
8
+ sourceType: 'raw',
9
+ source: `---
10
+ title: Storage Manifests
11
+ summary: Manifest declarations, allowed adapters, and namespace organization
12
+ tags: [storage, manifests, declarations, adapters, namespaces]
13
+ parent: storage
14
+ order: 4
15
+ surfaces: [cli, web, in-app]
16
+ hardware: [consumer, cloud]
17
+ ---
18
+
19
+ # Storage Manifests
20
+
21
+ Manifests declare the structure and storage requirements for a data type. The \`storage/manifest\` runtime kind defines what data to store, which adapters are allowed, and how the data is organized.
22
+
23
+ ## Manifest Structure
24
+
25
+ \`\`\`ts
26
+ interface StorageManifestDescriptor {
27
+ kind: 'storage/manifest';
28
+ id: string; // unique identifier
29
+ namespace: string; // organizational namespace
30
+ schema: ZodSchema; // data validation schema
31
+ allowedAdapters?: string[]; // allowed adapter IDs
32
+ adapterConfig?: {
33
+ [adapterId: string]: {
34
+ [key: string]: unknown;
35
+ };
36
+ };
37
+ context?: {
38
+ hardware?: ('consumer' | 'cloud')[];
39
+ environment?: string[];
40
+ };
41
+ enabled?: boolean;
42
+ }
43
+ \`\`\`
44
+
45
+ ## Defining a Manifest
46
+
47
+ ### Basic Manifest
48
+
49
+ \`\`\`ts
50
+ import { z } from 'zod';
51
+ import type { StorageManifestDescriptor } from '@vibesdotdev/storage';
52
+
53
+ const settingsManifest: StorageManifestDescriptor = {
54
+ kind: 'storage/manifest',
55
+ id: 'app/settings',
56
+ namespace: 'app',
57
+ schema: z.object({
58
+ theme: z.enum(['light', 'dark', 'system']),
59
+ language: z.string().default('en'),
60
+ notifications: z.boolean().default(true),
61
+ autoSave: z.boolean().default(true)
62
+ })
63
+ };
64
+ \`\`\`
65
+
66
+ ### Manifest with Adapter Constraints
67
+
68
+ \`\`\`ts
69
+ const userPreferencesManifest: StorageManifestDescriptor = {
70
+ kind: 'storage/manifest',
71
+ id: 'user/preferences',
72
+ namespace: 'user',
73
+ schema: z.object({
74
+ // ... schema fields
75
+ }),
76
+ allowedAdapters: [
77
+ 'storage.adapter.libsql',
78
+ 'storage.adapter.d1',
79
+ 'storage.adapter.drizzle'
80
+ ],
81
+ adapterConfig: {
82
+ 'storage.cloud-api': {
83
+ endpoint: 'https://storage.vibes.dev/user/preferences'
84
+ }
85
+ }
86
+ };
87
+ \`\`\`
88
+
89
+ ### Manifest with Context Rules
90
+
91
+ \`\`\`ts
92
+ const productionConfigManifest: StorageManifestDescriptor = {
93
+ kind: 'storage/manifest',
94
+ id: 'app/production-config',
95
+ namespace: 'app',
96
+ schema: z.object({
97
+ // ... schema fields
98
+ }),
99
+ context: {
100
+ hardware: ['cloud'],
101
+ environment: ['production']
102
+ }
103
+ };
104
+ \`\`\`
105
+
106
+ ## Using StorageManifest Class
107
+
108
+ The \`StorageManifest\` class provides document operations:
109
+
110
+ \`\`\`ts
111
+ import { StorageManifest } from '@vibesdotdev/storage';
112
+ import { getVibesRuntime } from '@vibesdotdev/runtime';
113
+
114
+ const runtime = getVibesRuntime();
115
+
116
+ // Create manifest instance
117
+ const settings = new StorageManifest('app/settings');
118
+
119
+ // Load data
120
+ const data = await settings.load();
121
+
122
+ // Save data
123
+ await settings.save({
124
+ theme: 'dark',
125
+ language: 'en',
126
+ notifications: true
127
+ });
128
+
129
+ // Check existence
130
+ const exists = await settings.exists();
131
+
132
+ // Delete data
133
+ await settings.delete();
134
+ \`\`\`
135
+
136
+ ## Manifest Namespaces
137
+
138
+ Namespaces organize manifests hierarchically:
139
+
140
+ \`\`\`
141
+ app/settings
142
+ app/preferences
143
+ app/theme
144
+ user/profile
145
+ user/preferences
146
+ system/config
147
+ \`\`\`
148
+
149
+ **Namespace conventions:**
150
+ - \`app/*\` — Application-level configuration
151
+ - \`user/*\` — User-specific data
152
+ - \`system/*\` — System-wide configuration
153
+ - \`workspace/*\` — Workspace-shared data
154
+
155
+ ## Adapter Configuration
156
+
157
+ Manifests can configure adapter-specific behavior:
158
+
159
+ ### Cloud-API Endpoint
160
+
161
+ \`\`\`ts
162
+ {
163
+ adapterConfig: {
164
+ 'storage.cloud-api': {
165
+ endpoint: 'https://storage.vibes.dev/app/settings',
166
+ auth: 'bearer-token'
167
+ }
168
+ }
169
+ }
170
+ \`\`\`
171
+
172
+ ### Drizzle Table Name
173
+
174
+ \`\`\`ts
175
+ {
176
+ adapterConfig: {
177
+ 'storage.adapter.drizzle': {
178
+ tableName: 'app_settings',
179
+ schemaName: 'public'
180
+ }
181
+ }
182
+ }
183
+ \`\`\`
184
+
185
+ ### LibSQL Database Path
186
+
187
+ \`\`\`ts
188
+ {
189
+ adapterConfig: {
190
+ 'storage.adapter.libsql': {
191
+ dbPath: './data/app.db',
192
+ authToken: 'optional-token'
193
+ }
194
+ }
195
+ }
196
+ \`\`\`
197
+
198
+ ## Manifest Inheritance
199
+
200
+ Manifests can extend other manifests:
201
+
202
+ \`\`\`ts
203
+ const baseManifest: StorageManifestDescriptor = {
204
+ kind: 'storage/manifest',
205
+ id: 'app/base-settings',
206
+ namespace: 'app',
207
+ schema: z.object({
208
+ theme: z.enum(['light', 'dark']),
209
+ language: z.string()
210
+ })
211
+ };
212
+
213
+ const extendedManifest: StorageManifestDescriptor = {
214
+ ...baseManifest,
215
+ id: 'app/extended-settings',
216
+ schema: baseManifest.schema.extend({
217
+ notifications: z.boolean(),
218
+ autoSave: z.boolean()
219
+ })
220
+ };
221
+ \`\`\`
222
+
223
+ ## Manifest Validation
224
+
225
+ Manifests validate data on load and save:
226
+
227
+ \`\`\`ts
228
+ try {
229
+ const settings = new StorageManifest('app/settings');
230
+ await settings.save({ theme: 'invalid' }); // fails validation
231
+ } catch (error) {
232
+ console.error(error); // ZodError with details
233
+ }
234
+ \`\`\`
235
+
236
+ ## Manifest Migration
237
+
238
+ Update schemas while maintaining backward compatibility:
239
+
240
+ \`\`\`ts
241
+ const settingsManifestV2: StorageManifestDescriptor = {
242
+ kind: 'storage/manifest',
243
+ id: 'app/settings',
244
+ namespace: 'app',
245
+ schema: z.object({
246
+ theme: z.enum(['light', 'dark', 'system']),
247
+ language: z.string().default('en'),
248
+ // New field with default for migration
249
+ notifications: z.boolean().default(true)
250
+ }),
251
+ // Migration transform
252
+ transform: {
253
+ fromRow: (row) => ({
254
+ ...row,
255
+ notifications: row.notifications ?? true
256
+ })
257
+ }
258
+ };
259
+ \`\`\`
260
+
261
+ ## Listing Manifests
262
+
263
+ List all registered manifests:
264
+
265
+ \`\`\`bash
266
+ vibes storage list --kind manifest
267
+ \`\`\`
268
+
269
+ **Output:**
270
+ \`\`\`
271
+ ID Namespace Adapters
272
+ ────────────────────────────────────────────────
273
+ app/settings app libsql, cloud-api
274
+ user/preferences user drizzle, cloud-api
275
+ system/config system d1
276
+ \`\`\`
277
+
278
+ ## Manifest Discovery
279
+
280
+ Query manifests by namespace:
281
+
282
+ \`\`\`ts
283
+ const appManifests = runtime.query('storage/manifest')
284
+ .filter(d => d.namespace === 'app')
285
+ .descriptors();
286
+
287
+ const cloudManifests = runtime.query('storage/manifest')
288
+ .filter(d => d.context?.hardware?.includes('cloud'))
289
+ .descriptors();
290
+ \`\`\`
291
+
292
+ ## Best Practices
293
+
294
+ 1. **Use descriptive IDs** — \`app/settings\` not \`settings\`
295
+ 2. **Namespace consistently** — Group related manifests
296
+ 3. **Declare adapter constraints** — Be explicit about allowed adapters
297
+ 4. **Version schemas** — Use transforms for migrations
298
+ 5. **Test with multiple adapters** — Ensure adapter compatibility
299
+
300
+ :::card{title="See also"}
301
+ - [\`storage.adapters\`](storage.adapters) — Adapter implementations
302
+ - [\`storage.records\`](storage.records) — Record CRUD operations
303
+ - [\`storage.sync\`](storage.sync) — Cross-app synchronization
304
+ - [\`config.manifests\`](config.manifests) — Configuration manifests
305
+ :::
306
+ `
307
+ },
308
+ parent: 'storage',
309
+ order: 4,
310
+ tags: ['storage', 'manifests', 'declarations', 'adapters', 'namespaces'],
311
+ surfaces: ['cli', 'web', 'in-app'],
312
+ hardware: ['consumer', 'cloud'],
313
+ enabled: true
314
+ };
315
+ export default descriptor;
316
+ //# sourceMappingURL=manifests.docs.descriptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifests.docs.descriptor.js","sourceRoot":"","sources":["../../src/docs/manifests.docs.descriptor.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,GAAwB;IACvC,IAAI,EAAE,YAAY;IAClB,EAAE,EAAE,mBAAmB;IACvB,KAAK,EAAE,mBAAmB;IAC1B,OAAO,EAAE,qEAAqE;IAC9E,IAAI,EAAE;QACL,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE,KAAK;QACjB,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyST;KACC;IACD,MAAM,EAAE,SAAS;IACjB,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,CAAC;IACxE,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC;IAClC,QAAQ,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC;IAC/B,OAAO,EAAE,IAAI;CACb,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { DocsTopicDescriptor } from '@vibesdotdev/docs';
2
+ declare const descriptor: DocsTopicDescriptor;
3
+ export default descriptor;
4
+ //# sourceMappingURL=records.docs.descriptor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"records.docs.descriptor.d.ts","sourceRoot":"","sources":["../../src/docs/records.docs.descriptor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,QAAA,MAAM,UAAU,EAAE,mBA0QjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,269 @@
1
+ const descriptor = {
2
+ kind: 'docs/topic',
3
+ id: 'storage.records',
4
+ title: 'Storage Records',
5
+ summary: 'Record CRUD operations, typing, validation, and transforms',
6
+ body: {
7
+ type: 'markdown',
8
+ sourceType: 'raw',
9
+ source: `---
10
+ title: Storage Records
11
+ summary: Record CRUD operations, typing, validation, and transforms
12
+ tags: [storage, records, crud, typing, validation]
13
+ parent: storage
14
+ order: 2
15
+ surfaces: [cli, web, in-app]
16
+ hardware: [consumer, cloud]
17
+ ---
18
+
19
+ # Storage Records
20
+
21
+ Records provide type-safe CRUD operations for structured data. The \`storage/record\` runtime kind defines the interface for single-table operations with automatic validation and timestamps.
22
+
23
+ ## Record Interface
24
+
25
+ \`\`\`ts
26
+ interface StorageRecordInterface<T extends Record<string, unknown>> {
27
+ // Create
28
+ insert(data: Omit<T, 'id' | 'createdAt' | 'updatedAt'>): Promise<T>;
29
+
30
+ // Read
31
+ find(id: string): Promise<T | null>;
32
+ findAll(query?: QueryFilter<T>): Promise<T[]>;
33
+
34
+ // Update
35
+ update(id: string, data: Partial<T>): Promise<T>;
36
+
37
+ // Delete
38
+ delete(id: string): Promise<void>;
39
+
40
+ // Lifecycle
41
+ dispose(): Promise<void>;
42
+ }
43
+ \`\`\`
44
+
45
+ ## Defining Record Types
46
+
47
+ Records are defined with Zod schemas:
48
+
49
+ \`\`\`ts
50
+ import { z } from 'zod';
51
+ import type { StorageRecordDescriptor } from '@vibesdotdev/storage';
52
+
53
+ const userRecord: StorageRecordDescriptor = {
54
+ kind: 'storage/record',
55
+ id: 'user',
56
+ namespace: 'app',
57
+ schema: z.object({
58
+ id: z.string().uuid(),
59
+ email: z.string().email(),
60
+ name: z.string().min(1),
61
+ role: z.enum(['admin', 'user', 'guest']),
62
+ createdAt: z.coerce.date(),
63
+ updatedAt: z.coerce.date()
64
+ })
65
+ };
66
+ \`\`\`
67
+
68
+ ## Using Records
69
+
70
+ ### Creating Records
71
+
72
+ \`\`\`ts
73
+ import { StorageRecord } from '@vibesdotdev/storage';
74
+ import { getVibesRuntime } from '@vibesdotdev/runtime';
75
+
76
+ const runtime = getVibesRuntime();
77
+ const userStore = new StorageRecord(userRecord, { runtime });
78
+
79
+ const user = await userStore.insert({
80
+ email: 'alice@example.com',
81
+ name: 'Alice',
82
+ role: 'user'
83
+ });
84
+
85
+ console.log(user);
86
+ // { id: 'uuid...', email: 'alice@example.com', name: 'Alice', role: 'user', ... }
87
+ \`\`\`
88
+
89
+ ### Querying Records
90
+
91
+ \`\`\`ts
92
+ // Find by ID
93
+ const user = await userStore.find('user-id');
94
+
95
+ // Find all with filter
96
+ const users = await userStore.findAll({
97
+ where: { role: 'admin' },
98
+ orderBy: { field: 'createdAt', direction: 'desc' },
99
+ limit: 10
100
+ });
101
+
102
+ // Find first match
103
+ const admin = await userStore.findAll({
104
+ where: { role: 'admin' },
105
+ limit: 1
106
+ }).then(results => results[0]);
107
+ \`\`\`
108
+
109
+ ### Updating Records
110
+
111
+ \`\`\`ts
112
+ const updated = await userStore.update('user-id', {
113
+ name: 'Alice Updated'
114
+ });
115
+
116
+ // updatedAt is automatically managed
117
+ console.log(updated.updatedAt); // new Date()
118
+ \`\`\`
119
+
120
+ ### Deleting Records
121
+
122
+ \`\`\`ts
123
+ await userStore.delete('user-id');
124
+
125
+ // Verify deletion
126
+ const exists = await userStore.find('user-id');
127
+ console.log(exists); // null
128
+ \`\`\`
129
+
130
+ ## Automatic Timestamps
131
+
132
+ Records automatically manage \`createdAt\` and \`updatedAt\` fields:
133
+
134
+ - \`createdAt\` — Set on insert, immutable
135
+ - \`updatedAt\` — Updated on every update operation
136
+
137
+ These fields are added automatically if not in your schema. To disable:
138
+
139
+ \`\`\`ts
140
+ const record: StorageRecordDescriptor = {
141
+ ...
142
+ schema: z.object({
143
+ // your fields
144
+ }),
145
+ timestamps: false // disable automatic timestamps
146
+ };
147
+ \`\`\`
148
+
149
+ ## Validation
150
+
151
+ Records validate data against the schema on every operation:
152
+
153
+ \`\`\`ts
154
+ try {
155
+ await userStore.insert({
156
+ email: 'not-an-email', // fails validation
157
+ name: 'Bob'
158
+ });
159
+ } catch (error) {
160
+ console.error(error); // ZodError with validation details
161
+ }
162
+ \`\`\`
163
+
164
+ ## Record Transforms
165
+
166
+ Transforms convert between storage and application formats:
167
+
168
+ \`\`\`ts
169
+ import { defineStorageTransform } from '@vibesdotdev/storage';
170
+
171
+ const userTransform = defineStorageTransform({
172
+ id: 'user.transform',
173
+ fromRow: (row) => ({
174
+ ...row,
175
+ displayName: row.name.toUpperCase()
176
+ }),
177
+ toRow: (data) => ({
178
+ ...data,
179
+ name: data.displayName.toLowerCase()
180
+ })
181
+ });
182
+ \`\`\`
183
+
184
+ Apply transforms when creating the record store:
185
+
186
+ \`\`\`ts
187
+ const userStore = new StorageRecord(userRecord, {
188
+ runtime,
189
+ transform: userTransform
190
+ });
191
+ \`\`\`
192
+
193
+ ## Relations
194
+
195
+ Records support relations to other records:
196
+
197
+ \`\`\`ts
198
+ const postRecord: StorageRecordDescriptor = {
199
+ kind: 'storage/record',
200
+ id: 'post',
201
+ namespace: 'app',
202
+ schema: z.object({
203
+ id: z.string(),
204
+ title: z.string(),
205
+ authorId: z.string().uuid(),
206
+ content: z.string()
207
+ }),
208
+ relations: {
209
+ author: {
210
+ type: 'one',
211
+ target: 'user',
212
+ foreignKey: 'authorId'
213
+ }
214
+ }
215
+ };
216
+ \`\`\`
217
+
218
+ ## Record Events
219
+
220
+ Records emit lifecycle events:
221
+
222
+ \`\`\`ts
223
+ import { storageRecordEvents } from '@vibesdotdev/storage';
224
+
225
+ runtime.registerDescriptor('event', storageRecordEvents.onInsert);
226
+ runtime.registerDescriptor('event', storageRecordEvents.onUpdate);
227
+ runtime.registerDescriptor('event', storageRecordEvents.onDelete);
228
+
229
+ // Subscribe to events
230
+ runtime.on('storage/record:insert', (event) => {
231
+ console.log('Record inserted:', event.recordId);
232
+ });
233
+ \`\`\`
234
+
235
+ ## Storage Policy
236
+
237
+ Records respect storage policies for access control:
238
+
239
+ \`\`\`ts
240
+ import { StoragePolicyContext } from '@vibesdotdev/storage';
241
+
242
+ const policyContext: StoragePolicyContext = {
243
+ userId: 'current-user',
244
+ roles: ['user'],
245
+ capabilities: ['storage:read', 'storage:write']
246
+ };
247
+
248
+ const userStore = new StorageRecord(userRecord, {
249
+ runtime,
250
+ context: { 'storage/policy': policyContext }
251
+ });
252
+ \`\`\`
253
+
254
+ :::card{title="See also"}
255
+ - [\`storage.adapters\`](storage.adapters) — Adapter implementations
256
+ - [\`storage.manifests\`](storage.manifests) — Manifest declarations
257
+ - [\`storage.sync\`](storage.sync) — Cross-app synchronization
258
+ :::
259
+ `
260
+ },
261
+ parent: 'storage',
262
+ order: 2,
263
+ tags: ['storage', 'records', 'crud', 'typing', 'validation'],
264
+ surfaces: ['cli', 'web', 'in-app'],
265
+ hardware: ['consumer', 'cloud'],
266
+ enabled: true
267
+ };
268
+ export default descriptor;
269
+ //# sourceMappingURL=records.docs.descriptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"records.docs.descriptor.js","sourceRoot":"","sources":["../../src/docs/records.docs.descriptor.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,GAAwB;IACvC,IAAI,EAAE,YAAY;IAClB,EAAE,EAAE,iBAAiB;IACrB,KAAK,EAAE,iBAAiB;IACxB,OAAO,EAAE,4DAA4D;IACrE,IAAI,EAAE;QACL,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE,KAAK;QACjB,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0PT;KACC;IACD,MAAM,EAAE,SAAS;IACjB,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,CAAC;IAC5D,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC;IAClC,QAAQ,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC;IAC/B,OAAO,EAAE,IAAI;CACb,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { DocsTopicDescriptor } from '@vibesdotdev/docs';
2
+ declare const descriptor: DocsTopicDescriptor;
3
+ export default descriptor;
4
+ //# sourceMappingURL=sync.docs.descriptor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.docs.descriptor.d.ts","sourceRoot":"","sources":["../../src/docs/sync.docs.descriptor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,QAAA,MAAM,UAAU,EAAE,mBAoRjB,CAAC;AAEF,eAAe,UAAU,CAAC"}