@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,150 @@
1
+ /**
2
+ * vibes storage sync status
3
+ *
4
+ * Displays the sync state for all cloud-eligible storage manifests
5
+ * AND all registered sync-bridge descriptors.
6
+ * Shows the current environment's sync target URL, per-item sync status,
7
+ * last sync time, direction, and any errors.
8
+ */
9
+ import { getVibesRuntime } from '@vibesdotdev/runtime';
10
+ import { loadSyncState, getManifestSyncState } from '../../../../sync/sync-state.consumer';
11
+ import { resolveSyncTarget } from '../../../../sync/resolve-sync-target';
12
+ import { createRecordSyncBridgeDescriptor, isSyncableStorageRecord } from '../../../../sync/record-sync-bridge';
13
+ function formatTimeAgo(isoString) {
14
+ if (!isoString)
15
+ return '—';
16
+ const diff = Date.now() - new Date(isoString).getTime();
17
+ const seconds = Math.floor(diff / 1000);
18
+ if (seconds < 60)
19
+ return `${seconds}s ago`;
20
+ const minutes = Math.floor(seconds / 60);
21
+ if (minutes < 60)
22
+ return `${minutes}m ago`;
23
+ const hours = Math.floor(minutes / 60);
24
+ if (hours < 24)
25
+ return `${hours}h ago`;
26
+ const days = Math.floor(hours / 24);
27
+ return `${days}d ago`;
28
+ }
29
+ function statusIcon(status) {
30
+ switch (status) {
31
+ case 'in-sync':
32
+ return 'in-sync';
33
+ case 'local-ahead':
34
+ return 'local-ahead';
35
+ case 'remote-ahead':
36
+ return 'remote-ahead';
37
+ case 'conflict':
38
+ return 'CONFLICT';
39
+ case 'paused':
40
+ return 'paused';
41
+ case 'never-synced':
42
+ default:
43
+ return 'never-synced';
44
+ }
45
+ }
46
+ export default {
47
+ async execute(_args, opts) {
48
+ const runtime = getVibesRuntime();
49
+ const ui = (await runtime.context('cli/ui'));
50
+ try {
51
+ // Resolve current environment for sync target display
52
+ const { syncTarget, envName } = await resolveSyncTarget();
53
+ // Load sync state
54
+ const syncState = await loadSyncState();
55
+ // ── Storage Manifests ──
56
+ const descriptors = runtime
57
+ .query('storage/manifest')
58
+ .descriptors();
59
+ const eligible = descriptors.filter((d) => d.enabled !== false && d.allowedAdapters?.includes('storage.cloud-api'));
60
+ // ── Sync Bridges / Records ──
61
+ const bridges = runtime.query('storage/sync-bridge').descriptors();
62
+ const records = runtime.query('storage/record').descriptors()
63
+ .filter(isSyncableStorageRecord)
64
+ .map(createRecordSyncBridgeDescriptor);
65
+ const syncTargets = [...records, ...bridges];
66
+ if (opts.json) {
67
+ const manifestData = eligible.map((d) => {
68
+ const state = getManifestSyncState(syncState, d.id);
69
+ return {
70
+ type: 'manifest',
71
+ namespace: d.namespace,
72
+ ...state,
73
+ syncTarget
74
+ };
75
+ });
76
+ const bridgeData = syncTargets.map((b) => {
77
+ // Bridges use composite keys: bridgeId:entityId
78
+ // For status overview, show the bridge-level summary
79
+ const stateKeys = Object.keys(syncState.manifests).filter((k) => k.startsWith(`${b.id}:`));
80
+ const entityCount = stateKeys.length;
81
+ const synced = stateKeys.filter((k) => syncState.manifests[k]?.syncStatus === 'in-sync').length;
82
+ return {
83
+ type: 'bridge',
84
+ bridgeId: b.id,
85
+ sourceKind: b.source.runtimeKind,
86
+ apiPath: b.target.apiPath,
87
+ direction: b.sync.direction,
88
+ entities: entityCount,
89
+ synced,
90
+ syncTarget
91
+ };
92
+ });
93
+ ui.render({ syncTarget, envName, manifests: manifestData, bridges: bridgeData }, { format: 'json' });
94
+ return;
95
+ }
96
+ ui.info(`Sync Target: ${syncTarget} (${envName})`);
97
+ ui.log('');
98
+ // Show storage manifests
99
+ if (eligible.length > 0) {
100
+ ui.info('Storage Manifests:');
101
+ ui.table(eligible.map((d) => {
102
+ const state = getManifestSyncState(syncState, d.id);
103
+ return {
104
+ Manifest: d.id,
105
+ Status: statusIcon(state.syncStatus),
106
+ 'Last Sync': formatTimeAgo(state.lastSyncAt),
107
+ Dir: state.lastSyncDirection ?? '—',
108
+ Error: state.errorMessage ? state.errorMessage.slice(0, 40) : '—'
109
+ };
110
+ }), { columns: ['Manifest', 'Status', 'Last Sync', 'Dir', 'Error'] });
111
+ }
112
+ else {
113
+ ui.info('No storage manifests have cloud sync enabled.');
114
+ }
115
+ // Show sync bridges
116
+ if (syncTargets.length > 0) {
117
+ ui.log('');
118
+ ui.info('Record / Bridge Sync Targets:');
119
+ ui.table(syncTargets.map((b) => {
120
+ const stateKeys = Object.keys(syncState.manifests).filter((k) => k.startsWith(`${b.id}:`));
121
+ const entityCount = stateKeys.length;
122
+ const synced = stateKeys.filter((k) => syncState.manifests[k]?.syncStatus === 'in-sync').length;
123
+ const errors = stateKeys.filter((k) => syncState.manifests[k]?.errorMessage).length;
124
+ const lastSync = stateKeys
125
+ .map((k) => syncState.manifests[k]?.lastSyncAt)
126
+ .filter(Boolean)
127
+ .sort()
128
+ .pop() ?? null;
129
+ return {
130
+ Target: b.id,
131
+ Source: b.source.runtimeKind,
132
+ API: b.target.apiPath,
133
+ Dir: b.sync.direction.replace('bidirectional', 'both'),
134
+ Synced: entityCount > 0 ? `${synced}/${entityCount}` : 'never',
135
+ 'Last Sync': formatTimeAgo(lastSync),
136
+ Errors: errors > 0 ? String(errors) : '—'
137
+ };
138
+ }), { columns: ['Target', 'Source', 'API', 'Dir', 'Synced', 'Last Sync', 'Errors'] });
139
+ }
140
+ if (eligible.length === 0 && syncTargets.length === 0) {
141
+ ui.warn('No syncable targets found.');
142
+ }
143
+ }
144
+ catch (e) {
145
+ ui.error(`Failed to get sync status: ${e}`);
146
+ process.exit(1);
147
+ }
148
+ }
149
+ };
150
+ //# sourceMappingURL=storage.sync.status.cli-command.impl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.sync.status.cli-command.impl.js","sourceRoot":"","sources":["../../../../../src/cli/commands/sync/status/storage.sync.status.cli-command.impl.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Storage Context Consumer
3
+ *
4
+ * Provides storage context for consumer hardware scope.
5
+ * Uses runtime-injected fs/crypto/path abstraction to avoid
6
+ * universal core importing Node.js built-ins directly.
7
+ */
8
+ export declare function getStorageContext(): Promise<{
9
+ project: {
10
+ json: <T>(namespace: string) => {
11
+ read: () => Promise<T | null>;
12
+ write: (value: T) => Promise<void>;
13
+ };
14
+ };
15
+ }>;
16
+ export declare function subscribeStorage<T>(resource: string, handler: (event: {
17
+ value: T | null;
18
+ }) => void, options?: {
19
+ delivery?: {
20
+ type: 'debounce';
21
+ ms: number;
22
+ };
23
+ }): Promise<{
24
+ unsubscribe: () => void;
25
+ }>;
26
+ //# sourceMappingURL=context.consumer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.consumer.d.ts","sourceRoot":"","sources":["../../src/cli/context.consumer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA0FH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC;IAClD,OAAO,EAAE;QACR,IAAI,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,KAAK;YAC/B,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YAC9B,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;SACnC,CAAC;KACF,CAAC;CACF,CAAC,CAsBD;AAED,wBAAsB,gBAAgB,CAAC,CAAC,EACvC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,CAAC,KAAK,EAAE;IAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAA;CAAE,KAAK,IAAI,EAC7C,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GACvD,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,IAAI,CAAA;CAAE,CAAC,CA+DtC"}
@@ -0,0 +1,164 @@
1
+ /**
2
+ * Storage Context Consumer
3
+ *
4
+ * Provides storage context for consumer hardware scope.
5
+ * Uses runtime-injected fs/crypto/path abstraction to avoid
6
+ * universal core importing Node.js built-ins directly.
7
+ */
8
+ import { getConsumerFs } from '../interfaces/storage-consumer-fs.js';
9
+ import { resolveWorkspacePath } from '../paths.js';
10
+ const STORAGE_ROOT = '.vibes/storage';
11
+ const PROJECT_JSON_PREFIX = 'project/json/';
12
+ function sanitizeNamespace(namespace) {
13
+ return namespace.replace(/[^a-zA-Z0-9._-]/g, '-');
14
+ }
15
+ async function getProjectJsonDir(fs) {
16
+ return fs.join(await resolveWorkspaceRoot(fs), STORAGE_ROOT, 'project', 'json');
17
+ }
18
+ async function getProjectJsonFile(fs, namespace) {
19
+ return fs.join(await getProjectJsonDir(fs), `${sanitizeNamespace(namespace)}.json`);
20
+ }
21
+ async function resolveWorkspaceRoot(fs) {
22
+ const fromContextPath = await findWorkspaceRoot(fs, resolveWorkspacePath());
23
+ if (fromContextPath) {
24
+ return fromContextPath;
25
+ }
26
+ const fromCwd = await findWorkspaceRoot(fs, fs.resolve('.'));
27
+ if (fromCwd) {
28
+ return fromCwd;
29
+ }
30
+ const fromModulePath = await findWorkspaceRoot(fs, fs.resolve(import.meta.dir, '../../../../../'));
31
+ if (fromModulePath) {
32
+ return fromModulePath;
33
+ }
34
+ return resolveWorkspacePath();
35
+ }
36
+ async function findWorkspaceRoot(fs, startPath) {
37
+ let current = fs.resolve(startPath);
38
+ let previous = '';
39
+ while (current !== previous) {
40
+ const hasPackage = fs.existsSync(fs.join(current, 'package.json'));
41
+ const hasVibesBin = fs.existsSync(fs.join(current, 'src', 'bin', 'vibes.ts'));
42
+ if (hasPackage && hasVibesBin) {
43
+ return current;
44
+ }
45
+ previous = current;
46
+ current = fs.dirname(current);
47
+ }
48
+ return null;
49
+ }
50
+ async function readJson(fs, filePath) {
51
+ try {
52
+ const raw = await fs.readFile(filePath, 'utf8');
53
+ if (!raw.trim()) {
54
+ return null;
55
+ }
56
+ return JSON.parse(raw);
57
+ }
58
+ catch (error) {
59
+ if (error instanceof Error && 'code' in error && error.code === 'ENOENT') {
60
+ return null;
61
+ }
62
+ throw error;
63
+ }
64
+ }
65
+ async function writeJson(fs, filePath, value) {
66
+ const dir = fs.dirname(filePath);
67
+ fs.mkdirSync(dir, { recursive: true });
68
+ const payload = `${JSON.stringify(value, null, 2)}\n`;
69
+ const tmpFile = `${filePath}.tmp.${process.pid}.${Date.now()}.${fs.randomUUID()}`;
70
+ await fs.writeFile(tmpFile, payload, 'utf8');
71
+ try {
72
+ await fs.rename(tmpFile, filePath);
73
+ }
74
+ catch (error) {
75
+ if (error instanceof Error && 'code' in error && error.code === 'ENOENT') {
76
+ fs.mkdirSync(dir, { recursive: true });
77
+ await fs.writeFile(filePath, payload, 'utf8');
78
+ return;
79
+ }
80
+ throw error;
81
+ }
82
+ }
83
+ export async function getStorageContext() {
84
+ const fs = await getConsumerFs();
85
+ const dir = await getProjectJsonDir(fs);
86
+ fs.mkdirSync(dir, { recursive: true });
87
+ return {
88
+ project: {
89
+ json: (namespace) => {
90
+ const filePathPromise = getProjectJsonFile(fs, namespace);
91
+ return {
92
+ read: async () => {
93
+ const filePath = await filePathPromise;
94
+ return readJson(fs, filePath);
95
+ },
96
+ write: async (value) => {
97
+ const filePath = await filePathPromise;
98
+ return writeJson(fs, filePath, value);
99
+ }
100
+ };
101
+ }
102
+ }
103
+ };
104
+ }
105
+ export async function subscribeStorage(resource, handler, options) {
106
+ if (!resource.startsWith(PROJECT_JSON_PREFIX)) {
107
+ return { unsubscribe: () => undefined };
108
+ }
109
+ const fs = await getConsumerFs();
110
+ const namespace = resource.slice(PROJECT_JSON_PREFIX.length);
111
+ const filePath = await getProjectJsonFile(fs, namespace);
112
+ const dir = fs.dirname(filePath);
113
+ const targetFile = fs.basename(filePath);
114
+ const debounceMs = options?.delivery?.type === 'debounce' ? options.delivery.ms : 0;
115
+ fs.mkdirSync(dir, { recursive: true });
116
+ let timer = null;
117
+ let watcher = null;
118
+ const emitChange = async () => {
119
+ try {
120
+ const value = await readJson(fs, filePath);
121
+ handler({ value });
122
+ }
123
+ catch {
124
+ // ignore read errors
125
+ }
126
+ };
127
+ const scheduleEmit = () => {
128
+ if (debounceMs <= 0) {
129
+ void emitChange();
130
+ return;
131
+ }
132
+ if (timer) {
133
+ clearTimeout(timer);
134
+ }
135
+ timer = setTimeout(() => {
136
+ timer = null;
137
+ void emitChange();
138
+ }, debounceMs);
139
+ };
140
+ try {
141
+ watcher = fs.watch(dir, (eventType, filename) => {
142
+ const name = filename?.toString ? filename.toString() : filename;
143
+ if (!name || name !== targetFile) {
144
+ return;
145
+ }
146
+ if (eventType === 'change' || eventType === 'rename') {
147
+ scheduleEmit();
148
+ }
149
+ });
150
+ }
151
+ catch {
152
+ watcher = null;
153
+ }
154
+ return {
155
+ unsubscribe: () => {
156
+ if (timer) {
157
+ clearTimeout(timer);
158
+ timer = null;
159
+ }
160
+ watcher?.close();
161
+ }
162
+ };
163
+ }
164
+ //# sourceMappingURL=context.consumer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.consumer.js","sourceRoot":"","sources":["../../src/cli/context.consumer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { CLIGroupAssetDescriptor } from '@vibesdotdev/runtime/schemas/asset';
2
+ declare const descriptor: CLIGroupAssetDescriptor;
3
+ export default descriptor;
4
+ //# sourceMappingURL=storage.cli-group.descriptor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.cli-group.descriptor.d.ts","sourceRoot":"","sources":["../../src/cli/storage.cli-group.descriptor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAElF,QAAA,MAAM,UAAU,EAAE,uBAQjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,11 @@
1
+ const descriptor = {
2
+ kind: 'cli/group',
3
+ id: 'storage',
4
+ name: 'storage',
5
+ description: 'Storage and sync management',
6
+ surfaces: ['cli'],
7
+ hardware: ['consumer'],
8
+ enabled: true
9
+ };
10
+ export default descriptor;
11
+ //# sourceMappingURL=storage.cli-group.descriptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.cli-group.descriptor.js","sourceRoot":"","sources":["../../src/cli/storage.cli-group.descriptor.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,GAA4B;IAC3C,IAAI,EAAE,WAAW;IACjB,EAAE,EAAE,SAAS;IACb,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,6BAA6B;IAC1C,QAAQ,EAAE,CAAC,KAAK,CAAC;IACjB,QAAQ,EAAE,CAAC,UAAU,CAAC;IACtB,OAAO,EAAE,IAAI;CACb,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { CLIGroupAssetDescriptor } from '@vibesdotdev/runtime/schemas/asset';
2
+ declare const descriptor: CLIGroupAssetDescriptor;
3
+ export default descriptor;
4
+ //# sourceMappingURL=storage.sync.cli-group.descriptor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.sync.cli-group.descriptor.d.ts","sourceRoot":"","sources":["../../src/cli/storage.sync.cli-group.descriptor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAElF,QAAA,MAAM,UAAU,EAAE,uBASjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,12 @@
1
+ const descriptor = {
2
+ kind: 'cli/group',
3
+ id: 'storage.sync',
4
+ name: 'sync',
5
+ description: 'Cloud synchronization for storage manifests',
6
+ parent: 'storage',
7
+ surfaces: ['cli'],
8
+ hardware: ['consumer'],
9
+ enabled: true
10
+ };
11
+ export default descriptor;
12
+ //# sourceMappingURL=storage.sync.cli-group.descriptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.sync.cli-group.descriptor.js","sourceRoot":"","sources":["../../src/cli/storage.sync.cli-group.descriptor.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,GAA4B;IAC3C,IAAI,EAAE,WAAW;IACjB,EAAE,EAAE,cAAc;IAClB,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,6CAA6C;IAC1D,MAAM,EAAE,SAAS;IACjB,QAAQ,EAAE,CAAC,KAAK,CAAC;IACjB,QAAQ,EAAE,CAAC,UAAU,CAAC;IACtB,OAAO,EAAE,IAAI;CACb,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Local CLI Types (storage)
3
+ *
4
+ * Storage's CLI command implementations consume the runtime context `cli/ui`,
5
+ * whose canonical shape lives in `@vibesdotdev/cli/providers`. To avoid a
6
+ * back-import on `@vibesdotdev/cli` (which itself depends on storage), this
7
+ * module declares a structural subset that matches the methods the storage
8
+ * commands actually use. The full UIContext lives in `@vibesdotdev/cli`.
9
+ */
10
+ export interface StorageCliUIContext {
11
+ info(message: string): void;
12
+ success(message: string): void;
13
+ warn(message: string): void;
14
+ error(message: string): void;
15
+ log(message: string): void;
16
+ table(data: unknown[], options?: {
17
+ columns?: string[];
18
+ } | string | string[]): void;
19
+ json(data: unknown): void;
20
+ yaml(data: unknown): void;
21
+ keyValue(data: Record<string, unknown>): void;
22
+ render(data: unknown, options?: {
23
+ format?: 'json' | 'yaml' | 'table' | 'markdown' | 'text';
24
+ }): void | Promise<void>;
25
+ }
26
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cli/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,mBAAmB;IACnC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;IACnF,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1B,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC9C,MAAM,CACL,IAAI,EAAE,OAAO,EACb,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,CAAA;KAAE,GACpE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Local CLI Types (storage)
3
+ *
4
+ * Storage's CLI command implementations consume the runtime context `cli/ui`,
5
+ * whose canonical shape lives in `@vibesdotdev/cli/providers`. To avoid a
6
+ * back-import on `@vibesdotdev/cli` (which itself depends on storage), this
7
+ * module declares a structural subset that matches the methods the storage
8
+ * commands actually use. The full UIContext lives in `@vibesdotdev/cli`.
9
+ */
10
+ export {};
11
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/cli/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Storage Client Surface
3
+ *
4
+ * Consumer-facing query helpers that read storage runtime kinds —
5
+ * thin wrappers over `runtime.query('storage/adapter')`, exposed so
6
+ * UI/orchestration packages can build pickers without re-implementing
7
+ * the descriptor-shape understanding.
8
+ */
9
+ export { listBrowsableStorageAdapters } from './list-browsable-adapters';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Storage Client Surface
3
+ *
4
+ * Consumer-facing query helpers that read storage runtime kinds —
5
+ * thin wrappers over `runtime.query('storage/adapter')`, exposed so
6
+ * UI/orchestration packages can build pickers without re-implementing
7
+ * the descriptor-shape understanding.
8
+ */
9
+ export { listBrowsableStorageAdapters } from './list-browsable-adapters.js';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Browsable Storage Adapters Query Helper
3
+ *
4
+ * Thin wrapper over `runtime.query('storage/adapter')` that filters
5
+ * registered storage adapters down to the ones declaring the `'browse'`
6
+ * capability — i.e. adapters that implement `listDrives()` +
7
+ * `list(driveId, path)` and are therefore suitable for cloud-storage
8
+ * picker UIs (model sources, knowledge corpora, etc.).
9
+ *
10
+ * Lives in `@vibesdotdev/storage/client` because it is consumer-facing
11
+ * (UIs and orchestration code) — not part of the kind core. The helper
12
+ * does not load adapter implementations; it only inspects descriptors.
13
+ */
14
+ import type { StorageAdapterDescriptor } from '../schemas/adapter-descriptor';
15
+ /**
16
+ * Return every `storage/adapter` descriptor whose declared
17
+ * `capabilities[]` includes `'browse'`.
18
+ *
19
+ * Synchronous descriptor read — no implementation loading. Safe to call
20
+ * from server endpoints that build picker payloads.
21
+ *
22
+ * @example
23
+ * ```ts
24
+ * import { listBrowsableStorageAdapters } from '@vibesdotdev/storage/client';
25
+ *
26
+ * const browsable = listBrowsableStorageAdapters();
27
+ * // → [{ id: 'sharepoint', name: 'SharePoint Storage', ... }, ...]
28
+ * ```
29
+ */
30
+ export declare function listBrowsableStorageAdapters(): StorageAdapterDescriptor[];
31
+ //# sourceMappingURL=list-browsable-adapters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-browsable-adapters.d.ts","sourceRoot":"","sources":["../../src/client/list-browsable-adapters.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAE9E;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,4BAA4B,IAAI,wBAAwB,EAAE,CASzE"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Browsable Storage Adapters Query Helper
3
+ *
4
+ * Thin wrapper over `runtime.query('storage/adapter')` that filters
5
+ * registered storage adapters down to the ones declaring the `'browse'`
6
+ * capability — i.e. adapters that implement `listDrives()` +
7
+ * `list(driveId, path)` and are therefore suitable for cloud-storage
8
+ * picker UIs (model sources, knowledge corpora, etc.).
9
+ *
10
+ * Lives in `@vibesdotdev/storage/client` because it is consumer-facing
11
+ * (UIs and orchestration code) — not part of the kind core. The helper
12
+ * does not load adapter implementations; it only inspects descriptors.
13
+ */
14
+ import { getVibesRuntime } from '@vibesdotdev/runtime/api/runtime';
15
+ /**
16
+ * Return every `storage/adapter` descriptor whose declared
17
+ * `capabilities[]` includes `'browse'`.
18
+ *
19
+ * Synchronous descriptor read — no implementation loading. Safe to call
20
+ * from server endpoints that build picker payloads.
21
+ *
22
+ * @example
23
+ * ```ts
24
+ * import { listBrowsableStorageAdapters } from '@vibesdotdev/storage/client';
25
+ *
26
+ * const browsable = listBrowsableStorageAdapters();
27
+ * // → [{ id: 'sharepoint', name: 'SharePoint Storage', ... }, ...]
28
+ * ```
29
+ */
30
+ export function listBrowsableStorageAdapters() {
31
+ const runtime = getVibesRuntime();
32
+ return runtime
33
+ .query('storage/adapter')
34
+ .filter((d) => {
35
+ const caps = d.capabilities;
36
+ return Array.isArray(caps) && caps.includes('browse');
37
+ })
38
+ .descriptors();
39
+ }
40
+ //# sourceMappingURL=list-browsable-adapters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-browsable-adapters.js","sourceRoot":"","sources":["../../src/client/list-browsable-adapters.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAGnE;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,4BAA4B;IAC3C,MAAM,OAAO,GAAG,eAAe,EAAE,CAAC;IAClC,OAAO,OAAO;SACZ,KAAK,CAAC,iBAAiB,CAAC;SACxB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QACb,MAAM,IAAI,GAAI,CAA8B,CAAC,YAAY,CAAC;QAC1D,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC,CAAC;SACD,WAAW,EAAgC,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Sync Command Handlers
3
+ *
4
+ * RPC commands for storage sync operations:
5
+ * - sync.status -> Returns sync state for all manifests
6
+ * - sync.trigger -> Enqueues an immediate sync job
7
+ * - sync.resolve -> Resolves a conflict (keep-local or keep-remote)
8
+ */
9
+ import type { RuntimeCommandDeps, RuntimeCommandPayload, RuntimeCommandResult } from '@vibesdotdev/runtime-plugin-types';
10
+ /**
11
+ * Handle `sync.status` — returns current sync state for all manifests.
12
+ */
13
+ export declare function handleSyncStatus(_message: RuntimeCommandPayload, deps: RuntimeCommandDeps): Promise<RuntimeCommandResult>;
14
+ /**
15
+ * Handle `sync.trigger` — enqueues an immediate storage-sync job.
16
+ */
17
+ export declare function handleSyncTrigger(message: RuntimeCommandPayload, deps: RuntimeCommandDeps): Promise<RuntimeCommandResult>;
18
+ /**
19
+ * Handle `sync.resolve` — resolves a manifest conflict.
20
+ * Accepts { manifestId, resolution: 'keep-local' | 'keep-remote' }
21
+ */
22
+ export declare function handleSyncResolve(message: RuntimeCommandPayload, deps: RuntimeCommandDeps): Promise<RuntimeCommandResult>;
23
+ //# sourceMappingURL=sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../src/daemon/commands/sync.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACX,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,MAAM,mCAAmC,CAAC;AAE3C;;GAEG;AACH,wBAAsB,gBAAgB,CACrC,QAAQ,EAAE,qBAAqB,EAC/B,IAAI,EAAE,kBAAkB,GACtB,OAAO,CAAC,oBAAoB,CAAC,CAuC/B;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACtC,OAAO,EAAE,qBAAqB,EAC9B,IAAI,EAAE,kBAAkB,GACtB,OAAO,CAAC,oBAAoB,CAAC,CAiE/B;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACtC,OAAO,EAAE,qBAAqB,EAC9B,IAAI,EAAE,kBAAkB,GACtB,OAAO,CAAC,oBAAoB,CAAC,CAkF/B"}