@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.
- package/README.md +75 -0
- package/SPEC.md +60 -0
- package/dist/adapters/index.d.ts +14 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +15 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/bridge/index.d.ts +3 -0
- package/dist/bridge/index.d.ts.map +1 -0
- package/dist/bridge/index.js +2 -0
- package/dist/bridge/index.js.map +1 -0
- package/dist/bridge/storage-kind-bridge.d.ts +27 -0
- package/dist/bridge/storage-kind-bridge.d.ts.map +1 -0
- package/dist/bridge/storage-kind-bridge.js +110 -0
- package/dist/bridge/storage-kind-bridge.js.map +1 -0
- package/dist/bridge/types.d.ts +45 -0
- package/dist/bridge/types.d.ts.map +1 -0
- package/dist/bridge/types.js +8 -0
- package/dist/bridge/types.js.map +1 -0
- package/dist/cli/commands/list/storage.list.cli-command.descriptor.d.ts +4 -0
- package/dist/cli/commands/list/storage.list.cli-command.descriptor.d.ts.map +1 -0
- package/dist/cli/commands/list/storage.list.cli-command.descriptor.js +18 -0
- package/dist/cli/commands/list/storage.list.cli-command.descriptor.js.map +1 -0
- package/dist/cli/commands/list/storage.list.cli-command.impl.d.ts +11 -0
- package/dist/cli/commands/list/storage.list.cli-command.impl.d.ts.map +1 -0
- package/dist/cli/commands/list/storage.list.cli-command.impl.js +48 -0
- package/dist/cli/commands/list/storage.list.cli-command.impl.js.map +1 -0
- package/dist/cli/commands/sync/pull/storage.sync.pull.cli-command.descriptor.d.ts +4 -0
- package/dist/cli/commands/sync/pull/storage.sync.pull.cli-command.descriptor.d.ts.map +1 -0
- package/dist/cli/commands/sync/pull/storage.sync.pull.cli-command.descriptor.js +26 -0
- package/dist/cli/commands/sync/pull/storage.sync.pull.cli-command.descriptor.js.map +1 -0
- package/dist/cli/commands/sync/pull/storage.sync.pull.cli-command.impl.d.ts +13 -0
- package/dist/cli/commands/sync/pull/storage.sync.pull.cli-command.impl.d.ts.map +1 -0
- package/dist/cli/commands/sync/pull/storage.sync.pull.cli-command.impl.js +136 -0
- package/dist/cli/commands/sync/pull/storage.sync.pull.cli-command.impl.js.map +1 -0
- package/dist/cli/commands/sync/push/storage.sync.push.cli-command.descriptor.d.ts +4 -0
- package/dist/cli/commands/sync/push/storage.sync.push.cli-command.descriptor.d.ts.map +1 -0
- package/dist/cli/commands/sync/push/storage.sync.push.cli-command.descriptor.js +26 -0
- package/dist/cli/commands/sync/push/storage.sync.push.cli-command.descriptor.js.map +1 -0
- package/dist/cli/commands/sync/push/storage.sync.push.cli-command.impl.d.ts +13 -0
- package/dist/cli/commands/sync/push/storage.sync.push.cli-command.impl.d.ts.map +1 -0
- package/dist/cli/commands/sync/push/storage.sync.push.cli-command.impl.js +165 -0
- package/dist/cli/commands/sync/push/storage.sync.push.cli-command.impl.js.map +1 -0
- package/dist/cli/commands/sync/resolve/storage.sync.resolve.cli-command.descriptor.d.ts +4 -0
- package/dist/cli/commands/sync/resolve/storage.sync.resolve.cli-command.descriptor.d.ts.map +1 -0
- package/dist/cli/commands/sync/resolve/storage.sync.resolve.cli-command.descriptor.js +20 -0
- package/dist/cli/commands/sync/resolve/storage.sync.resolve.cli-command.descriptor.js.map +1 -0
- package/dist/cli/commands/sync/resolve/storage.sync.resolve.cli-command.impl.d.ts +12 -0
- package/dist/cli/commands/sync/resolve/storage.sync.resolve.cli-command.impl.d.ts.map +1 -0
- package/dist/cli/commands/sync/resolve/storage.sync.resolve.cli-command.impl.js +95 -0
- package/dist/cli/commands/sync/resolve/storage.sync.resolve.cli-command.impl.js.map +1 -0
- package/dist/cli/commands/sync/status/storage.sync.status.cli-command.descriptor.d.ts +4 -0
- package/dist/cli/commands/sync/status/storage.sync.status.cli-command.descriptor.d.ts.map +1 -0
- package/dist/cli/commands/sync/status/storage.sync.status.cli-command.descriptor.js +15 -0
- package/dist/cli/commands/sync/status/storage.sync.status.cli-command.descriptor.js.map +1 -0
- package/dist/cli/commands/sync/status/storage.sync.status.cli-command.impl.d.ts +13 -0
- package/dist/cli/commands/sync/status/storage.sync.status.cli-command.impl.d.ts.map +1 -0
- package/dist/cli/commands/sync/status/storage.sync.status.cli-command.impl.js +150 -0
- package/dist/cli/commands/sync/status/storage.sync.status.cli-command.impl.js.map +1 -0
- package/dist/cli/context.consumer.d.ts +26 -0
- package/dist/cli/context.consumer.d.ts.map +1 -0
- package/dist/cli/context.consumer.js +164 -0
- package/dist/cli/context.consumer.js.map +1 -0
- package/dist/cli/storage.cli-group.descriptor.d.ts +4 -0
- package/dist/cli/storage.cli-group.descriptor.d.ts.map +1 -0
- package/dist/cli/storage.cli-group.descriptor.js +11 -0
- package/dist/cli/storage.cli-group.descriptor.js.map +1 -0
- package/dist/cli/storage.sync.cli-group.descriptor.d.ts +4 -0
- package/dist/cli/storage.sync.cli-group.descriptor.d.ts.map +1 -0
- package/dist/cli/storage.sync.cli-group.descriptor.js +12 -0
- package/dist/cli/storage.sync.cli-group.descriptor.js.map +1 -0
- package/dist/cli/types.d.ts +26 -0
- package/dist/cli/types.d.ts.map +1 -0
- package/dist/cli/types.js +11 -0
- package/dist/cli/types.js.map +1 -0
- package/dist/client/index.d.ts +10 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +10 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/list-browsable-adapters.d.ts +31 -0
- package/dist/client/list-browsable-adapters.d.ts.map +1 -0
- package/dist/client/list-browsable-adapters.js +40 -0
- package/dist/client/list-browsable-adapters.js.map +1 -0
- package/dist/daemon/commands/sync.d.ts +23 -0
- package/dist/daemon/commands/sync.d.ts.map +1 -0
- package/dist/daemon/commands/sync.js +169 -0
- package/dist/daemon/commands/sync.js.map +1 -0
- package/dist/docs/adapters.docs.descriptor.d.ts +4 -0
- package/dist/docs/adapters.docs.descriptor.d.ts.map +1 -0
- package/dist/docs/adapters.docs.descriptor.js +223 -0
- package/dist/docs/adapters.docs.descriptor.js.map +1 -0
- package/dist/docs/manifests.docs.descriptor.d.ts +4 -0
- package/dist/docs/manifests.docs.descriptor.d.ts.map +1 -0
- package/dist/docs/manifests.docs.descriptor.js +316 -0
- package/dist/docs/manifests.docs.descriptor.js.map +1 -0
- package/dist/docs/records.docs.descriptor.d.ts +4 -0
- package/dist/docs/records.docs.descriptor.d.ts.map +1 -0
- package/dist/docs/records.docs.descriptor.js +269 -0
- package/dist/docs/records.docs.descriptor.js.map +1 -0
- package/dist/docs/sync.docs.descriptor.d.ts +4 -0
- package/dist/docs/sync.docs.descriptor.d.ts.map +1 -0
- package/dist/docs/sync.docs.descriptor.js +279 -0
- package/dist/docs/sync.docs.descriptor.js.map +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +29 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/adapter.d.ts +382 -0
- package/dist/interfaces/adapter.d.ts.map +1 -0
- package/dist/interfaces/adapter.js +11 -0
- package/dist/interfaces/adapter.js.map +1 -0
- package/dist/interfaces/document-store.d.ts +62 -0
- package/dist/interfaces/document-store.d.ts.map +1 -0
- package/dist/interfaces/document-store.js +8 -0
- package/dist/interfaces/document-store.js.map +1 -0
- package/dist/interfaces/index.d.ts +17 -0
- package/dist/interfaces/index.d.ts.map +1 -0
- package/dist/interfaces/index.js +24 -0
- package/dist/interfaces/index.js.map +1 -0
- package/dist/interfaces/key-value.d.ts +95 -0
- package/dist/interfaces/key-value.d.ts.map +1 -0
- package/dist/interfaces/key-value.js +8 -0
- package/dist/interfaces/key-value.js.map +1 -0
- package/dist/interfaces/query-builder.d.ts +31 -0
- package/dist/interfaces/query-builder.d.ts.map +1 -0
- package/dist/interfaces/query-builder.js +11 -0
- package/dist/interfaces/query-builder.js.map +1 -0
- package/dist/interfaces/record/index.d.ts +7 -0
- package/dist/interfaces/record/index.d.ts.map +1 -0
- package/dist/interfaces/record/index.js +7 -0
- package/dist/interfaces/record/index.js.map +1 -0
- package/dist/interfaces/record/interface.d.ts +593 -0
- package/dist/interfaces/record/interface.d.ts.map +1 -0
- package/dist/interfaces/record/interface.js +49 -0
- package/dist/interfaces/record/interface.js.map +1 -0
- package/dist/interfaces/repository.d.ts +262 -0
- package/dist/interfaces/repository.d.ts.map +1 -0
- package/dist/interfaces/repository.js +8 -0
- package/dist/interfaces/repository.js.map +1 -0
- package/dist/interfaces/schema/index.d.ts +8 -0
- package/dist/interfaces/schema/index.d.ts.map +1 -0
- package/dist/interfaces/schema/index.js +10 -0
- package/dist/interfaces/schema/index.js.map +1 -0
- package/dist/interfaces/schema/schema-interface.d.ts +516 -0
- package/dist/interfaces/schema/schema-interface.d.ts.map +1 -0
- package/dist/interfaces/schema/schema-interface.js +31 -0
- package/dist/interfaces/schema/schema-interface.js.map +1 -0
- package/dist/interfaces/schema/table-interface.d.ts +250 -0
- package/dist/interfaces/schema/table-interface.d.ts.map +1 -0
- package/dist/interfaces/schema/table-interface.js +31 -0
- package/dist/interfaces/schema/table-interface.js.map +1 -0
- package/dist/interfaces/storage-consumer-fs.d.ts +40 -0
- package/dist/interfaces/storage-consumer-fs.d.ts.map +1 -0
- package/dist/interfaces/storage-consumer-fs.js +42 -0
- package/dist/interfaces/storage-consumer-fs.js.map +1 -0
- package/dist/manifest/base.d.ts +187 -0
- package/dist/manifest/base.d.ts.map +1 -0
- package/dist/manifest/base.js +516 -0
- package/dist/manifest/base.js.map +1 -0
- package/dist/manifest/cloud-sync.consumer.d.ts +7 -0
- package/dist/manifest/cloud-sync.consumer.d.ts.map +1 -0
- package/dist/manifest/cloud-sync.consumer.js +82 -0
- package/dist/manifest/cloud-sync.consumer.js.map +1 -0
- package/dist/manifest/index.d.ts +7 -0
- package/dist/manifest/index.d.ts.map +1 -0
- package/dist/manifest/index.js +7 -0
- package/dist/manifest/index.js.map +1 -0
- package/dist/manifest/source-policy.d.ts +8 -0
- package/dist/manifest/source-policy.d.ts.map +1 -0
- package/dist/manifest/source-policy.js +62 -0
- package/dist/manifest/source-policy.js.map +1 -0
- package/dist/paths.d.ts +6 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +152 -0
- package/dist/paths.js.map +1 -0
- package/dist/policy/context.d.ts +9 -0
- package/dist/policy/context.d.ts.map +1 -0
- package/dist/policy/context.js +29 -0
- package/dist/policy/context.js.map +1 -0
- package/dist/policy/index.d.ts +4 -0
- package/dist/policy/index.d.ts.map +1 -0
- package/dist/policy/index.js +4 -0
- package/dist/policy/index.js.map +1 -0
- package/dist/policy/overrides.d.ts +40 -0
- package/dist/policy/overrides.d.ts.map +1 -0
- package/dist/policy/overrides.js +37 -0
- package/dist/policy/overrides.js.map +1 -0
- package/dist/policy/persistence.d.ts +38 -0
- package/dist/policy/persistence.d.ts.map +1 -0
- package/dist/policy/persistence.js +65 -0
- package/dist/policy/persistence.js.map +1 -0
- package/dist/policy/types.d.ts +21 -0
- package/dist/policy/types.d.ts.map +1 -0
- package/dist/policy/types.js +7 -0
- package/dist/policy/types.js.map +1 -0
- package/dist/record/base.d.ts +186 -0
- package/dist/record/base.d.ts.map +1 -0
- package/dist/record/base.js +1437 -0
- package/dist/record/base.js.map +1 -0
- package/dist/record/events.d.ts +71 -0
- package/dist/record/events.d.ts.map +1 -0
- package/dist/record/events.js +52 -0
- package/dist/record/events.js.map +1 -0
- package/dist/record/extensions.d.ts +51 -0
- package/dist/record/extensions.d.ts.map +1 -0
- package/dist/record/extensions.js +222 -0
- package/dist/record/extensions.js.map +1 -0
- package/dist/record/index.d.ts +7 -0
- package/dist/record/index.d.ts.map +1 -0
- package/dist/record/index.js +7 -0
- package/dist/record/index.js.map +1 -0
- package/dist/resolver/storage-backed-resolver.d.ts +23 -0
- package/dist/resolver/storage-backed-resolver.d.ts.map +1 -0
- package/dist/resolver/storage-backed-resolver.js +187 -0
- package/dist/resolver/storage-backed-resolver.js.map +1 -0
- package/dist/schemas/adapter-descriptor.d.ts +108 -0
- package/dist/schemas/adapter-descriptor.d.ts.map +1 -0
- package/dist/schemas/adapter-descriptor.js +101 -0
- package/dist/schemas/adapter-descriptor.js.map +1 -0
- package/dist/schemas/index.d.ts +14 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +12 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/manifest-descriptor.d.ts +110 -0
- package/dist/schemas/manifest-descriptor.d.ts.map +1 -0
- package/dist/schemas/manifest-descriptor.js +114 -0
- package/dist/schemas/manifest-descriptor.js.map +1 -0
- package/dist/schemas/record/descriptor.d.ts +570 -0
- package/dist/schemas/record/descriptor.d.ts.map +1 -0
- package/dist/schemas/record/descriptor.js +389 -0
- package/dist/schemas/record/descriptor.js.map +1 -0
- package/dist/schemas/record/index.d.ts +8 -0
- package/dist/schemas/record/index.d.ts.map +1 -0
- package/dist/schemas/record/index.js +7 -0
- package/dist/schemas/record/index.js.map +1 -0
- package/dist/schemas/record/relation.d.ts +36 -0
- package/dist/schemas/record/relation.d.ts.map +1 -0
- package/dist/schemas/record/relation.js +37 -0
- package/dist/schemas/record/relation.js.map +1 -0
- package/dist/schemas/schema/descriptor.d.ts +231 -0
- package/dist/schemas/schema/descriptor.d.ts.map +1 -0
- package/dist/schemas/schema/descriptor.js +205 -0
- package/dist/schemas/schema/descriptor.js.map +1 -0
- package/dist/schemas/schema/index.d.ts +7 -0
- package/dist/schemas/schema/index.d.ts.map +1 -0
- package/dist/schemas/schema/index.js +7 -0
- package/dist/schemas/schema/index.js.map +1 -0
- package/dist/schemas/sync-bridge-descriptor.d.ts +124 -0
- package/dist/schemas/sync-bridge-descriptor.d.ts.map +1 -0
- package/dist/schemas/sync-bridge-descriptor.js +67 -0
- package/dist/schemas/sync-bridge-descriptor.js.map +1 -0
- package/dist/server/manifest-route.d.ts +92 -0
- package/dist/server/manifest-route.d.ts.map +1 -0
- package/dist/server/manifest-route.js +226 -0
- package/dist/server/manifest-route.js.map +1 -0
- package/dist/storage-policy.context.descriptor.d.ts +16 -0
- package/dist/storage-policy.context.descriptor.d.ts.map +1 -0
- package/dist/storage-policy.context.descriptor.js +16 -0
- package/dist/storage-policy.context.descriptor.js.map +1 -0
- package/dist/storage-policy.context.server.d.ts +14 -0
- package/dist/storage-policy.context.server.d.ts.map +1 -0
- package/dist/storage-policy.context.server.js +27 -0
- package/dist/storage-policy.context.server.js.map +1 -0
- package/dist/storage.plugin.d.ts +38 -0
- package/dist/storage.plugin.d.ts.map +1 -0
- package/dist/storage.plugin.js +204 -0
- package/dist/storage.plugin.js.map +1 -0
- package/dist/sync/cloud-pull.d.ts +15 -0
- package/dist/sync/cloud-pull.d.ts.map +1 -0
- package/dist/sync/cloud-pull.js +130 -0
- package/dist/sync/cloud-pull.js.map +1 -0
- package/dist/sync/cloud-record-crud-config.d.ts +19 -0
- package/dist/sync/cloud-record-crud-config.d.ts.map +1 -0
- package/dist/sync/cloud-record-crud-config.js +22 -0
- package/dist/sync/cloud-record-crud-config.js.map +1 -0
- package/dist/sync/record-sync-bridge.d.ts +5 -0
- package/dist/sync/record-sync-bridge.d.ts.map +1 -0
- package/dist/sync/record-sync-bridge.js +121 -0
- package/dist/sync/record-sync-bridge.js.map +1 -0
- package/dist/sync/resolve-sync-target.d.ts +23 -0
- package/dist/sync/resolve-sync-target.d.ts.map +1 -0
- package/dist/sync/resolve-sync-target.js +45 -0
- package/dist/sync/resolve-sync-target.js.map +1 -0
- package/dist/sync/schemas/cloud-pull.d.ts +25 -0
- package/dist/sync/schemas/cloud-pull.d.ts.map +1 -0
- package/dist/sync/schemas/cloud-pull.js +7 -0
- package/dist/sync/schemas/cloud-pull.js.map +1 -0
- package/dist/sync/schemas/index.d.ts +9 -0
- package/dist/sync/schemas/index.d.ts.map +1 -0
- package/dist/sync/schemas/index.js +9 -0
- package/dist/sync/schemas/index.js.map +1 -0
- package/dist/sync/schemas/sync-helpers.d.ts +17 -0
- package/dist/sync/schemas/sync-helpers.d.ts.map +1 -0
- package/dist/sync/schemas/sync-helpers.js +7 -0
- package/dist/sync/schemas/sync-helpers.js.map +1 -0
- package/dist/sync/schemas/sync-state.d.ts +65 -0
- package/dist/sync/schemas/sync-state.d.ts.map +1 -0
- package/dist/sync/schemas/sync-state.js +32 -0
- package/dist/sync/schemas/sync-state.js.map +1 -0
- package/dist/sync/sync-bridge.d.ts +80 -0
- package/dist/sync/sync-bridge.d.ts.map +1 -0
- package/dist/sync/sync-bridge.js +617 -0
- package/dist/sync/sync-bridge.js.map +1 -0
- package/dist/sync/sync-manifest.d.ts +20 -0
- package/dist/sync/sync-manifest.d.ts.map +1 -0
- package/dist/sync/sync-manifest.js +140 -0
- package/dist/sync/sync-manifest.js.map +1 -0
- package/dist/sync/sync-state.consumer.d.ts +23 -0
- package/dist/sync/sync-state.consumer.d.ts.map +1 -0
- package/dist/sync/sync-state.consumer.js +111 -0
- package/dist/sync/sync-state.consumer.js.map +1 -0
- package/dist/transform/index.d.ts +75 -0
- package/dist/transform/index.d.ts.map +1 -0
- package/dist/transform/index.js +81 -0
- package/dist/transform/index.js.map +1 -0
- package/dist/transform/transform-descriptor.d.ts +51 -0
- package/dist/transform/transform-descriptor.d.ts.map +1 -0
- package/dist/transform/transform-descriptor.js +30 -0
- package/dist/transform/transform-descriptor.js.map +1 -0
- package/dist/tui/storage-explorer.descriptor.d.ts +14 -0
- package/dist/tui/storage-explorer.descriptor.d.ts.map +1 -0
- package/dist/tui/storage-explorer.descriptor.js +29 -0
- package/dist/tui/storage-explorer.descriptor.js.map +1 -0
- package/dist/tui/storage-explorer.impl.consumer.d.ts +11 -0
- package/dist/tui/storage-explorer.impl.consumer.d.ts.map +1 -0
- package/dist/tui/storage-explorer.impl.consumer.js +13 -0
- package/dist/tui/storage-explorer.impl.consumer.js.map +1 -0
- package/dist/tui/storage-open.descriptor.d.ts +14 -0
- package/dist/tui/storage-open.descriptor.d.ts.map +1 -0
- package/dist/tui/storage-open.descriptor.js +28 -0
- package/dist/tui/storage-open.descriptor.js.map +1 -0
- package/dist/tui/storage-open.impl.consumer.d.ts +11 -0
- package/dist/tui/storage-open.impl.consumer.d.ts.map +1 -0
- package/dist/tui/storage-open.impl.consumer.js +13 -0
- package/dist/tui/storage-open.impl.consumer.js.map +1 -0
- package/dist/utils/error-context.d.ts +2 -0
- package/dist/utils/error-context.d.ts.map +1 -0
- package/dist/utils/error-context.js +17 -0
- package/dist/utils/error-context.js.map +1 -0
- package/package.json +241 -0
- package/src/adapters/index.ts +13 -0
- package/src/bridge/index.ts +2 -0
- package/src/bridge/storage-kind-bridge.ts +131 -0
- package/src/bridge/types.ts +46 -0
- package/src/cli/commands/list/storage.list.cli-command.descriptor.ts +20 -0
- package/src/cli/commands/list/storage.list.cli-command.impl.ts +72 -0
- package/src/cli/commands/sync/pull/storage.sync.pull.cli-command.descriptor.ts +28 -0
- package/src/cli/commands/sync/pull/storage.sync.pull.cli-command.impl.ts +171 -0
- package/src/cli/commands/sync/push/storage.sync.push.cli-command.descriptor.ts +28 -0
- package/src/cli/commands/sync/push/storage.sync.push.cli-command.impl.ts +213 -0
- package/src/cli/commands/sync/resolve/storage.sync.resolve.cli-command.descriptor.ts +22 -0
- package/src/cli/commands/sync/resolve/storage.sync.resolve.cli-command.impl.ts +129 -0
- package/src/cli/commands/sync/status/storage.sync.status.cli-command.descriptor.ts +17 -0
- package/src/cli/commands/sync/status/storage.sync.status.cli-command.impl.ts +192 -0
- package/src/cli/context.consumer.ts +195 -0
- package/src/cli/storage.cli-group.descriptor.ts +13 -0
- package/src/cli/storage.sync.cli-group.descriptor.ts +14 -0
- package/src/cli/types.ts +25 -0
- package/src/client/index.ts +10 -0
- package/src/client/list-browsable-adapters.ts +42 -0
- package/src/daemon/commands/sync.ts +225 -0
- package/src/docs/adapters.docs.descriptor.ts +225 -0
- package/src/docs/manifests.docs.descriptor.ts +318 -0
- package/src/docs/records.docs.descriptor.ts +271 -0
- package/src/docs/sync.docs.descriptor.ts +281 -0
- package/src/index.ts +109 -0
- package/src/interfaces/adapter.ts +451 -0
- package/src/interfaces/document-store.ts +74 -0
- package/src/interfaces/index.ts +117 -0
- package/src/interfaces/key-value.ts +112 -0
- package/src/interfaces/query-builder.ts +31 -0
- package/src/interfaces/record/index.ts +58 -0
- package/src/interfaces/record/interface.ts +723 -0
- package/src/interfaces/repository.ts +300 -0
- package/src/interfaces/schema/index.ts +37 -0
- package/src/interfaces/schema/schema-interface.ts +586 -0
- package/src/interfaces/schema/table-interface.ts +314 -0
- package/src/interfaces/storage-consumer-fs.ts +66 -0
- package/src/manifest/base.ts +594 -0
- package/src/manifest/cloud-sync.consumer.ts +120 -0
- package/src/manifest/index.ts +7 -0
- package/src/manifest/source-policy.ts +74 -0
- package/src/paths.ts +171 -0
- package/src/policy/context.ts +30 -0
- package/src/policy/index.ts +20 -0
- package/src/policy/overrides.ts +46 -0
- package/src/policy/persistence.ts +117 -0
- package/src/policy/types.ts +28 -0
- package/src/record/base.ts +1872 -0
- package/src/record/events.ts +56 -0
- package/src/record/extensions.ts +308 -0
- package/src/record/index.ts +7 -0
- package/src/resolver/storage-backed-resolver.ts +255 -0
- package/src/schemas/adapter-descriptor.ts +128 -0
- package/src/schemas/index.ts +104 -0
- package/src/schemas/manifest-descriptor.ts +143 -0
- package/src/schemas/record/descriptor.ts +621 -0
- package/src/schemas/record/index.ts +60 -0
- package/src/schemas/record/relation.ts +49 -0
- package/src/schemas/schema/descriptor.ts +278 -0
- package/src/schemas/schema/index.ts +14 -0
- package/src/schemas/sync-bridge-descriptor.ts +143 -0
- package/src/server/manifest-route.ts +319 -0
- package/src/storage-policy.context.descriptor.ts +17 -0
- package/src/storage-policy.context.server.ts +34 -0
- package/src/storage.plugin.ts +264 -0
- package/src/sync/cloud-pull.ts +202 -0
- package/src/sync/cloud-record-crud-config.ts +41 -0
- package/src/sync/record-sync-bridge.ts +183 -0
- package/src/sync/resolve-sync-target.ts +57 -0
- package/src/sync/schemas/cloud-pull.ts +26 -0
- package/src/sync/schemas/index.ts +18 -0
- package/src/sync/schemas/sync-helpers.ts +18 -0
- package/src/sync/schemas/sync-state.ts +41 -0
- package/src/sync/sync-bridge.ts +763 -0
- package/src/sync/sync-manifest.ts +212 -0
- package/src/sync/sync-state.consumer.ts +144 -0
- package/src/transform/index.ts +130 -0
- package/src/transform/transform-descriptor.ts +53 -0
- package/src/tui/storage-explorer.descriptor.ts +32 -0
- package/src/tui/storage-explorer.impl.consumer.ts +14 -0
- package/src/tui/storage-open.descriptor.ts +31 -0
- package/src/tui/storage-open.impl.consumer.ts +14 -0
- 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 @@
|
|
|
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 @@
|
|
|
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"}
|