@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,250 @@
1
+ /**
2
+ * Storage Table Interface
3
+ *
4
+ * Defines the interface for CRUD operations on a single table within a schema.
5
+ * This is what gets returned when you access a table from a StorageSchema.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * const schema = await runtime
10
+ * .query('storage/schema')
11
+ * .withId('session')
12
+ * .resolve();
13
+ *
14
+ * const todosTable = schema.table('todos');
15
+ *
16
+ * // Create
17
+ * const todo = await todosTable.create({
18
+ * sessionId: 'session-123',
19
+ * title: 'Implement storage',
20
+ * status: 'in_progress'
21
+ * });
22
+ *
23
+ * // List with relations to other tables in the schema
24
+ * const todos = await todosTable.list({
25
+ * where: { sessionId: 'session-123' },
26
+ * include: { session: true, parent: true }
27
+ * });
28
+ * ```
29
+ */
30
+ import type { z } from 'zod/v4';
31
+ import type { StorageRelation } from '../../schemas/record';
32
+ import type { WhereFilter, QueryOptions, QueryResult, CreateInput, CreateManyOptions, UpdateInput, UpdateOptions, UpdateResult, DeleteOptions, DeleteResult, AggregationOptions, AggregationResult, StreamOptions } from '../record';
33
+ /**
34
+ * Storage Table Interface
35
+ *
36
+ * Provides CRUD operations on a single table within a schema.
37
+ * Similar to StorageRecordInterface but scoped to a schema context.
38
+ */
39
+ export interface StorageTableInterface<T = unknown, R extends Record<string, StorageRelation> = Record<string, StorageRelation>> {
40
+ /** Table name */
41
+ readonly tableName: string;
42
+ /** Primary key field */
43
+ readonly primaryKey: string;
44
+ /** Zod schema for validation */
45
+ readonly schema: z.ZodType<T>;
46
+ /** Available relations to other tables in the schema */
47
+ readonly relations: R;
48
+ /**
49
+ * Create a new record
50
+ *
51
+ * @param data - Record data
52
+ * @returns Created record
53
+ */
54
+ create(data: CreateInput<T>): Promise<T>;
55
+ /**
56
+ * Create multiple records
57
+ *
58
+ * @param data - Array of record data
59
+ * @param options - Create many options
60
+ * @returns Created records
61
+ */
62
+ createMany(data: CreateInput<T>[], options?: CreateManyOptions): Promise<T[]>;
63
+ /**
64
+ * Get a single record by ID
65
+ *
66
+ * @param id - Record ID
67
+ * @param options - Query options (include relations, select fields)
68
+ * @returns Record or null if not found
69
+ */
70
+ get(id: string, options?: Pick<QueryOptions<T, string & keyof R>, 'include' | 'select'>): Promise<T | null>;
71
+ /**
72
+ * Get a single record or throw if not found
73
+ *
74
+ * @param id - Record ID
75
+ * @param options - Query options
76
+ * @returns Record
77
+ * @throws Error if record not found
78
+ */
79
+ getOrThrow(id: string, options?: Pick<QueryOptions<T, string & keyof R>, 'include' | 'select'>): Promise<T>;
80
+ /**
81
+ * Get many records by IDs
82
+ *
83
+ * @param ids - Record IDs
84
+ * @param options - Query options
85
+ * @returns Records (may be fewer than requested if some not found)
86
+ */
87
+ getMany(ids: string[], options?: Pick<QueryOptions<T, string & keyof R>, 'include' | 'select'>): Promise<T[]>;
88
+ /**
89
+ * List records with filtering, pagination, and relations
90
+ *
91
+ * @param options - Query options
92
+ * @returns Query result with items and pagination metadata
93
+ */
94
+ list(options?: QueryOptions<T, string & keyof R>): Promise<QueryResult<T>>;
95
+ /**
96
+ * Find first record matching conditions
97
+ *
98
+ * @param options - Query options
99
+ * @returns First matching record or null
100
+ */
101
+ findFirst(options?: QueryOptions<T, string & keyof R>): Promise<T | null>;
102
+ /**
103
+ * Find first record or throw if not found
104
+ *
105
+ * @param options - Query options
106
+ * @returns First matching record
107
+ * @throws Error if no record found
108
+ */
109
+ findFirstOrThrow(options?: QueryOptions<T, string & keyof R>): Promise<T>;
110
+ /**
111
+ * Check if record exists
112
+ *
113
+ * @param id - Record ID
114
+ * @returns True if record exists
115
+ */
116
+ exists(id: string): Promise<boolean>;
117
+ /**
118
+ * Count records matching conditions
119
+ *
120
+ * @param where - Filter conditions
121
+ * @returns Number of matching records
122
+ */
123
+ count(where?: WhereFilter<T>): Promise<number>;
124
+ /**
125
+ * Update a record by ID
126
+ *
127
+ * @param id - Record ID
128
+ * @param data - Update data
129
+ * @param options - Update options
130
+ * @returns Updated record
131
+ * @throws Error if record not found
132
+ */
133
+ update(id: string, data: UpdateInput<T>, options?: UpdateOptions): Promise<T>;
134
+ /**
135
+ * Update many records matching conditions
136
+ *
137
+ * @param where - Filter conditions
138
+ * @param data - Update data
139
+ * @param options - Update options
140
+ * @returns Update result with count
141
+ */
142
+ updateMany(where: WhereFilter<T>, data: UpdateInput<T>, options?: UpdateOptions): Promise<UpdateResult>;
143
+ /**
144
+ * Update or create a record
145
+ *
146
+ * @param id - Record ID
147
+ * @param create - Data to use if creating
148
+ * @param update - Data to use if updating
149
+ * @returns Created or updated record
150
+ */
151
+ upsert(id: string, create: CreateInput<T>, update: UpdateInput<T>): Promise<T>;
152
+ /**
153
+ * Delete a record by ID
154
+ *
155
+ * @param id - Record ID
156
+ * @param options - Delete options
157
+ * @returns Delete result
158
+ */
159
+ delete(id: string, options?: DeleteOptions): Promise<DeleteResult>;
160
+ /**
161
+ * Delete many records matching conditions
162
+ *
163
+ * @param where - Filter conditions
164
+ * @param options - Delete options
165
+ * @returns Delete result with count
166
+ */
167
+ deleteMany(where: WhereFilter<T>, options?: DeleteOptions): Promise<DeleteResult>;
168
+ /**
169
+ * Restore a soft-deleted record
170
+ *
171
+ * @param id - Record ID
172
+ * @returns Restored record
173
+ * @throws Error if record not found or not soft-deleted
174
+ */
175
+ restore(id: string): Promise<T>;
176
+ /**
177
+ * Count records
178
+ *
179
+ * @param options - Aggregation options
180
+ * @returns Aggregation results
181
+ */
182
+ aggregate(options: AggregationOptions<T> & {
183
+ function: 'count';
184
+ }): Promise<AggregationResult[]>;
185
+ /**
186
+ * Sum field values
187
+ *
188
+ * @param options - Aggregation options
189
+ * @returns Aggregation results
190
+ */
191
+ aggregate(options: AggregationOptions<T> & {
192
+ function: 'sum';
193
+ field: keyof T;
194
+ }): Promise<AggregationResult[]>;
195
+ /**
196
+ * Average field values
197
+ *
198
+ * @param options - Aggregation options
199
+ * @returns Aggregation results
200
+ */
201
+ aggregate(options: AggregationOptions<T> & {
202
+ function: 'avg';
203
+ field: keyof T;
204
+ }): Promise<AggregationResult[]>;
205
+ /**
206
+ * Get minimum field value
207
+ *
208
+ * @param options - Aggregation options
209
+ * @returns Aggregation results
210
+ */
211
+ aggregate(options: AggregationOptions<T> & {
212
+ function: 'min';
213
+ field: keyof T;
214
+ }): Promise<AggregationResult[]>;
215
+ /**
216
+ * Get maximum field value
217
+ *
218
+ * @param options - Aggregation options
219
+ * @returns Aggregation results
220
+ */
221
+ aggregate(options: AggregationOptions<T> & {
222
+ function: 'max';
223
+ field: keyof T;
224
+ }): Promise<AggregationResult[]>;
225
+ /**
226
+ * Stream records as async iterable
227
+ *
228
+ * @param options - Stream options
229
+ * @returns Async iterable of records
230
+ */
231
+ stream(options?: StreamOptions<T>): AsyncIterable<T>;
232
+ /**
233
+ * Validate record data against schema
234
+ *
235
+ * @param data - Record data
236
+ * @returns Validation result
237
+ */
238
+ validate(data: unknown): Promise<{
239
+ success: boolean;
240
+ data?: T;
241
+ errors?: z.ZodError;
242
+ }>;
243
+ /**
244
+ * Get database adapter being used
245
+ *
246
+ * @returns Adapter ID
247
+ */
248
+ getAdapterId(): string;
249
+ }
250
+ //# sourceMappingURL=table-interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-interface.d.ts","sourceRoot":"","sources":["../../../src/interfaces/schema/table-interface.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Storage Table Interface
3
+ *
4
+ * Defines the interface for CRUD operations on a single table within a schema.
5
+ * This is what gets returned when you access a table from a StorageSchema.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * const schema = await runtime
10
+ * .query('storage/schema')
11
+ * .withId('session')
12
+ * .resolve();
13
+ *
14
+ * const todosTable = schema.table('todos');
15
+ *
16
+ * // Create
17
+ * const todo = await todosTable.create({
18
+ * sessionId: 'session-123',
19
+ * title: 'Implement storage',
20
+ * status: 'in_progress'
21
+ * });
22
+ *
23
+ * // List with relations to other tables in the schema
24
+ * const todos = await todosTable.list({
25
+ * where: { sessionId: 'session-123' },
26
+ * include: { session: true, parent: true }
27
+ * });
28
+ * ```
29
+ */
30
+ export {};
31
+ //# sourceMappingURL=table-interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-interface.js","sourceRoot":"","sources":["../../../src/interfaces/schema/table-interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Storage Consumer File System Abstraction
3
+ *
4
+ * Consumer-scoped: provides access to host fs, crypto, and path primitives.
5
+ * Injected at runtime to avoid universal core importing Node.js built-ins.
6
+ *
7
+ * This enables `cli/context.consumer.ts` to operate in consumer hardware scope
8
+ * without polluting the universal core with Node.js imports.
9
+ *
10
+ * Usage:
11
+ * ```ts
12
+ * import { getConsumerFs } from './storage-consumer-fs';
13
+ *
14
+ * const fs = getConsumerFs();
15
+ * const data = await fs.readFile('/path/to/file', 'utf8');
16
+ * ```
17
+ */
18
+ export interface ConsumerFileSystem {
19
+ existsSync(path: string): boolean;
20
+ mkdirSync(path: string, options?: {
21
+ recursive: boolean;
22
+ }): void;
23
+ watch(dir: string, listener: (eventType: string, filename: string | Buffer | null) => void): {
24
+ close(): void;
25
+ } | null;
26
+ readFile(path: string, encoding: BufferEncoding): Promise<string>;
27
+ writeFile(path: string, content: string | Uint8Array, options?: BufferEncoding | {
28
+ encoding?: BufferEncoding;
29
+ mode?: number;
30
+ flag?: string;
31
+ }): Promise<void>;
32
+ rename(oldPath: string, newPath: string): Promise<void>;
33
+ dirname(path: string): string;
34
+ basename(path: string, ext?: string): string;
35
+ join(...paths: string[]): string;
36
+ resolve(...paths: string[]): string;
37
+ randomUUID(): string;
38
+ }
39
+ export declare function getConsumerFs(): Promise<ConsumerFileSystem>;
40
+ //# sourceMappingURL=storage-consumer-fs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-consumer-fs.d.ts","sourceRoot":"","sources":["../../src/interfaces/storage-consumer-fs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,WAAW,kBAAkB;IAClC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAClC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IAChE,KAAK,CACJ,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GACrE;QAAE,KAAK,IAAI,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAClE,SAAS,CACR,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GAAG,UAAU,EAC5B,OAAO,CAAC,EAAE,cAAc,GAAG;QAAE,QAAQ,CAAC,EAAE,cAAc,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GACpF,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7C,IAAI,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IACjC,OAAO,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IACpC,UAAU,IAAI,MAAM,CAAC;CACrB;AAID,wBAAsB,aAAa,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAwBjE"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Storage Consumer File System Abstraction
3
+ *
4
+ * Consumer-scoped: provides access to host fs, crypto, and path primitives.
5
+ * Injected at runtime to avoid universal core importing Node.js built-ins.
6
+ *
7
+ * This enables `cli/context.consumer.ts` to operate in consumer hardware scope
8
+ * without polluting the universal core with Node.js imports.
9
+ *
10
+ * Usage:
11
+ * ```ts
12
+ * import { getConsumerFs } from './storage-consumer-fs.js';
13
+ *
14
+ * const fs = getConsumerFs();
15
+ * const data = await fs.readFile('/path/to/file', 'utf8');
16
+ * ```
17
+ */
18
+ let _consumerFs = null;
19
+ export async function getConsumerFs() {
20
+ if (_consumerFs)
21
+ return _consumerFs;
22
+ const [fs, crypto, path] = await Promise.all([
23
+ import('node:fs'),
24
+ import('node:crypto'),
25
+ import('node:path')
26
+ ]);
27
+ _consumerFs = {
28
+ existsSync: fs.existsSync,
29
+ mkdirSync: fs.mkdirSync,
30
+ watch: fs.watch.bind(fs),
31
+ readFile: (path, encoding) => fs.promises.readFile(path, encoding),
32
+ writeFile: (path, content, options) => fs.promises.writeFile(path, content, options),
33
+ rename: fs.promises.rename,
34
+ dirname: path.dirname,
35
+ basename: path.basename,
36
+ join: path.join,
37
+ resolve: path.resolve,
38
+ randomUUID: crypto.randomUUID
39
+ };
40
+ return _consumerFs;
41
+ }
42
+ //# sourceMappingURL=storage-consumer-fs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-consumer-fs.js","sourceRoot":"","sources":["../../src/interfaces/storage-consumer-fs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAuBH,IAAI,WAAW,GAA8B,IAAI,CAAC;AAElD,MAAM,CAAC,KAAK,UAAU,aAAa;IAClC,IAAI,WAAW;QAAE,OAAO,WAAW,CAAC;IAEpC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC5C,MAAM,CAAC,SAAS,CAAC;QACjB,MAAM,CAAC,aAAa,CAAC;QACrB,MAAM,CAAC,WAAW,CAAC;KACnB,CAAC,CAAC;IAEH,WAAW,GAAG;QACb,UAAU,EAAE,EAAE,CAAC,UAAU;QACzB,SAAS,EAAE,EAAE,CAAC,SAAS;QACvB,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,QAAQ,EAAE,CAAC,IAAY,EAAE,QAAwB,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;QAC1F,SAAS,EAAE,CAAC,IAAY,EAAE,OAA4B,EAAE,OAAsF,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC;QAChM,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM;QAC1B,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,UAAU,EAAE,MAAM,CAAC,UAAU;KAC7B,CAAC;IAEF,OAAO,WAAW,CAAC;AACpB,CAAC"}
@@ -0,0 +1,187 @@
1
+ /**
2
+ * Storage Manifest Base Class
3
+ *
4
+ * Base class for working with stored data. Modules can extend this
5
+ * for custom methods while getting load/save for free.
6
+ *
7
+ * Uses runtime query API to resolve the appropriate adapter.
8
+ */
9
+ import type { z } from 'zod/v4';
10
+ import type { KindContext } from '@vibesdotdev/runtime/schemas/kind';
11
+ import type { StorageAdapterInterface } from '../interfaces/adapter';
12
+ import type { StorageManifestDescriptor } from '../schemas/manifest-descriptor';
13
+ import type { Unsubscribe } from '../interfaces/document-store';
14
+ /**
15
+ * Base class for storage manifests.
16
+ *
17
+ * Provides document-style operations (load, save, exists, delete) using
18
+ * the runtime to resolve the appropriate adapter based on scope and configuration.
19
+ *
20
+ * Includes caching and subscription support for reactive updates.
21
+ *
22
+ * @template T - The type of data being stored
23
+ *
24
+ * @example
25
+ * ```ts
26
+ * // Runtime instantiation (via descriptor)
27
+ * // The runtime will instantiate this with the descriptor
28
+ *
29
+ * // Manual instantiation by ID
30
+ * const storage = StorageManifest.fromId<AIProvider[]>('ai.providers');
31
+ * const providers = await storage.load();
32
+ *
33
+ * // Extended class with custom methods
34
+ * class AIProvidersStorage extends StorageManifest<AIProvider[]> {
35
+ * async getEnabled(): Promise<AIProvider[]> {
36
+ * const all = await this.load() ?? [];
37
+ * return all.filter(p => p.enabled);
38
+ * }
39
+ * }
40
+ * ```
41
+ */
42
+ export declare class StorageManifest<T> {
43
+ protected descriptor: StorageManifestDescriptor;
44
+ protected context: KindContext;
45
+ private adapterCache;
46
+ private pendingId;
47
+ private pendingContext;
48
+ private resolved;
49
+ private cachedData;
50
+ private cacheValid;
51
+ private subscribers;
52
+ private storeUnsubscribe;
53
+ private subscriptionStarted;
54
+ private getRuntime;
55
+ /**
56
+ * Create a storage manifest instance.
57
+ *
58
+ * @param descriptorOrId - Either the full descriptor (for runtime instantiation)
59
+ * or the manifest ID string (for manual instantiation)
60
+ * @param context - Runtime context (optional for manual instantiation, required for runtime)
61
+ */
62
+ constructor(descriptorOrId: StorageManifestDescriptor | string, context?: KindContext);
63
+ /**
64
+ * Resolve the descriptor from the runtime on first data access.
65
+ * No-op if already resolved or constructed with a direct descriptor.
66
+ */
67
+ private ensureResolved;
68
+ /**
69
+ * Create a storage manifest by looking up its ID.
70
+ * Convenience static method for manual instantiation.
71
+ */
72
+ static fromId<T>(manifestId: string): StorageManifest<T>;
73
+ /**
74
+ * Get the schema for this manifest.
75
+ */
76
+ get schema(): z.ZodType<T>;
77
+ /**
78
+ * Get the namespace for this manifest.
79
+ */
80
+ get namespace(): string;
81
+ /**
82
+ * Resolve the adapter for this manifest using runtime query API.
83
+ *
84
+ * Uses the manifest's allowed adapters list and current scope to
85
+ * select the best available adapter.
86
+ */
87
+ protected getAdapter(): Promise<StorageAdapterInterface>;
88
+ /**
89
+ * Get adapter configuration based on manifest scope.
90
+ * Override in subclasses for custom configuration.
91
+ */
92
+ protected getAdapterConfig(adapterId?: string): Record<string, unknown>;
93
+ private getCloudApiEndpoint;
94
+ private hasCloudEndpointRegistrar;
95
+ /**
96
+ * Get base path for storage based on scope.
97
+ * Uses descriptor's scopePaths if provided, otherwise defaults.
98
+ */
99
+ protected getBasePath(workspacePath?: string): string;
100
+ /**
101
+ * Invalidate the cache, forcing the next load to hit storage.
102
+ */
103
+ invalidateCache(): void;
104
+ /**
105
+ * Get cached data if available.
106
+ * @returns Cached data or undefined if not cached
107
+ */
108
+ getCachedData(): T | undefined;
109
+ /**
110
+ * Check if data is currently cached.
111
+ */
112
+ isCached(): boolean;
113
+ /**
114
+ * Load data from storage.
115
+ *
116
+ * @returns The stored data, or null if not found
117
+ */
118
+ load(): Promise<T | null>;
119
+ /**
120
+ * Save data to storage.
121
+ *
122
+ * @param data - The data to save
123
+ */
124
+ save(data: T): Promise<void>;
125
+ /**
126
+ * Trigger a non-blocking cloud push after save.
127
+ * Only fires if the manifest has cloud-api in allowedAdapters.
128
+ *
129
+ * Consumer modules are loaded via opaque dynamic import to prevent Vite
130
+ * from tracing them into the client bundle — they contain Node.js APIs
131
+ * and must only run server-side.
132
+ */
133
+ private triggerCloudSync;
134
+ /**
135
+ * Check if data exists in storage.
136
+ */
137
+ exists(): Promise<boolean>;
138
+ /**
139
+ * Delete data from storage.
140
+ */
141
+ delete(): Promise<void>;
142
+ /**
143
+ * Load data or return default value.
144
+ *
145
+ * @param defaultValue - Value to return if no data exists
146
+ */
147
+ loadOrDefault(defaultValue: T): Promise<T>;
148
+ /**
149
+ * Update data using a transform function.
150
+ *
151
+ * @param transform - Function that receives current data and returns updated data
152
+ */
153
+ update(transform: (current: T | null) => T): Promise<void>;
154
+ /**
155
+ * Validate data against the manifest's schema.
156
+ */
157
+ validate(data: unknown): z.ZodSafeParseResult<T>;
158
+ /**
159
+ * Subscribe to changes for this manifest.
160
+ * Returns an unsubscribe function.
161
+ *
162
+ * @param callback - Function called when data changes
163
+ * @returns Unsubscribe function
164
+ */
165
+ subscribe(callback: (data: T | null) => void): Unsubscribe;
166
+ /**
167
+ * Initialize subscription to storage adapter.
168
+ */
169
+ private initSubscription;
170
+ /**
171
+ * Start subscription with the given subscribe function.
172
+ */
173
+ private startSubscription;
174
+ /**
175
+ * Stop storage-level subscription.
176
+ */
177
+ private stopSubscription;
178
+ /**
179
+ * Notify all subscribers of a change.
180
+ */
181
+ protected notifySubscribers(data: T | null): void;
182
+ /**
183
+ * Get the number of active subscribers.
184
+ */
185
+ getSubscriberCount(): number;
186
+ }
187
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/manifest/base.ts"],"names":[],"mappings":"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"}