@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 @@
1
+ {"version":3,"file":"source-policy.d.ts","sourceRoot":"","sources":["../../src/manifest/source-policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAEtE,MAAM,MAAM,kBAAkB,GAAG,cAAc,GAAG,cAAc,GAAG,WAAW,CAAC;AAE/E,eAAO,MAAM,0BAA0B,EAAE,kBAAkB,EAI1D,CAAC;AAyBF,wBAAgB,uBAAuB,CACtC,MAAM,EAAE,kBAAkB,EAC1B,eAAe,EAAE,MAAM,EAAE,GACvB,MAAM,GAAG,IAAI,CAMf;AAED,wBAAgB,qBAAqB,CACpC,MAAM,EAAE,kBAAkB,EAC1B,aAAa,GAAE,YAAuB,GACpC,YAAY,CAMd;AAED,wBAAgB,2BAA2B,CAAC,eAAe,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAa/E;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAGrF"}
@@ -0,0 +1,62 @@
1
+ export const MANIFEST_SOURCE_PRECEDENCE = [
2
+ 'cloud-api',
3
+ 'project-file',
4
+ 'user-localdb'
5
+ ];
6
+ const SOURCE_ADAPTER_CANDIDATES = {
7
+ // `storage.memory` is included as the last-resort candidate for every
8
+ // source so tests can exercise source-policy code paths without
9
+ // spinning up a real localdb / drizzle / json file. Production
10
+ // descriptors don't list `storage.memory` in `allowedAdapters`, so
11
+ // this only kicks in when a descriptor explicitly opts in (test-only).
12
+ 'cloud-api': ['storage.cloud-api', 'storage.drizzle', 'storage.memory'],
13
+ 'project-file': ['storage.json', 'storage.memory'],
14
+ 'user-localdb': ['storage.localdb', 'storage.memory']
15
+ };
16
+ const ADAPTER_SOURCE_CANDIDATES = {
17
+ 'storage.cloud-api': ['cloud-api'],
18
+ 'storage.drizzle': ['cloud-api'],
19
+ 'storage.json': ['project-file'],
20
+ 'storage.localdb': ['user-localdb'],
21
+ // `storage.memory` resolves back to `user-localdb` for round-trips —
22
+ // callers asking "which source does this adapter belong to?" get a
23
+ // sensible default. In practice memory adapters are test-only and
24
+ // the round-trip rarely matters.
25
+ 'storage.memory': ['user-localdb']
26
+ };
27
+ export function resolveAdapterForSource(source, allowedAdapters) {
28
+ const allowed = new Set(allowedAdapters);
29
+ for (const adapterId of SOURCE_ADAPTER_CANDIDATES[source]) {
30
+ if (allowed.has(adapterId))
31
+ return adapterId;
32
+ }
33
+ return null;
34
+ }
35
+ export function resolveScopeForSource(source, fallbackScope = 'global') {
36
+ if (source === 'project-file')
37
+ return 'project';
38
+ if (source === 'user-localdb') {
39
+ return fallbackScope === 'project' || fallbackScope === 'local' ? fallbackScope : 'global';
40
+ }
41
+ return 'global';
42
+ }
43
+ export function resolveAdapterOrderBySource(allowedAdapters) {
44
+ const ordered = [];
45
+ for (const source of MANIFEST_SOURCE_PRECEDENCE) {
46
+ for (const adapterId of SOURCE_ADAPTER_CANDIDATES[source]) {
47
+ if (allowedAdapters.includes(adapterId) && !ordered.includes(adapterId)) {
48
+ ordered.push(adapterId);
49
+ }
50
+ }
51
+ }
52
+ for (const adapterId of allowedAdapters) {
53
+ if (!ordered.includes(adapterId))
54
+ ordered.push(adapterId);
55
+ }
56
+ return ordered;
57
+ }
58
+ export function resolveSourceFromAdapter(adapterId) {
59
+ const candidates = ADAPTER_SOURCE_CANDIDATES[adapterId];
60
+ return candidates?.[0] ?? null;
61
+ }
62
+ //# sourceMappingURL=source-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-policy.js","sourceRoot":"","sources":["../../src/manifest/source-policy.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,0BAA0B,GAAyB;IAC/D,WAAW;IACX,cAAc;IACd,cAAc;CACd,CAAC;AAEF,MAAM,yBAAyB,GAAyC;IACvE,sEAAsE;IACtE,gEAAgE;IAChE,+DAA+D;IAC/D,mEAAmE;IACnE,uEAAuE;IACvE,WAAW,EAAE,CAAC,mBAAmB,EAAE,iBAAiB,EAAE,gBAAgB,CAAC;IACvE,cAAc,EAAE,CAAC,cAAc,EAAE,gBAAgB,CAAC;IAClD,cAAc,EAAE,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;CACrD,CAAC;AAEF,MAAM,yBAAyB,GAAyC;IACvE,mBAAmB,EAAE,CAAC,WAAW,CAAC;IAClC,iBAAiB,EAAE,CAAC,WAAW,CAAC;IAChC,cAAc,EAAE,CAAC,cAAc,CAAC;IAChC,iBAAiB,EAAE,CAAC,cAAc,CAAC;IACnC,qEAAqE;IACrE,mEAAmE;IACnE,kEAAkE;IAClE,iCAAiC;IACjC,gBAAgB,EAAE,CAAC,cAAc,CAAC;CAClC,CAAC;AAEF,MAAM,UAAU,uBAAuB,CACtC,MAA0B,EAC1B,eAAyB;IAEzB,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,CAAC;IACzC,KAAK,MAAM,SAAS,IAAI,yBAAyB,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3D,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;IAC9C,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED,MAAM,UAAU,qBAAqB,CACpC,MAA0B,EAC1B,gBAA8B,QAAQ;IAEtC,IAAI,MAAM,KAAK,cAAc;QAAE,OAAO,SAAS,CAAC;IAChD,IAAI,MAAM,KAAK,cAAc,EAAE,CAAC;QAC/B,OAAO,aAAa,KAAK,SAAS,IAAI,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC5F,CAAC;IACD,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,eAAyB;IACpE,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,MAAM,IAAI,0BAA0B,EAAE,CAAC;QACjD,KAAK,MAAM,SAAS,IAAI,yBAAyB,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3D,IAAI,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBACzE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACzB,CAAC;QACF,CAAC;IACF,CAAC;IACD,KAAK,MAAM,SAAS,IAAI,eAAe,EAAE,CAAC;QACzC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,SAAiB;IACzD,MAAM,UAAU,GAAG,yBAAyB,CAAC,SAAS,CAAC,CAAC;IACxD,OAAO,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAChC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { KindContext } from '@vibesdotdev/runtime/schemas/kind';
2
+ export declare function resolveHomePath(): string;
3
+ export declare function resolveWorkspacePath(context?: KindContext | Record<string, unknown>, preferredWorkspacePath?: string): string;
4
+ export declare function resolveScopePathTemplate(pathTemplate: string, workspacePath: string): string;
5
+ export declare function resolveAtlasDbPath(projectId: string, workspacePath: string): string;
6
+ //# sourceMappingURL=paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAoHrE,wBAAgB,eAAe,IAAI,MAAM,CAUxC;AAUD,wBAAgB,oBAAoB,CACnC,OAAO,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/C,sBAAsB,CAAC,EAAE,MAAM,GAC7B,MAAM,CAiBR;AAED,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAQ5F;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAEnF"}
package/dist/paths.js ADDED
@@ -0,0 +1,152 @@
1
+ const WINDOWS_DRIVE_PATTERN = /^[A-Za-z]:/;
2
+ const WINDOWS_DRIVE_ABSOLUTE_PATTERN = /^[A-Za-z]:[\\/]/;
3
+ function readEnv(name) {
4
+ if (typeof process === 'undefined')
5
+ return undefined;
6
+ const envSource = process['env'];
7
+ return envSource?.[name];
8
+ }
9
+ function readWorkingDirectory() {
10
+ const fromEnv = readEnv('PWD') ?? readEnv('INIT_CWD');
11
+ if (fromEnv && fromEnv.trim().length > 0)
12
+ return fromEnv;
13
+ if (typeof process === 'undefined')
14
+ return undefined;
15
+ if (typeof process.cwd !== 'function')
16
+ return undefined;
17
+ try {
18
+ return process.cwd();
19
+ }
20
+ catch {
21
+ return undefined;
22
+ }
23
+ }
24
+ function toSlashSeparators(path) {
25
+ return path.replaceAll('\\', '/');
26
+ }
27
+ function isAbsolutePath(path) {
28
+ const normalized = toSlashSeparators(path);
29
+ return (normalized.startsWith('/') ||
30
+ normalized.startsWith('//') ||
31
+ WINDOWS_DRIVE_ABSOLUTE_PATTERN.test(path));
32
+ }
33
+ function normalizePath(path) {
34
+ const normalized = toSlashSeparators(path);
35
+ let prefix = '';
36
+ let absolute = false;
37
+ let rest = normalized;
38
+ if (normalized.startsWith('//')) {
39
+ absolute = true;
40
+ rest = normalized.slice(2);
41
+ const segments = rest.split('/').filter((segment) => segment.length > 0);
42
+ if (segments.length >= 2) {
43
+ prefix = `//${segments.shift()}/${segments.shift()}`;
44
+ rest = segments.join('/');
45
+ }
46
+ else {
47
+ prefix = '//';
48
+ rest = segments.join('/');
49
+ }
50
+ }
51
+ else if (WINDOWS_DRIVE_PATTERN.test(normalized)) {
52
+ prefix = normalized.slice(0, 2).toUpperCase();
53
+ rest = normalized.slice(2);
54
+ absolute = rest.startsWith('/');
55
+ }
56
+ else if (normalized.startsWith('/')) {
57
+ absolute = true;
58
+ rest = normalized.slice(1);
59
+ }
60
+ const rawSegments = rest.split('/');
61
+ const segments = [];
62
+ for (const segment of rawSegments) {
63
+ if (segment.length === 0 || segment === '.')
64
+ continue;
65
+ if (segment === '..') {
66
+ if (segments.length > 0 && segments[segments.length - 1] !== '..') {
67
+ segments.pop();
68
+ continue;
69
+ }
70
+ if (!absolute)
71
+ segments.push('..');
72
+ continue;
73
+ }
74
+ segments.push(segment);
75
+ }
76
+ if (prefix.startsWith('//')) {
77
+ return segments.length > 0 ? `${prefix}/${segments.join('/')}` : prefix;
78
+ }
79
+ if (WINDOWS_DRIVE_PATTERN.test(prefix)) {
80
+ if (!absolute) {
81
+ return segments.length > 0 ? `${prefix}/${segments.join('/')}` : prefix;
82
+ }
83
+ return segments.length > 0 ? `${prefix}/${segments.join('/')}` : `${prefix}/`;
84
+ }
85
+ if (absolute) {
86
+ return segments.length > 0 ? `/${segments.join('/')}` : '/';
87
+ }
88
+ return segments.length > 0 ? segments.join('/') : '.';
89
+ }
90
+ function normalizeAbsolutePath(path) {
91
+ if (!path)
92
+ return undefined;
93
+ const trimmed = path.trim();
94
+ if (trimmed.length === 0)
95
+ return undefined;
96
+ const cwd = readWorkingDirectory();
97
+ const absolutePath = isAbsolutePath(trimmed) ? trimmed : cwd ? `${cwd}/${trimmed}` : undefined;
98
+ if (!absolutePath)
99
+ return undefined;
100
+ const normalized = normalizePath(absolutePath);
101
+ return isAbsolutePath(normalized) ? normalized : undefined;
102
+ }
103
+ function isRootPath(path) {
104
+ const normalized = normalizePath(path);
105
+ return (normalized === '/' || /^[A-Za-z]:\/$/.test(normalized) || /^\/\/[^/]+\/[^/]+$/.test(normalized));
106
+ }
107
+ export function resolveHomePath() {
108
+ return (normalizeAbsolutePath(readEnv('HOME')) ??
109
+ normalizeAbsolutePath(readEnv('USERPROFILE')) ??
110
+ normalizeAbsolutePath(readEnv('TMPDIR')) ??
111
+ normalizeAbsolutePath(readEnv('TEMP')) ??
112
+ normalizeAbsolutePath(readEnv('TMP')) ??
113
+ normalizeAbsolutePath(readWorkingDirectory()) ??
114
+ '.');
115
+ }
116
+ function readContextWorkspacePath(context) {
117
+ if (!context)
118
+ return undefined;
119
+ const value = context['runtime/workspace-path'];
120
+ return typeof value === 'string' ? value : undefined;
121
+ }
122
+ export function resolveWorkspacePath(context, preferredWorkspacePath) {
123
+ const candidates = [
124
+ preferredWorkspacePath,
125
+ readContextWorkspacePath(context),
126
+ readEnv('VIBES_WORKSPACE_PATH'),
127
+ readEnv('PWD'),
128
+ readEnv('INIT_CWD')
129
+ ];
130
+ for (const candidate of candidates) {
131
+ const normalized = normalizeAbsolutePath(candidate);
132
+ if (!normalized)
133
+ continue;
134
+ if (isRootPath(normalized))
135
+ continue;
136
+ return normalized;
137
+ }
138
+ return resolveHomePath();
139
+ }
140
+ export function resolveScopePathTemplate(pathTemplate, workspacePath) {
141
+ const homePath = resolveHomePath();
142
+ const profile = readEnv('VIBES_PROFILE') || readEnv('VIBES_PROFILE_NAME') || '';
143
+ return pathTemplate
144
+ .replaceAll('{home}', homePath)
145
+ .replaceAll('{cwd}', workspacePath)
146
+ .replaceAll('{workspace}', workspacePath)
147
+ .replaceAll('{profile}', profile);
148
+ }
149
+ export function resolveAtlasDbPath(projectId, workspacePath) {
150
+ return normalizePath(`${workspacePath}/.vibes/atlas/${projectId}.db`);
151
+ }
152
+ //# sourceMappingURL=paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { type StoragePolicyContextValue } from './overrides';
2
+ /**
3
+ * Load storage policy context with environment variable overrides.
4
+ *
5
+ * Returns the default storage policy, optionally overridden by environment
6
+ * variables VIBES_STORAGE_MODE and VIBES_STORAGE_DEFAULT_ADAPTER.
7
+ */
8
+ export declare function loadStoragePolicyContext(): Promise<StoragePolicyContextValue>;
9
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/policy/context.ts"],"names":[],"mappings":"AAEA,OAAO,EAA8B,KAAK,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAEzF;;;;;GAKG;AACH,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,yBAAyB,CAAC,CAGnF"}
@@ -0,0 +1,29 @@
1
+ import { getRuntimeEnv } from '@vibesdotdev/runtime';
2
+ import { StoragePersistenceModeSchema } from './persistence.js';
3
+ import { StoragePolicyContextSchema } from './overrides.js';
4
+ /**
5
+ * Load storage policy context with environment variable overrides.
6
+ *
7
+ * Returns the default storage policy, optionally overridden by environment
8
+ * variables VIBES_STORAGE_MODE and VIBES_STORAGE_DEFAULT_ADAPTER.
9
+ */
10
+ export async function loadStoragePolicyContext() {
11
+ const defaultPolicy = StoragePolicyContextSchema.parse({});
12
+ return applyEnvOverrides(defaultPolicy);
13
+ }
14
+ function applyEnvOverrides(policy) {
15
+ const mode = getRuntimeEnv('VIBES_STORAGE_MODE');
16
+ const defaultAdapter = getRuntimeEnv('VIBES_STORAGE_DEFAULT_ADAPTER');
17
+ if (!mode && !defaultAdapter)
18
+ return policy;
19
+ const parsedMode = mode ? StoragePersistenceModeSchema.safeParse(mode) : null;
20
+ return {
21
+ ...policy,
22
+ default: {
23
+ ...(policy.default ?? {}),
24
+ ...(parsedMode?.success ? { mode: parsedMode.data } : {}),
25
+ ...(defaultAdapter ? { defaultAdapter } : {})
26
+ }
27
+ };
28
+ }
29
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/policy/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAkC,MAAM,aAAa,CAAC;AAEzF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB;IAC7C,MAAM,aAAa,GAAG,0BAA0B,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC3D,OAAO,iBAAiB,CAAC,aAAa,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAiC;IAC3D,MAAM,IAAI,GAAG,aAAa,CAAC,oBAAoB,CAAC,CAAC;IACjD,MAAM,cAAc,GAAG,aAAa,CAAC,+BAA+B,CAAC,CAAC;IACtE,IAAI,CAAC,IAAI,IAAI,CAAC,cAAc;QAAE,OAAO,MAAM,CAAC;IAE5C,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,4BAA4B,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9E,OAAO;QACN,GAAG,MAAM;QACT,OAAO,EAAE;YACR,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;YACzB,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzD,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7C;KACD,CAAC;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { StoragePersistenceModeSchema, StoragePersistencePolicySchema, resolveStoragePolicy, isRemoteStorageAdapter, type StoragePersistenceMode, type StoragePersistencePolicy, type StoragePolicyDescriptorDefaults, type StoragePolicyOverrides, type ResolvedStoragePolicy } from './persistence';
2
+ export { StoragePolicyContextSchema, StoragePolicyOverrideSchema, resolveStoragePolicyOverridesFromContext, type StoragePolicyContextValue } from './overrides';
3
+ export { loadStoragePolicyContext } from './context';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/policy/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,4BAA4B,EAC5B,8BAA8B,EAC9B,oBAAoB,EACpB,sBAAsB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,+BAA+B,EACpC,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,MAAM,eAAe,CAAC;AAEvB,OAAO,EACN,0BAA0B,EAC1B,2BAA2B,EAC3B,wCAAwC,EACxC,KAAK,yBAAyB,EAC9B,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { StoragePersistenceModeSchema, StoragePersistencePolicySchema, resolveStoragePolicy, isRemoteStorageAdapter } from './persistence.js';
2
+ export { StoragePolicyContextSchema, StoragePolicyOverrideSchema, resolveStoragePolicyOverridesFromContext } from './overrides.js';
3
+ export { loadStoragePolicyContext } from './context.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/policy/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,4BAA4B,EAC5B,8BAA8B,EAC9B,oBAAoB,EACpB,sBAAsB,EAMtB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACN,0BAA0B,EAC1B,2BAA2B,EAC3B,wCAAwC,EAExC,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,40 @@
1
+ import * as z from 'zod/v4';
2
+ import { type StoragePolicyOverrides } from './persistence';
3
+ export declare const StoragePolicyOverrideSchema: z.ZodObject<{
4
+ mode: z.ZodOptional<z.ZodEnum<{
5
+ "local-only": "local-only";
6
+ "remote-only": "remote-only";
7
+ "local-first": "local-first";
8
+ "remote-first": "remote-first";
9
+ }>>;
10
+ defaultAdapter: z.ZodOptional<z.ZodString>;
11
+ localAdapters: z.ZodOptional<z.ZodArray<z.ZodString>>;
12
+ remoteAdapters: z.ZodOptional<z.ZodArray<z.ZodString>>;
13
+ }, z.core.$strip>;
14
+ export declare const StoragePolicyContextSchema: z.ZodObject<{
15
+ default: z.ZodOptional<z.ZodObject<{
16
+ mode: z.ZodOptional<z.ZodEnum<{
17
+ "local-only": "local-only";
18
+ "remote-only": "remote-only";
19
+ "local-first": "local-first";
20
+ "remote-first": "remote-first";
21
+ }>>;
22
+ defaultAdapter: z.ZodOptional<z.ZodString>;
23
+ localAdapters: z.ZodOptional<z.ZodArray<z.ZodString>>;
24
+ remoteAdapters: z.ZodOptional<z.ZodArray<z.ZodString>>;
25
+ }, z.core.$strip>>;
26
+ records: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
27
+ mode: z.ZodOptional<z.ZodEnum<{
28
+ "local-only": "local-only";
29
+ "remote-only": "remote-only";
30
+ "local-first": "local-first";
31
+ "remote-first": "remote-first";
32
+ }>>;
33
+ defaultAdapter: z.ZodOptional<z.ZodString>;
34
+ localAdapters: z.ZodOptional<z.ZodArray<z.ZodString>>;
35
+ remoteAdapters: z.ZodOptional<z.ZodArray<z.ZodString>>;
36
+ }, z.core.$strip>>>;
37
+ }, z.core.$strip>;
38
+ export type StoragePolicyContextValue = z.infer<typeof StoragePolicyContextSchema>;
39
+ export declare function resolveStoragePolicyOverridesFromContext(policy: unknown, recordId: string): StoragePolicyOverrides | undefined;
40
+ //# sourceMappingURL=overrides.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overrides.d.ts","sourceRoot":"","sources":["../../src/policy/overrides.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAgC,KAAK,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAE1F,eAAO,MAAM,2BAA2B;;;;;;;;;;iBAKtC,CAAC;AAEH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;iBAGrC,CAAC;AAEH,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAEnF,wBAAgB,wCAAwC,CACvD,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,MAAM,GACd,sBAAsB,GAAG,SAAS,CAyBpC"}
@@ -0,0 +1,37 @@
1
+ import * as z from 'zod/v4';
2
+ import { StoragePersistenceModeSchema } from './persistence.js';
3
+ export const StoragePolicyOverrideSchema = z.object({
4
+ mode: StoragePersistenceModeSchema.optional(),
5
+ defaultAdapter: z.string().optional(),
6
+ localAdapters: z.array(z.string()).optional(),
7
+ remoteAdapters: z.array(z.string()).optional()
8
+ });
9
+ export const StoragePolicyContextSchema = z.object({
10
+ default: StoragePolicyOverrideSchema.optional(),
11
+ records: z.record(z.string(), StoragePolicyOverrideSchema).default({})
12
+ });
13
+ export function resolveStoragePolicyOverridesFromContext(policy, recordId) {
14
+ const parsed = StoragePolicyContextSchema.safeParse(policy);
15
+ if (!parsed.success)
16
+ return undefined;
17
+ const base = parsed.data.default ?? {};
18
+ const record = parsed.data.records[recordId] ?? {};
19
+ const mode = record.mode ?? base.mode;
20
+ const localAdapters = record.localAdapters ?? base.localAdapters;
21
+ const remoteAdapters = record.remoteAdapters ?? base.remoteAdapters;
22
+ const defaultAdapter = record.defaultAdapter ?? base.defaultAdapter;
23
+ const persistence = mode || localAdapters || remoteAdapters
24
+ ? {
25
+ ...(mode ? { mode } : {}),
26
+ ...(localAdapters ? { localAdapters } : {}),
27
+ ...(remoteAdapters ? { remoteAdapters } : {})
28
+ }
29
+ : undefined;
30
+ if (!persistence && !defaultAdapter)
31
+ return undefined;
32
+ return {
33
+ ...(persistence ? { persistence } : {}),
34
+ ...(defaultAdapter ? { defaultAdapter } : {})
35
+ };
36
+ }
37
+ //# sourceMappingURL=overrides.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overrides.js","sourceRoot":"","sources":["../../src/policy/overrides.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,4BAA4B,EAA+B,MAAM,eAAe,CAAC;AAE1F,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD,IAAI,EAAE,4BAA4B,CAAC,QAAQ,EAAE;IAC7C,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC7C,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC9C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,OAAO,EAAE,2BAA2B,CAAC,QAAQ,EAAE;IAC/C,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,2BAA2B,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CACtE,CAAC,CAAC;AAIH,MAAM,UAAU,wCAAwC,CACvD,MAAe,EACf,QAAgB;IAEhB,MAAM,MAAM,GAAG,0BAA0B,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC5D,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAEtC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;IACvC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IACnD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;IACtC,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC;IACjE,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC;IACpE,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC;IAEpE,MAAM,WAAW,GAChB,IAAI,IAAI,aAAa,IAAI,cAAc;QACtC,CAAC,CAAC;YACA,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzB,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3C,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7C;QACF,CAAC,CAAC,SAAS,CAAC;IAEd,IAAI,CAAC,WAAW,IAAI,CAAC,cAAc;QAAE,OAAO,SAAS,CAAC;IACtD,OAAO;QACN,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC7C,CAAC;AACH,CAAC"}
@@ -0,0 +1,38 @@
1
+ import * as z from 'zod/v4';
2
+ export declare const StoragePersistenceModeSchema: z.ZodEnum<{
3
+ "local-only": "local-only";
4
+ "remote-only": "remote-only";
5
+ "local-first": "local-first";
6
+ "remote-first": "remote-first";
7
+ }>;
8
+ export declare const StoragePersistencePolicySchema: z.ZodObject<{
9
+ mode: z.ZodDefault<z.ZodEnum<{
10
+ "local-only": "local-only";
11
+ "remote-only": "remote-only";
12
+ "local-first": "local-first";
13
+ "remote-first": "remote-first";
14
+ }>>;
15
+ localAdapters: z.ZodOptional<z.ZodArray<z.ZodString>>;
16
+ remoteAdapters: z.ZodOptional<z.ZodArray<z.ZodString>>;
17
+ }, z.core.$strip>;
18
+ export type StoragePersistenceMode = z.infer<typeof StoragePersistenceModeSchema>;
19
+ export type StoragePersistencePolicy = z.infer<typeof StoragePersistencePolicySchema>;
20
+ export interface StoragePolicyDescriptorDefaults {
21
+ allowedAdapters: string[];
22
+ defaultAdapter?: string;
23
+ persistence?: StoragePersistencePolicy;
24
+ }
25
+ export interface StoragePolicyOverrides {
26
+ persistence?: Partial<StoragePersistencePolicy>;
27
+ defaultAdapter?: string;
28
+ }
29
+ export interface ResolvedStoragePolicy {
30
+ mode: StoragePersistenceMode;
31
+ defaultAdapter: string | null;
32
+ adapterOrder: string[];
33
+ localAdapters: string[];
34
+ remoteAdapters: string[];
35
+ }
36
+ export declare function resolveStoragePolicy(descriptor: StoragePolicyDescriptorDefaults, overrides?: StoragePolicyOverrides): ResolvedStoragePolicy;
37
+ export declare function isRemoteStorageAdapter(adapterId: string): boolean;
38
+ //# sourceMappingURL=persistence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../src/policy/persistence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAE5B,eAAO,MAAM,4BAA4B;;;;;EAKvC,CAAC;AAEH,eAAO,MAAM,8BAA8B;;;;;;;;;iBAIzC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAClF,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AAEtF,MAAM,WAAW,+BAA+B;IAC/C,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,wBAAwB,CAAC;CACvC;AAED,MAAM,WAAW,sBAAsB;IACtC,WAAW,CAAC,EAAE,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAChD,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IACrC,IAAI,EAAE,sBAAsB,CAAC;IAC7B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,cAAc,EAAE,MAAM,EAAE,CAAC;CACzB;AAID,wBAAgB,oBAAoB,CACnC,UAAU,EAAE,+BAA+B,EAC3C,SAAS,CAAC,EAAE,sBAAsB,GAChC,qBAAqB,CA6BvB;AAED,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAEjE"}
@@ -0,0 +1,65 @@
1
+ import * as z from 'zod/v4';
2
+ export const StoragePersistenceModeSchema = z.enum([
3
+ 'local-only',
4
+ 'local-first',
5
+ 'remote-first',
6
+ 'remote-only'
7
+ ]);
8
+ export const StoragePersistencePolicySchema = z.object({
9
+ mode: StoragePersistenceModeSchema.default('local-first'),
10
+ localAdapters: z.array(z.string()).optional(),
11
+ remoteAdapters: z.array(z.string()).optional()
12
+ });
13
+ const REMOTE_STORAGE_ADAPTERS = new Set(['storage.cloud-api', 'storage.drizzle']);
14
+ export function resolveStoragePolicy(descriptor, overrides) {
15
+ const base = descriptor.persistence ?? { mode: 'local-first' };
16
+ const persistence = StoragePersistencePolicySchema.parse({
17
+ ...base,
18
+ ...overrides?.persistence
19
+ });
20
+ const allowedAdapters = unique(descriptor.allowedAdapters);
21
+ const localAdapters = unique(persistence.localAdapters ??
22
+ allowedAdapters.filter((adapterId) => !isRemoteStorageAdapter(adapterId))).filter((adapterId) => allowedAdapters.includes(adapterId));
23
+ const remoteAdapters = unique(persistence.remoteAdapters ??
24
+ allowedAdapters.filter((adapterId) => isRemoteStorageAdapter(adapterId))).filter((adapterId) => allowedAdapters.includes(adapterId));
25
+ const orderedByMode = orderAdaptersByMode(persistence.mode, localAdapters, remoteAdapters);
26
+ const defaultAdapter = resolveDefaultAdapter(overrides?.defaultAdapter ?? descriptor.defaultAdapter ?? null, allowedAdapters, orderedByMode);
27
+ return {
28
+ mode: persistence.mode,
29
+ defaultAdapter,
30
+ adapterOrder: defaultAdapter ? prioritize(defaultAdapter, orderedByMode) : orderedByMode,
31
+ localAdapters,
32
+ remoteAdapters
33
+ };
34
+ }
35
+ export function isRemoteStorageAdapter(adapterId) {
36
+ return REMOTE_STORAGE_ADAPTERS.has(adapterId);
37
+ }
38
+ function orderAdaptersByMode(mode, localAdapters, remoteAdapters) {
39
+ switch (mode) {
40
+ case 'local-only':
41
+ return [...localAdapters];
42
+ case 'remote-only':
43
+ return [...remoteAdapters];
44
+ case 'remote-first':
45
+ return [...remoteAdapters, ...localAdapters];
46
+ case 'local-first':
47
+ default:
48
+ return [...localAdapters, ...remoteAdapters];
49
+ }
50
+ }
51
+ function resolveDefaultAdapter(defaultAdapter, allowedAdapters, orderedByMode) {
52
+ if (defaultAdapter &&
53
+ allowedAdapters.includes(defaultAdapter) &&
54
+ orderedByMode.includes(defaultAdapter)) {
55
+ return defaultAdapter;
56
+ }
57
+ return orderedByMode[0] ?? null;
58
+ }
59
+ function prioritize(adapterId, orderedAdapters) {
60
+ return [adapterId, ...orderedAdapters.filter((candidate) => candidate !== adapterId)];
61
+ }
62
+ function unique(values) {
63
+ return [...new Set(values)];
64
+ }
65
+ //# sourceMappingURL=persistence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistence.js","sourceRoot":"","sources":["../../src/policy/persistence.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Storage Policy Types
3
+ *
4
+ * Defines the types and interfaces for storage policy resolution and overrides.
5
+ */
6
+ export interface StoragePolicy {
7
+ mode: "persistent" | "ephemeral" | "cached";
8
+ adapter: string;
9
+ namespace: string;
10
+ ttl?: number;
11
+ compression?: boolean;
12
+ encryption?: boolean;
13
+ }
14
+ export interface StoragePolicyOverride {
15
+ [key: string]: unknown;
16
+ }
17
+ export interface StoragePolicyContext {
18
+ resolveStoragePolicy: (namespace: string, options?: Record<string, unknown>) => Promise<StoragePolicy>;
19
+ resolveStoragePolicyOverrides: (context: Record<string, unknown>) => Promise<StoragePolicyOverride>;
20
+ }
21
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/policy/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,YAAY,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,oBAAoB,EAAE,CACpB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC9B,OAAO,CAAC,aAAa,CAAC,CAAC;IAC5B,6BAA6B,EAAE,CAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC7B,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACrC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Storage Policy Types
3
+ *
4
+ * Defines the types and interfaces for storage policy resolution and overrides.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/policy/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}