@vibesdotdev/config 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 +85 -0
- package/SPEC.md +71 -0
- package/dist/adapters/cli/flags.d.ts +75 -0
- package/dist/adapters/cli/flags.d.ts.map +1 -0
- package/dist/adapters/cli/flags.js +221 -0
- package/dist/adapters/cli/flags.js.map +1 -0
- package/dist/adapters/cli/index.d.ts +12 -0
- package/dist/adapters/cli/index.d.ts.map +1 -0
- package/dist/adapters/cli/index.js +9 -0
- package/dist/adapters/cli/index.js.map +1 -0
- package/dist/adapters/cli/mappings.d.ts +17 -0
- package/dist/adapters/cli/mappings.d.ts.map +1 -0
- package/dist/adapters/cli/mappings.js +32 -0
- package/dist/adapters/cli/mappings.js.map +1 -0
- package/dist/adapters/cli/prompts.d.ts +28 -0
- package/dist/adapters/cli/prompts.d.ts.map +1 -0
- package/dist/adapters/cli/prompts.js +55 -0
- package/dist/adapters/cli/prompts.js.map +1 -0
- package/dist/adapters/cli/schemas/flags.schema.d.ts +8 -0
- package/dist/adapters/cli/schemas/flags.schema.d.ts.map +1 -0
- package/dist/adapters/cli/schemas/flags.schema.js +2 -0
- package/dist/adapters/cli/schemas/flags.schema.js.map +1 -0
- package/dist/adapters/cli/schemas/mappings.schema.d.ts +2 -0
- package/dist/adapters/cli/schemas/mappings.schema.d.ts.map +1 -0
- package/dist/adapters/cli/schemas/mappings.schema.js +2 -0
- package/dist/adapters/cli/schemas/mappings.schema.js.map +1 -0
- package/dist/adapters/cli/schemas/prompts.schema.d.ts +5 -0
- package/dist/adapters/cli/schemas/prompts.schema.d.ts.map +1 -0
- package/dist/adapters/cli/schemas/prompts.schema.js +2 -0
- package/dist/adapters/cli/schemas/prompts.schema.js.map +1 -0
- package/dist/adapters/cli/schemas/wizard.schema.d.ts +19 -0
- package/dist/adapters/cli/schemas/wizard.schema.d.ts.map +1 -0
- package/dist/adapters/cli/schemas/wizard.schema.js +2 -0
- package/dist/adapters/cli/schemas/wizard.schema.js.map +1 -0
- package/dist/adapters/cli/wizard.d.ts +33 -0
- package/dist/adapters/cli/wizard.d.ts.map +1 -0
- package/dist/adapters/cli/wizard.js +77 -0
- package/dist/adapters/cli/wizard.js.map +1 -0
- package/dist/browser/index.d.ts +7 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +4 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/cli/settings.descriptor.d.ts +9 -0
- package/dist/cli/settings.descriptor.d.ts.map +1 -0
- package/dist/cli/settings.descriptor.js +18 -0
- package/dist/cli/settings.descriptor.js.map +1 -0
- package/dist/cli/types.d.ts +57 -0
- package/dist/cli/types.d.ts.map +1 -0
- package/dist/cli/types.js +9 -0
- package/dist/cli/types.js.map +1 -0
- package/dist/client/index.d.ts +19 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +145 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/storage.d.ts +48 -0
- package/dist/client/storage.d.ts.map +1 -0
- package/dist/client/storage.js +46 -0
- package/dist/client/storage.js.map +1 -0
- package/dist/collection/collection.d.ts +46 -0
- package/dist/collection/collection.d.ts.map +1 -0
- package/dist/collection/collection.js +93 -0
- package/dist/collection/collection.js.map +1 -0
- package/dist/collection/index.d.ts +6 -0
- package/dist/collection/index.d.ts.map +1 -0
- package/dist/collection/index.js +5 -0
- package/dist/collection/index.js.map +1 -0
- package/dist/common/index.d.ts +7 -0
- package/dist/common/index.d.ts.map +1 -0
- package/dist/common/index.js +4 -0
- package/dist/common/index.js.map +1 -0
- package/dist/config.context.descriptor.d.ts +21 -0
- package/dist/config.context.descriptor.d.ts.map +1 -0
- package/dist/config.context.descriptor.js +11 -0
- package/dist/config.context.descriptor.js.map +1 -0
- package/dist/config.plugin.d.ts +15 -0
- package/dist/config.plugin.d.ts.map +1 -0
- package/dist/config.plugin.js +166 -0
- package/dist/config.plugin.js.map +1 -0
- package/dist/crud/base-types.d.ts +10 -0
- package/dist/crud/base-types.d.ts.map +1 -0
- package/dist/crud/base-types.js +10 -0
- package/dist/crud/base-types.js.map +1 -0
- package/dist/crud/index.d.ts +4 -0
- package/dist/crud/index.d.ts.map +1 -0
- package/dist/crud/index.js +2 -0
- package/dist/crud/index.js.map +1 -0
- package/dist/crud/schemas/base-types.schema.d.ts +19 -0
- package/dist/crud/schemas/base-types.schema.d.ts.map +1 -0
- package/dist/crud/schemas/base-types.schema.js +2 -0
- package/dist/crud/schemas/base-types.schema.js.map +1 -0
- package/dist/crud/schemas/shared.schema.d.ts +13 -0
- package/dist/crud/schemas/shared.schema.d.ts.map +1 -0
- package/dist/crud/schemas/shared.schema.js +2 -0
- package/dist/crud/schemas/shared.schema.js.map +1 -0
- package/dist/crud/shared.d.ts +8 -0
- package/dist/crud/shared.d.ts.map +1 -0
- package/dist/crud/shared.js +8 -0
- package/dist/crud/shared.js.map +1 -0
- package/dist/crud/types.d.ts +250 -0
- package/dist/crud/types.d.ts.map +1 -0
- package/dist/crud/types.js +22 -0
- package/dist/crud/types.js.map +1 -0
- package/dist/docs/environment.docs.descriptor.d.ts +4 -0
- package/dist/docs/environment.docs.descriptor.d.ts.map +1 -0
- package/dist/docs/environment.docs.descriptor.js +383 -0
- package/dist/docs/environment.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 +503 -0
- package/dist/docs/manifests.docs.descriptor.js.map +1 -0
- package/dist/docs/validation.docs.descriptor.d.ts +4 -0
- package/dist/docs/validation.docs.descriptor.d.ts.map +1 -0
- package/dist/docs/validation.docs.descriptor.js +441 -0
- package/dist/docs/validation.docs.descriptor.js.map +1 -0
- package/dist/doctor.d.ts +42 -0
- package/dist/doctor.d.ts.map +1 -0
- package/dist/doctor.js +119 -0
- package/dist/doctor.js.map +1 -0
- package/dist/env.d.ts +28 -0
- package/dist/env.d.ts.map +1 -0
- package/dist/env.js +75 -0
- package/dist/env.js.map +1 -0
- package/dist/env.runtime.d.ts +19 -0
- package/dist/env.runtime.d.ts.map +1 -0
- package/dist/env.runtime.js +37 -0
- package/dist/env.runtime.js.map +1 -0
- package/dist/environment/current.d.ts +32 -0
- package/dist/environment/current.d.ts.map +1 -0
- package/dist/environment/current.js +91 -0
- package/dist/environment/current.js.map +1 -0
- package/dist/environment/environment.config.descriptor.d.ts +11 -0
- package/dist/environment/environment.config.descriptor.d.ts.map +1 -0
- package/dist/environment/environment.config.descriptor.js +51 -0
- package/dist/environment/environment.config.descriptor.js.map +1 -0
- package/dist/environment/environment.config.schema.d.ts +47 -0
- package/dist/environment/environment.config.schema.d.ts.map +1 -0
- package/dist/environment/environment.config.schema.js +19 -0
- package/dist/environment/environment.config.schema.js.map +1 -0
- package/dist/environment/environment.local.descriptor.d.ts +11 -0
- package/dist/environment/environment.local.descriptor.d.ts.map +1 -0
- package/dist/environment/environment.local.descriptor.js +42 -0
- package/dist/environment/environment.local.descriptor.js.map +1 -0
- package/dist/environment/environment.plugin.d.ts +9 -0
- package/dist/environment/environment.plugin.d.ts.map +1 -0
- package/dist/environment/environment.plugin.js +27 -0
- package/dist/environment/environment.plugin.js.map +1 -0
- package/dist/environment/environment.production.descriptor.d.ts +10 -0
- package/dist/environment/environment.production.descriptor.d.ts.map +1 -0
- package/dist/environment/environment.production.descriptor.js +37 -0
- package/dist/environment/environment.production.descriptor.js.map +1 -0
- package/dist/environment/environment.staging.descriptor.d.ts +11 -0
- package/dist/environment/environment.staging.descriptor.d.ts.map +1 -0
- package/dist/environment/environment.staging.descriptor.js +22 -0
- package/dist/environment/environment.staging.descriptor.js.map +1 -0
- package/dist/environment/index.d.ts +8 -0
- package/dist/environment/index.d.ts.map +1 -0
- package/dist/environment/index.js +9 -0
- package/dist/environment/index.js.map +1 -0
- package/dist/environment/kinds/environment.default.d.ts +23 -0
- package/dist/environment/kinds/environment.default.d.ts.map +1 -0
- package/dist/environment/kinds/environment.default.js +49 -0
- package/dist/environment/kinds/environment.default.js.map +1 -0
- package/dist/environment/kinds/environment.interface.d.ts +7 -0
- package/dist/environment/kinds/environment.interface.d.ts.map +1 -0
- package/dist/environment/kinds/environment.interface.js +7 -0
- package/dist/environment/kinds/environment.interface.js.map +1 -0
- package/dist/environment/kinds/environment.kind.d.ts +10 -0
- package/dist/environment/kinds/environment.kind.d.ts.map +1 -0
- package/dist/environment/kinds/environment.kind.js +57 -0
- package/dist/environment/kinds/environment.kind.js.map +1 -0
- package/dist/environment/kinds/environment.schema.d.ts +34 -0
- package/dist/environment/kinds/environment.schema.d.ts.map +1 -0
- package/dist/environment/kinds/environment.schema.js +46 -0
- package/dist/environment/kinds/environment.schema.js.map +1 -0
- package/dist/environment/kinds/index.d.ts +8 -0
- package/dist/environment/kinds/index.d.ts.map +1 -0
- package/dist/environment/kinds/index.js +7 -0
- package/dist/environment/kinds/index.js.map +1 -0
- package/dist/environment/kinds/schemas/environment.interface.schema.d.ts +11 -0
- package/dist/environment/kinds/schemas/environment.interface.schema.d.ts.map +1 -0
- package/dist/environment/kinds/schemas/environment.interface.schema.js +2 -0
- package/dist/environment/kinds/schemas/environment.interface.schema.js.map +1 -0
- package/dist/environment/kinds/schemas/environment.schema.d.ts +30 -0
- package/dist/environment/kinds/schemas/environment.schema.d.ts.map +1 -0
- package/dist/environment/kinds/schemas/environment.schema.js +2 -0
- package/dist/environment/kinds/schemas/environment.schema.js.map +1 -0
- package/dist/environment/schemas/current.schema.d.ts +20 -0
- package/dist/environment/schemas/current.schema.d.ts.map +1 -0
- package/dist/environment/schemas/current.schema.js +2 -0
- package/dist/environment/schemas/current.schema.js.map +1 -0
- package/dist/environment/schemas/environment.config.schema.d.ts +4 -0
- package/dist/environment/schemas/environment.config.schema.d.ts.map +1 -0
- package/dist/environment/schemas/environment.config.schema.js +2 -0
- package/dist/environment/schemas/environment.config.schema.js.map +1 -0
- package/dist/extensions/index.d.ts +8 -0
- package/dist/extensions/index.d.ts.map +1 -0
- package/dist/extensions/index.js +8 -0
- package/dist/extensions/index.js.map +1 -0
- package/dist/extensions/registry.d.ts +41 -0
- package/dist/extensions/registry.d.ts.map +1 -0
- package/dist/extensions/registry.js +142 -0
- package/dist/extensions/registry.js.map +1 -0
- package/dist/extensions/types.d.ts +101 -0
- package/dist/extensions/types.d.ts.map +1 -0
- package/dist/extensions/types.js +8 -0
- package/dist/extensions/types.js.map +1 -0
- package/dist/form/core/field-resolver.d.ts +42 -0
- package/dist/form/core/field-resolver.d.ts.map +1 -0
- package/dist/form/core/field-resolver.js +293 -0
- package/dist/form/core/field-resolver.js.map +1 -0
- package/dist/form/core/groups.d.ts +20 -0
- package/dist/form/core/groups.d.ts.map +1 -0
- package/dist/form/core/groups.js +69 -0
- package/dist/form/core/groups.js.map +1 -0
- package/dist/form/core/index.d.ts +8 -0
- package/dist/form/core/index.d.ts.map +1 -0
- package/dist/form/core/index.js +6 -0
- package/dist/form/core/index.js.map +1 -0
- package/dist/form/core/nested-utils.d.ts +40 -0
- package/dist/form/core/nested-utils.d.ts.map +1 -0
- package/dist/form/core/nested-utils.js +98 -0
- package/dist/form/core/nested-utils.js.map +1 -0
- package/dist/form/core/schemas/validation.schema.d.ts +9 -0
- package/dist/form/core/schemas/validation.schema.d.ts.map +1 -0
- package/dist/form/core/schemas/validation.schema.js +2 -0
- package/dist/form/core/schemas/validation.schema.js.map +1 -0
- package/dist/form/core/types.d.ts +103 -0
- package/dist/form/core/types.d.ts.map +1 -0
- package/dist/form/core/types.js +2 -0
- package/dist/form/core/types.js.map +1 -0
- package/dist/form/core/validation.d.ts +23 -0
- package/dist/form/core/validation.d.ts.map +1 -0
- package/dist/form/core/validation.js +103 -0
- package/dist/form/core/validation.js.map +1 -0
- package/dist/form/core/visibility.d.ts +37 -0
- package/dist/form/core/visibility.d.ts.map +1 -0
- package/dist/form/core/visibility.js +128 -0
- package/dist/form/core/visibility.js.map +1 -0
- package/dist/form/index.d.ts +8 -0
- package/dist/form/index.d.ts.map +1 -0
- package/dist/form/index.js +2 -0
- package/dist/form/index.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/loader/cli/index.d.ts +61 -0
- package/dist/loader/cli/index.d.ts.map +1 -0
- package/dist/loader/cli/index.js +263 -0
- package/dist/loader/cli/index.js.map +1 -0
- package/dist/loader/cli/loaders.d.ts +13 -0
- package/dist/loader/cli/loaders.d.ts.map +1 -0
- package/dist/loader/cli/loaders.js +132 -0
- package/dist/loader/cli/loaders.js.map +1 -0
- package/dist/loader/cli/types.d.ts +152 -0
- package/dist/loader/cli/types.d.ts.map +1 -0
- package/dist/loader/cli/types.js +5 -0
- package/dist/loader/cli/types.js.map +1 -0
- package/dist/loader/cli/utils.d.ts +53 -0
- package/dist/loader/cli/utils.d.ts.map +1 -0
- package/dist/loader/cli/utils.js +198 -0
- package/dist/loader/cli/utils.js.map +1 -0
- package/dist/loader/client.d.ts +18 -0
- package/dist/loader/client.d.ts.map +1 -0
- package/dist/loader/client.js +109 -0
- package/dist/loader/client.js.map +1 -0
- package/dist/loader/discovery.d.ts +48 -0
- package/dist/loader/discovery.d.ts.map +1 -0
- package/dist/loader/discovery.js +253 -0
- package/dist/loader/discovery.js.map +1 -0
- package/dist/loader/file-loader.d.ts +17 -0
- package/dist/loader/file-loader.d.ts.map +1 -0
- package/dist/loader/file-loader.js +237 -0
- package/dist/loader/file-loader.js.map +1 -0
- package/dist/loader/index.d.ts +9 -0
- package/dist/loader/index.d.ts.map +1 -0
- package/dist/loader/index.js +8 -0
- package/dist/loader/index.js.map +1 -0
- package/dist/loader/index.server.d.ts +66 -0
- package/dist/loader/index.server.d.ts.map +1 -0
- package/dist/loader/index.server.js +256 -0
- package/dist/loader/index.server.js.map +1 -0
- package/dist/loader/merge.d.ts +88 -0
- package/dist/loader/merge.d.ts.map +1 -0
- package/dist/loader/merge.js +301 -0
- package/dist/loader/merge.js.map +1 -0
- package/dist/loader/schemas/merge.schema.d.ts +8 -0
- package/dist/loader/schemas/merge.schema.d.ts.map +1 -0
- package/dist/loader/schemas/merge.schema.js +2 -0
- package/dist/loader/schemas/merge.schema.js.map +1 -0
- package/dist/loader/schemas/validation.schema.d.ts +17 -0
- package/dist/loader/schemas/validation.schema.d.ts.map +1 -0
- package/dist/loader/schemas/validation.schema.js +2 -0
- package/dist/loader/schemas/validation.schema.js.map +1 -0
- package/dist/loader/server.d.ts +3 -0
- package/dist/loader/server.d.ts.map +1 -0
- package/dist/loader/server.js +2 -0
- package/dist/loader/server.js.map +1 -0
- package/dist/loader/types.d.ts +136 -0
- package/dist/loader/types.d.ts.map +1 -0
- package/dist/loader/types.js +24 -0
- package/dist/loader/types.js.map +1 -0
- package/dist/loader/validation.d.ts +59 -0
- package/dist/loader/validation.d.ts.map +1 -0
- package/dist/loader/validation.js +218 -0
- package/dist/loader/validation.js.map +1 -0
- package/dist/manifest/builder.d.ts +172 -0
- package/dist/manifest/builder.d.ts.map +1 -0
- package/dist/manifest/builder.js +336 -0
- package/dist/manifest/builder.js.map +1 -0
- package/dist/manifest/config-manifest.d.ts +199 -0
- package/dist/manifest/config-manifest.d.ts.map +1 -0
- package/dist/manifest/config-manifest.js +388 -0
- package/dist/manifest/config-manifest.js.map +1 -0
- package/dist/manifest/index.d.ts +10 -0
- package/dist/manifest/index.d.ts.map +1 -0
- package/dist/manifest/index.js +20 -0
- package/dist/manifest/index.js.map +1 -0
- package/dist/manifest/schema.d.ts +460 -0
- package/dist/manifest/schema.d.ts.map +1 -0
- package/dist/manifest/schema.js +187 -0
- package/dist/manifest/schema.js.map +1 -0
- package/dist/manifest/schemas/builder.schema.d.ts +20 -0
- package/dist/manifest/schemas/builder.schema.d.ts.map +1 -0
- package/dist/manifest/schemas/builder.schema.js +2 -0
- package/dist/manifest/schemas/builder.schema.js.map +1 -0
- package/dist/manifest/schemas/config-manifest.schema.d.ts +2 -0
- package/dist/manifest/schemas/config-manifest.schema.d.ts.map +1 -0
- package/dist/manifest/schemas/config-manifest.schema.js +2 -0
- package/dist/manifest/schemas/config-manifest.schema.js.map +1 -0
- package/dist/manifest/schemas/schema.schema.d.ts +83 -0
- package/dist/manifest/schemas/schema.schema.d.ts.map +1 -0
- package/dist/manifest/schemas/schema.schema.js +2 -0
- package/dist/manifest/schemas/schema.schema.js.map +1 -0
- package/dist/manifest/types.d.ts +563 -0
- package/dist/manifest/types.d.ts.map +1 -0
- package/dist/manifest/types.js +9 -0
- package/dist/manifest/types.js.map +1 -0
- package/dist/routing/index.d.ts +29 -0
- package/dist/routing/index.d.ts.map +1 -0
- package/dist/routing/index.js +35 -0
- package/dist/routing/index.js.map +1 -0
- package/dist/routing/merge.d.ts +164 -0
- package/dist/routing/merge.d.ts.map +1 -0
- package/dist/routing/merge.js +460 -0
- package/dist/routing/merge.js.map +1 -0
- package/dist/routing/registry.d.ts +145 -0
- package/dist/routing/registry.d.ts.map +1 -0
- package/dist/routing/registry.js +459 -0
- package/dist/routing/registry.js.map +1 -0
- package/dist/routing/schemas/merge.schema.d.ts +5 -0
- package/dist/routing/schemas/merge.schema.d.ts.map +1 -0
- package/dist/routing/schemas/merge.schema.js +2 -0
- package/dist/routing/schemas/merge.schema.js.map +1 -0
- package/dist/routing/types.d.ts +358 -0
- package/dist/routing/types.d.ts.map +1 -0
- package/dist/routing/types.js +89 -0
- package/dist/routing/types.js.map +1 -0
- package/dist/schema/extend-zod.d.ts +137 -0
- package/dist/schema/extend-zod.d.ts.map +1 -0
- package/dist/schema/extend-zod.js +243 -0
- package/dist/schema/extend-zod.js.map +1 -0
- package/dist/schema/index.d.ts +9 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +10 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/references.d.ts +9 -0
- package/dist/schema/references.d.ts.map +1 -0
- package/dist/schema/references.js +9 -0
- package/dist/schema/references.js.map +1 -0
- package/dist/schema/resolver.d.ts +45 -0
- package/dist/schema/resolver.d.ts.map +1 -0
- package/dist/schema/resolver.js +267 -0
- package/dist/schema/resolver.js.map +1 -0
- package/dist/schema/schemas/extend-zod.schema.d.ts +16 -0
- package/dist/schema/schemas/extend-zod.schema.d.ts.map +1 -0
- package/dist/schema/schemas/extend-zod.schema.js +2 -0
- package/dist/schema/schemas/extend-zod.schema.js.map +1 -0
- package/dist/schema/schemas/references.schema.d.ts +70 -0
- package/dist/schema/schemas/references.schema.d.ts.map +1 -0
- package/dist/schema/schemas/references.schema.js +2 -0
- package/dist/schema/schemas/references.schema.js.map +1 -0
- package/dist/schemas/collection.d.ts +31 -0
- package/dist/schemas/collection.d.ts.map +1 -0
- package/dist/schemas/collection.js +22 -0
- package/dist/schemas/collection.js.map +1 -0
- package/dist/schemas/config-manifest-descriptor.d.ts +495 -0
- package/dist/schemas/config-manifest-descriptor.d.ts.map +1 -0
- package/dist/schemas/config-manifest-descriptor.js +210 -0
- package/dist/schemas/config-manifest-descriptor.js.map +1 -0
- package/dist/schemas/config-registry-state.d.ts +8 -0
- package/dist/schemas/config-registry-state.d.ts.map +1 -0
- package/dist/schemas/config-registry-state.js +6 -0
- package/dist/schemas/config-registry-state.js.map +1 -0
- package/dist/schemas/doctor.schema.d.ts +25 -0
- package/dist/schemas/doctor.schema.d.ts.map +1 -0
- package/dist/schemas/doctor.schema.js +2 -0
- package/dist/schemas/doctor.schema.js.map +1 -0
- package/dist/schemas/index.d.ts +8 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +21 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/server/index.d.ts +5 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +4 -0
- package/dist/server/index.js.map +1 -0
- package/dist/services/config-accessor.d.ts +40 -0
- package/dist/services/config-accessor.d.ts.map +1 -0
- package/dist/services/config-accessor.js +180 -0
- package/dist/services/config-accessor.js.map +1 -0
- package/dist/services/config-storage/index.d.ts +8 -0
- package/dist/services/config-storage/index.d.ts.map +1 -0
- package/dist/services/config-storage/index.js +7 -0
- package/dist/services/config-storage/index.js.map +1 -0
- package/dist/services/config-storage/service.d.ts +63 -0
- package/dist/services/config-storage/service.d.ts.map +1 -0
- package/dist/services/config-storage/service.js +234 -0
- package/dist/services/config-storage/service.js.map +1 -0
- package/dist/services/config.d.ts +3 -0
- package/dist/services/config.d.ts.map +1 -0
- package/dist/services/config.js +30 -0
- package/dist/services/config.js.map +1 -0
- package/dist/services/encryption.d.ts +114 -0
- package/dist/services/encryption.d.ts.map +1 -0
- package/dist/services/encryption.js +232 -0
- package/dist/services/encryption.js.map +1 -0
- package/dist/services/index.d.ts +12 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +16 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/loader/loader.descriptor.d.ts +103 -0
- package/dist/services/loader/loader.descriptor.d.ts.map +1 -0
- package/dist/services/loader/loader.descriptor.js +60 -0
- package/dist/services/loader/loader.descriptor.js.map +1 -0
- package/dist/services/loader/loader.impl.cloud.d.ts +55 -0
- package/dist/services/loader/loader.impl.cloud.d.ts.map +1 -0
- package/dist/services/loader/loader.impl.cloud.js +182 -0
- package/dist/services/loader/loader.impl.cloud.js.map +1 -0
- package/dist/services/loader/loader.impl.consumer.d.ts +48 -0
- package/dist/services/loader/loader.impl.consumer.d.ts.map +1 -0
- package/dist/services/loader/loader.impl.consumer.js +175 -0
- package/dist/services/loader/loader.impl.consumer.js.map +1 -0
- package/dist/services/loader/loader.impl.consumer.local-first.d.ts +59 -0
- package/dist/services/loader/loader.impl.consumer.local-first.d.ts.map +1 -0
- package/dist/services/loader/loader.impl.consumer.local-first.js +347 -0
- package/dist/services/loader/loader.impl.consumer.local-first.js.map +1 -0
- package/dist/services/manifest-utils.d.ts +47 -0
- package/dist/services/manifest-utils.d.ts.map +1 -0
- package/dist/services/manifest-utils.js +105 -0
- package/dist/services/manifest-utils.js.map +1 -0
- package/dist/services/schemas/config-accessor.schema.d.ts +10 -0
- package/dist/services/schemas/config-accessor.schema.d.ts.map +1 -0
- package/dist/services/schemas/config-accessor.schema.js +2 -0
- package/dist/services/schemas/config-accessor.schema.js.map +1 -0
- package/dist/services/schemas/encryption.schema.d.ts +22 -0
- package/dist/services/schemas/encryption.schema.d.ts.map +1 -0
- package/dist/services/schemas/encryption.schema.js +2 -0
- package/dist/services/schemas/encryption.schema.js.map +1 -0
- package/dist/services/schemas/manifest-utils.schema.d.ts +4 -0
- package/dist/services/schemas/manifest-utils.schema.d.ts.map +1 -0
- package/dist/services/schemas/manifest-utils.schema.js +2 -0
- package/dist/services/schemas/manifest-utils.schema.js.map +1 -0
- package/dist/settings/assemble.d.ts +28 -0
- package/dist/settings/assemble.d.ts.map +1 -0
- package/dist/settings/assemble.js +30 -0
- package/dist/settings/assemble.js.map +1 -0
- package/dist/settings/index.d.ts +10 -0
- package/dist/settings/index.d.ts.map +1 -0
- package/dist/settings/index.js +10 -0
- package/dist/settings/index.js.map +1 -0
- package/dist/settings/settings-section.schema.d.ts +49 -0
- package/dist/settings/settings-section.schema.d.ts.map +1 -0
- package/dist/settings/settings-section.schema.js +70 -0
- package/dist/settings/settings-section.schema.js.map +1 -0
- package/dist/storage/adapter.d.ts +11 -0
- package/dist/storage/adapter.d.ts.map +1 -0
- package/dist/storage/adapter.js +8 -0
- package/dist/storage/adapter.js.map +1 -0
- package/dist/storage/index.d.ts +8 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +8 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/schemas.d.ts +257 -0
- package/dist/storage/schemas.d.ts.map +1 -0
- package/dist/storage/schemas.js +179 -0
- package/dist/storage/schemas.js.map +1 -0
- package/dist/storage/types.d.ts +74 -0
- package/dist/storage/types.d.ts.map +1 -0
- package/dist/storage/types.js +7 -0
- package/dist/storage/types.js.map +1 -0
- package/dist/system-constants.d.ts +95 -0
- package/dist/system-constants.d.ts.map +1 -0
- package/dist/system-constants.js +110 -0
- package/dist/system-constants.js.map +1 -0
- package/package.json +417 -0
- package/src/adapters/cli/flags.ts +260 -0
- package/src/adapters/cli/index.ts +24 -0
- package/src/adapters/cli/mappings.ts +43 -0
- package/src/adapters/cli/prompts.ts +70 -0
- package/src/adapters/cli/schemas/flags.schema.ts +8 -0
- package/src/adapters/cli/schemas/mappings.schema.ts +3 -0
- package/src/adapters/cli/schemas/prompts.schema.ts +4 -0
- package/src/adapters/cli/schemas/wizard.schema.ts +21 -0
- package/src/adapters/cli/wizard.ts +106 -0
- package/src/adapters/web/components/ManifestForm.svelte +817 -0
- package/src/browser/index.ts +86 -0
- package/src/cli/settings.descriptor.ts +23 -0
- package/src/cli/types.ts +59 -0
- package/src/client/index.ts +169 -0
- package/src/client/storage.ts +76 -0
- package/src/collection/collection.ts +121 -0
- package/src/collection/index.ts +6 -0
- package/src/common/index.ts +86 -0
- package/src/config.context.descriptor.ts +12 -0
- package/src/config.plugin.ts +214 -0
- package/src/crud/base-types.ts +10 -0
- package/src/crud/index.ts +15 -0
- package/src/crud/schemas/base-types.schema.ts +20 -0
- package/src/crud/schemas/shared.schema.ts +14 -0
- package/src/crud/shared.ts +8 -0
- package/src/crud/types.ts +299 -0
- package/src/docs/environment.docs.descriptor.ts +385 -0
- package/src/docs/manifests.docs.descriptor.ts +505 -0
- package/src/docs/validation.docs.descriptor.ts +443 -0
- package/src/doctor.ts +143 -0
- package/src/env.runtime.ts +49 -0
- package/src/env.ts +91 -0
- package/src/environment/current.ts +108 -0
- package/src/environment/environment.config.descriptor.ts +60 -0
- package/src/environment/environment.config.schema.ts +24 -0
- package/src/environment/environment.local.descriptor.ts +45 -0
- package/src/environment/environment.plugin.ts +31 -0
- package/src/environment/environment.production.descriptor.ts +40 -0
- package/src/environment/environment.staging.descriptor.ts +25 -0
- package/src/environment/index.ts +22 -0
- package/src/environment/kinds/environment.default.ts +57 -0
- package/src/environment/kinds/environment.interface.ts +10 -0
- package/src/environment/kinds/environment.kind.ts +69 -0
- package/src/environment/kinds/environment.schema.ts +57 -0
- package/src/environment/kinds/index.ts +8 -0
- package/src/environment/kinds/schemas/environment.interface.schema.ts +11 -0
- package/src/environment/kinds/schemas/environment.schema.ts +24 -0
- package/src/environment/schemas/current.schema.ts +21 -0
- package/src/environment/schemas/environment.config.schema.ts +3 -0
- package/src/extensions/index.ts +26 -0
- package/src/extensions/registry.ts +179 -0
- package/src/extensions/types.ts +123 -0
- package/src/form/core/field-resolver.ts +380 -0
- package/src/form/core/groups.ts +96 -0
- package/src/form/core/index.ts +41 -0
- package/src/form/core/nested-utils.ts +115 -0
- package/src/form/core/schemas/validation.schema.ts +9 -0
- package/src/form/core/types.ts +115 -0
- package/src/form/core/validation.ts +137 -0
- package/src/form/core/visibility.ts +172 -0
- package/src/form/index.ts +36 -0
- package/src/index.ts +69 -0
- package/src/js-yaml.d.ts +4 -0
- package/src/loader/cli/index.ts +386 -0
- package/src/loader/cli/loaders.ts +153 -0
- package/src/loader/cli/types.ts +181 -0
- package/src/loader/cli/utils.ts +236 -0
- package/src/loader/client.ts +140 -0
- package/src/loader/discovery.ts +291 -0
- package/src/loader/file-loader.ts +262 -0
- package/src/loader/index.server.ts +389 -0
- package/src/loader/index.ts +18 -0
- package/src/loader/merge.ts +366 -0
- package/src/loader/schemas/merge.schema.ts +8 -0
- package/src/loader/schemas/validation.schema.ts +18 -0
- package/src/loader/server.ts +15 -0
- package/src/loader/types.ts +142 -0
- package/src/loader/validation.ts +261 -0
- package/src/manifest/builder.ts +452 -0
- package/src/manifest/config-manifest.ts +482 -0
- package/src/manifest/index.ts +92 -0
- package/src/manifest/schema.ts +249 -0
- package/src/manifest/schemas/builder.schema.ts +33 -0
- package/src/manifest/schemas/config-manifest.schema.ts +1 -0
- package/src/manifest/schemas/schema.schema.ts +99 -0
- package/src/manifest/types.ts +726 -0
- package/src/routing/index.ts +105 -0
- package/src/routing/merge.ts +589 -0
- package/src/routing/registry.ts +595 -0
- package/src/routing/schemas/merge.schema.ts +6 -0
- package/src/routing/types.ts +470 -0
- package/src/schema/extend-zod.ts +289 -0
- package/src/schema/index.ts +44 -0
- package/src/schema/references.ts +21 -0
- package/src/schema/resolver.ts +343 -0
- package/src/schema/schemas/extend-zod.schema.ts +16 -0
- package/src/schema/schemas/references.schema.ts +86 -0
- package/src/schemas/collection.ts +38 -0
- package/src/schemas/config-manifest-descriptor.ts +259 -0
- package/src/schemas/config-registry-state.ts +13 -0
- package/src/schemas/doctor.schema.ts +27 -0
- package/src/schemas/index.ts +53 -0
- package/src/server/index.ts +4 -0
- package/src/services/config-accessor.ts +218 -0
- package/src/services/config-storage/index.ts +8 -0
- package/src/services/config-storage/service.ts +355 -0
- package/src/services/config.ts +37 -0
- package/src/services/encryption.ts +260 -0
- package/src/services/index.ts +34 -0
- package/src/services/loader/loader.descriptor.ts +96 -0
- package/src/services/loader/loader.impl.cloud.ts +214 -0
- package/src/services/loader/loader.impl.consumer.local-first.ts +417 -0
- package/src/services/loader/loader.impl.consumer.ts +213 -0
- package/src/services/manifest-utils.ts +119 -0
- package/src/services/schemas/config-accessor.schema.ts +11 -0
- package/src/services/schemas/encryption.schema.ts +23 -0
- package/src/services/schemas/manifest-utils.schema.ts +4 -0
- package/src/settings/assemble.ts +46 -0
- package/src/settings/index.ts +19 -0
- package/src/settings/settings-section.schema.ts +84 -0
- package/src/storage/adapter.ts +12 -0
- package/src/storage/index.ts +48 -0
- package/src/storage/schemas.ts +215 -0
- package/src/storage/types.ts +88 -0
- package/src/system-constants.ts +121 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
export type ReferenceSource =
|
|
2
|
+
| ConfigReference
|
|
3
|
+
| NestedReference
|
|
4
|
+
| ComputedReference
|
|
5
|
+
| EnumReference;
|
|
6
|
+
|
|
7
|
+
export interface ConfigReference {
|
|
8
|
+
type: 'config';
|
|
9
|
+
path: string;
|
|
10
|
+
valueField?: string;
|
|
11
|
+
labelField?: string;
|
|
12
|
+
descriptionField?: string;
|
|
13
|
+
iconField?: string;
|
|
14
|
+
filter?: string | ((item: unknown) => boolean);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export interface NestedReference {
|
|
18
|
+
type: 'nested';
|
|
19
|
+
parentPath: string;
|
|
20
|
+
parentField: string;
|
|
21
|
+
nestedPath: string;
|
|
22
|
+
valueField?: string;
|
|
23
|
+
labelField?: string;
|
|
24
|
+
descriptionField?: string;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export interface ComputedReference {
|
|
28
|
+
type: 'computed';
|
|
29
|
+
resolver: string;
|
|
30
|
+
dependsOn?: string[];
|
|
31
|
+
cacheDuration?: number;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export interface EnumReference {
|
|
35
|
+
type: 'enum';
|
|
36
|
+
values: Array<{
|
|
37
|
+
value: string;
|
|
38
|
+
label?: string;
|
|
39
|
+
description?: string;
|
|
40
|
+
icon?: string;
|
|
41
|
+
}>;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export interface EmptyStateConfig {
|
|
45
|
+
message: string;
|
|
46
|
+
createAction?: {
|
|
47
|
+
label: string;
|
|
48
|
+
route?: string;
|
|
49
|
+
inline?: boolean;
|
|
50
|
+
manifestId?: string;
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export interface ReferenceMeta {
|
|
55
|
+
source: ReferenceSource;
|
|
56
|
+
as?: 'select' | 'radio' | 'combobox' | 'autocomplete';
|
|
57
|
+
multiple?: boolean;
|
|
58
|
+
emptyState?: EmptyStateConfig;
|
|
59
|
+
placeholder?: string;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export interface ResolvedOption {
|
|
63
|
+
value: string;
|
|
64
|
+
label: string;
|
|
65
|
+
description?: string;
|
|
66
|
+
icon?: string;
|
|
67
|
+
disabled?: boolean;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export interface ResolutionResult {
|
|
71
|
+
options: ResolvedOption[];
|
|
72
|
+
isLoading: boolean;
|
|
73
|
+
error?: string;
|
|
74
|
+
isEmpty: boolean;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export interface ResolutionContext {
|
|
78
|
+
getConfig: <T = unknown>(path: string) => T | undefined;
|
|
79
|
+
formValues: Record<string, unknown>;
|
|
80
|
+
runtimeContext: Record<string, unknown>;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export type ComputedResolverFn = (
|
|
84
|
+
dependencyValues: Record<string, unknown>,
|
|
85
|
+
context: ResolutionContext
|
|
86
|
+
) => Promise<ResolvedOption[]>;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Config Collection Descriptor Schema
|
|
3
|
+
*
|
|
4
|
+
* A config/collection groups related config manifests into a named
|
|
5
|
+
* collection with unified load/subscribe/dispose lifecycle.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import * as z from 'zod/v4';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Descriptor schema for config/collection kind.
|
|
12
|
+
*/
|
|
13
|
+
export const ConfigCollectionDescriptorSchema = z.object({
|
|
14
|
+
kind: z.literal('config/collection'),
|
|
15
|
+
id: z.string().min(1),
|
|
16
|
+
name: z.string().optional(),
|
|
17
|
+
description: z.string().optional(),
|
|
18
|
+
/** Manifest IDs this collection groups */
|
|
19
|
+
manifests: z.array(z.string().min(1)).min(1),
|
|
20
|
+
tags: z.array(z.string()).optional(),
|
|
21
|
+
hardware: z.array(z.string()).optional(),
|
|
22
|
+
enabled: z.boolean().optional()
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
export type ConfigCollectionDescriptor = z.infer<typeof ConfigCollectionDescriptorSchema>;
|
|
26
|
+
|
|
27
|
+
// Collection Runtime Types
|
|
28
|
+
|
|
29
|
+
type ManifestData = Record<string, unknown> | null;
|
|
30
|
+
|
|
31
|
+
export interface CollectionState {
|
|
32
|
+
/** Loaded data keyed by manifest ID */
|
|
33
|
+
data: Record<string, ManifestData>;
|
|
34
|
+
/** Manifest IDs that failed to resolve */
|
|
35
|
+
errors: string[];
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export type CollectionCallback = (state: CollectionState) => void;
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Config Manifest Descriptor Schema
|
|
3
|
+
*
|
|
4
|
+
* Extends StorageManifestDescriptor with config-specific metadata
|
|
5
|
+
* for form rendering, navigation, and UI behavior.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import * as z from 'zod/v4';
|
|
9
|
+
import { StorageManifestDescriptorSchema } from '@vibesdotdev/storage/schemas';
|
|
10
|
+
|
|
11
|
+
// Config-Specific Types
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Configuration tiers determine storage location, visibility, and access patterns
|
|
15
|
+
*/
|
|
16
|
+
export const ConfigTierSchema = z.enum(['system', 'user', 'internal']);
|
|
17
|
+
export type ConfigTier = z.infer<typeof ConfigTierSchema>;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* UI surfaces that can render configuration forms
|
|
21
|
+
*/
|
|
22
|
+
export const ConfigSurfaceSchema = z.enum(['tui', 'cli', 'web', 'bridge']);
|
|
23
|
+
export type ConfigSurface = z.infer<typeof ConfigSurfaceSchema>;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Hardware context for context-aware defaults
|
|
27
|
+
*/
|
|
28
|
+
export const HardwareContextSchema = z.enum(['cloud', 'consumer', 'gpu', 'cpu-only']);
|
|
29
|
+
export type HardwareContext = z.infer<typeof HardwareContextSchema>;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Environment context
|
|
33
|
+
*/
|
|
34
|
+
export const EnvironmentContextSchema = z.enum(['development', 'staging', 'production']);
|
|
35
|
+
export type EnvironmentContext = z.infer<typeof EnvironmentContextSchema>;
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* UI component types for rendering fields
|
|
39
|
+
*/
|
|
40
|
+
export const FieldComponentSchema = z.enum([
|
|
41
|
+
'input',
|
|
42
|
+
'textarea',
|
|
43
|
+
'number',
|
|
44
|
+
'select',
|
|
45
|
+
'multi-select',
|
|
46
|
+
'radio-group',
|
|
47
|
+
'checkbox',
|
|
48
|
+
'switch',
|
|
49
|
+
'slider',
|
|
50
|
+
'color',
|
|
51
|
+
'date',
|
|
52
|
+
'datetime',
|
|
53
|
+
'file',
|
|
54
|
+
'password',
|
|
55
|
+
'secret',
|
|
56
|
+
'json',
|
|
57
|
+
'code',
|
|
58
|
+
'reference',
|
|
59
|
+
'multi-reference',
|
|
60
|
+
'custom',
|
|
61
|
+
'list'
|
|
62
|
+
]);
|
|
63
|
+
export type FieldComponent = z.infer<typeof FieldComponentSchema>;
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Field width in form layout
|
|
67
|
+
*/
|
|
68
|
+
export const FieldWidthSchema = z.enum(['full', 'half', 'third', 'quarter']);
|
|
69
|
+
export type FieldWidth = z.infer<typeof FieldWidthSchema>;
|
|
70
|
+
|
|
71
|
+
// Field Metadata Schemas
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* UI configuration for a field
|
|
75
|
+
*/
|
|
76
|
+
export const FieldUISchema = z.object({
|
|
77
|
+
label: z.string(),
|
|
78
|
+
description: z.string().optional(),
|
|
79
|
+
helpText: z.string().optional(),
|
|
80
|
+
placeholder: z.string().optional(),
|
|
81
|
+
icon: z.string().optional(),
|
|
82
|
+
component: FieldComponentSchema.optional(),
|
|
83
|
+
customComponent: z.string().optional(),
|
|
84
|
+
order: z.number().optional(),
|
|
85
|
+
group: z.string().optional(),
|
|
86
|
+
width: FieldWidthSchema.optional(),
|
|
87
|
+
hideLabel: z.boolean().optional(),
|
|
88
|
+
className: z.string().optional()
|
|
89
|
+
});
|
|
90
|
+
export type FieldUI = z.infer<typeof FieldUISchema>;
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Field option for enum/select fields
|
|
94
|
+
*/
|
|
95
|
+
export const FieldOptionSchema = z.object({
|
|
96
|
+
value: z.unknown(),
|
|
97
|
+
label: z.string(),
|
|
98
|
+
description: z.string().optional(),
|
|
99
|
+
icon: z.string().optional()
|
|
100
|
+
// disabledWhen and hiddenWhen use ConfigRule which is complex - keep as unknown
|
|
101
|
+
});
|
|
102
|
+
export type FieldOption = z.infer<typeof FieldOptionSchema>;
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Reference field configuration
|
|
106
|
+
*/
|
|
107
|
+
export const ReferenceConfigSchema = z.object({
|
|
108
|
+
entity: z.string(),
|
|
109
|
+
valueField: z.string().default('id'),
|
|
110
|
+
labelField: z.string().default('name'),
|
|
111
|
+
descriptionField: z.string().optional(),
|
|
112
|
+
endpoint: z.string().optional(),
|
|
113
|
+
filter: z.record(z.string(), z.unknown()).optional(),
|
|
114
|
+
dynamicFilter: z.record(z.string(), z.string()).optional(),
|
|
115
|
+
allowCreate: z.boolean().optional(),
|
|
116
|
+
orderable: z.boolean().optional(),
|
|
117
|
+
maxItems: z.number().optional(),
|
|
118
|
+
minItems: z.number().optional(),
|
|
119
|
+
customRenderer: z.string().optional(),
|
|
120
|
+
customRendererProps: z.record(z.string(), z.unknown()).optional()
|
|
121
|
+
});
|
|
122
|
+
export type ReferenceConfig = z.infer<typeof ReferenceConfigSchema>;
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Field access control
|
|
126
|
+
*/
|
|
127
|
+
export const FieldAccessSchema = z.object({
|
|
128
|
+
isPublic: z.boolean().optional(),
|
|
129
|
+
isEditable: z.boolean().optional(),
|
|
130
|
+
requiredRole: z.string().optional(),
|
|
131
|
+
surfaces: z.array(ConfigSurfaceSchema).optional()
|
|
132
|
+
});
|
|
133
|
+
export type FieldAccess = z.infer<typeof FieldAccessSchema>;
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Complete field metadata
|
|
137
|
+
*/
|
|
138
|
+
export const ConfigFieldMetaSchema = z.object({
|
|
139
|
+
ui: FieldUISchema,
|
|
140
|
+
// Rules are complex with functions - keep as unknown for descriptor
|
|
141
|
+
rules: z.unknown().optional(),
|
|
142
|
+
// Defaults can contain resolvers - keep as unknown
|
|
143
|
+
defaults: z.unknown().optional(),
|
|
144
|
+
options: z.array(FieldOptionSchema).optional(),
|
|
145
|
+
reference: ReferenceConfigSchema.optional(),
|
|
146
|
+
access: FieldAccessSchema.optional(),
|
|
147
|
+
dependsOn: z.array(z.string()).optional(),
|
|
148
|
+
tags: z.array(z.string()).optional()
|
|
149
|
+
});
|
|
150
|
+
export type ConfigFieldMeta = z.infer<typeof ConfigFieldMetaSchema>;
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* Field group for UI organization
|
|
154
|
+
*/
|
|
155
|
+
export const ConfigFieldGroupSchema = z.object({
|
|
156
|
+
id: z.string(),
|
|
157
|
+
label: z.string(),
|
|
158
|
+
description: z.string().optional(),
|
|
159
|
+
icon: z.string().optional(),
|
|
160
|
+
order: z.number().optional(),
|
|
161
|
+
collapsible: z.boolean().optional(),
|
|
162
|
+
defaultCollapsed: z.boolean().optional()
|
|
163
|
+
// visibleWhen uses ConfigRule - omit for descriptor
|
|
164
|
+
});
|
|
165
|
+
export type ConfigFieldGroup = z.infer<typeof ConfigFieldGroupSchema>;
|
|
166
|
+
|
|
167
|
+
// Navigation Schema
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Navigation configuration for a manifest
|
|
171
|
+
*/
|
|
172
|
+
export const ManifestNavigationSchema = z.object({
|
|
173
|
+
page: z.string().nullable(),
|
|
174
|
+
section: z.string().optional(),
|
|
175
|
+
order: z.number().default(100),
|
|
176
|
+
showInGlobalSettings: z.boolean().optional(),
|
|
177
|
+
parent: z.string().optional(),
|
|
178
|
+
label: z.string().optional(),
|
|
179
|
+
icon: z.string().optional(),
|
|
180
|
+
tags: z.array(z.string()).optional(),
|
|
181
|
+
params: z.record(z.string(), z.string()).optional()
|
|
182
|
+
});
|
|
183
|
+
export type ManifestNavigation = z.infer<typeof ManifestNavigationSchema>;
|
|
184
|
+
|
|
185
|
+
// Context Constraints Schema
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* Constraints on when a manifest applies
|
|
189
|
+
*/
|
|
190
|
+
export const ManifestContextSchema = z.object({
|
|
191
|
+
hardware: z.array(HardwareContextSchema).optional(),
|
|
192
|
+
environment: z.array(EnvironmentContextSchema).optional(),
|
|
193
|
+
surfaces: z.array(ConfigSurfaceSchema).optional(),
|
|
194
|
+
requiredFeatures: z.array(z.string()).optional()
|
|
195
|
+
});
|
|
196
|
+
export type ManifestContext = z.infer<typeof ManifestContextSchema>;
|
|
197
|
+
|
|
198
|
+
// Config Manifest Descriptor
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* Config manifest descriptor extends storage manifest with form metadata.
|
|
202
|
+
*
|
|
203
|
+
* A config manifest is a storage manifest that:
|
|
204
|
+
* - Has form field metadata for UI rendering
|
|
205
|
+
* - Has navigation configuration for placement in settings
|
|
206
|
+
* - Has context constraints for conditional availability
|
|
207
|
+
* - Has a configuration tier (system, user, internal)
|
|
208
|
+
*/
|
|
209
|
+
export const ConfigManifestDescriptorSchema = StorageManifestDescriptorSchema.extend({
|
|
210
|
+
kind: z.literal('config/manifest'),
|
|
211
|
+
|
|
212
|
+
// Classification
|
|
213
|
+
|
|
214
|
+
/** Configuration tier */
|
|
215
|
+
tier: ConfigTierSchema,
|
|
216
|
+
/** Category within the tier (for organization) */
|
|
217
|
+
category: z.string().optional(),
|
|
218
|
+
|
|
219
|
+
// Field Metadata
|
|
220
|
+
|
|
221
|
+
/** Field metadata keyed by field path */
|
|
222
|
+
fields: z.record(z.string(), ConfigFieldMetaSchema),
|
|
223
|
+
/** Field groups for UI organization */
|
|
224
|
+
groups: z.array(ConfigFieldGroupSchema).optional(),
|
|
225
|
+
|
|
226
|
+
// Navigation
|
|
227
|
+
|
|
228
|
+
/** Navigation and UI placement configuration */
|
|
229
|
+
navigation: ManifestNavigationSchema.optional(),
|
|
230
|
+
|
|
231
|
+
// Config Files
|
|
232
|
+
|
|
233
|
+
/** Optional config file location(s) for loading config from project files */
|
|
234
|
+
configFiles: z
|
|
235
|
+
.union([
|
|
236
|
+
z.object({ pattern: z.string() }),
|
|
237
|
+
z.array(z.object({ pattern: z.string() }))
|
|
238
|
+
])
|
|
239
|
+
.optional(),
|
|
240
|
+
|
|
241
|
+
// Context
|
|
242
|
+
|
|
243
|
+
/** Context constraints for when this manifest applies */
|
|
244
|
+
context: ManifestContextSchema.optional(),
|
|
245
|
+
|
|
246
|
+
// Display
|
|
247
|
+
|
|
248
|
+
/** Icon (emoji or icon name) */
|
|
249
|
+
icon: z.string().optional()
|
|
250
|
+
});
|
|
251
|
+
|
|
252
|
+
export type ConfigManifestDescriptor = z.infer<typeof ConfigManifestDescriptorSchema>;
|
|
253
|
+
|
|
254
|
+
/**
|
|
255
|
+
* Type guard for config manifest descriptor
|
|
256
|
+
*/
|
|
257
|
+
export function isConfigManifestDescriptor(value: unknown): value is ConfigManifestDescriptor {
|
|
258
|
+
return ConfigManifestDescriptorSchema.safeParse(value).success;
|
|
259
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ConfigManifestDescriptor } from '../schemas/config-manifest-descriptor.ts';
|
|
2
|
+
|
|
3
|
+
export interface ConfigRegistryState {
|
|
4
|
+
manifests: ConfigManifestDescriptor[];
|
|
5
|
+
loaded: boolean;
|
|
6
|
+
error: string | null;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export const defaultConfigRegistryState: ConfigRegistryState = {
|
|
10
|
+
manifests: [],
|
|
11
|
+
loaded: false,
|
|
12
|
+
error: null
|
|
13
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export type DiagnosticSeverity = 'error' | 'warning' | 'info';
|
|
2
|
+
|
|
3
|
+
export interface DiagnosticIssue {
|
|
4
|
+
path: string;
|
|
5
|
+
message: string;
|
|
6
|
+
severity: DiagnosticSeverity;
|
|
7
|
+
code?: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export interface DetailedDiagnostic {
|
|
11
|
+
ready: boolean;
|
|
12
|
+
issues: DiagnosticIssue[];
|
|
13
|
+
summary: {
|
|
14
|
+
errors: number;
|
|
15
|
+
warnings: number;
|
|
16
|
+
info: number;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface DiagnoseConfigOptions {
|
|
21
|
+
checkDeprecated?: boolean;
|
|
22
|
+
checkEndpoints?: boolean;
|
|
23
|
+
customValidators?: Array<{
|
|
24
|
+
path: string;
|
|
25
|
+
fn: (value: unknown) => string | null;
|
|
26
|
+
}>;
|
|
27
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Config Module Schemas
|
|
3
|
+
*
|
|
4
|
+
* Runtime-compatible schemas for config manifest descriptors.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
export {
|
|
8
|
+
// Main descriptor
|
|
9
|
+
ConfigManifestDescriptorSchema,
|
|
10
|
+
type ConfigManifestDescriptor,
|
|
11
|
+
isConfigManifestDescriptor,
|
|
12
|
+
|
|
13
|
+
// Classification
|
|
14
|
+
ConfigTierSchema,
|
|
15
|
+
type ConfigTier,
|
|
16
|
+
ConfigSurfaceSchema,
|
|
17
|
+
type ConfigSurface,
|
|
18
|
+
HardwareContextSchema,
|
|
19
|
+
type HardwareContext,
|
|
20
|
+
EnvironmentContextSchema,
|
|
21
|
+
type EnvironmentContext,
|
|
22
|
+
|
|
23
|
+
// Field components
|
|
24
|
+
FieldComponentSchema,
|
|
25
|
+
type FieldComponent,
|
|
26
|
+
FieldWidthSchema,
|
|
27
|
+
type FieldWidth,
|
|
28
|
+
|
|
29
|
+
// Field metadata
|
|
30
|
+
FieldUISchema,
|
|
31
|
+
type FieldUI,
|
|
32
|
+
FieldOptionSchema,
|
|
33
|
+
type FieldOption,
|
|
34
|
+
ReferenceConfigSchema,
|
|
35
|
+
type ReferenceConfig,
|
|
36
|
+
FieldAccessSchema,
|
|
37
|
+
type FieldAccess,
|
|
38
|
+
ConfigFieldMetaSchema,
|
|
39
|
+
type ConfigFieldMeta,
|
|
40
|
+
ConfigFieldGroupSchema,
|
|
41
|
+
type ConfigFieldGroup,
|
|
42
|
+
|
|
43
|
+
// Navigation
|
|
44
|
+
ManifestNavigationSchema,
|
|
45
|
+
type ManifestNavigation,
|
|
46
|
+
|
|
47
|
+
// Context
|
|
48
|
+
ManifestContextSchema,
|
|
49
|
+
type ManifestContext
|
|
50
|
+
} from './config-manifest-descriptor';
|
|
51
|
+
|
|
52
|
+
// Config Collection
|
|
53
|
+
export { ConfigCollectionDescriptorSchema, type ConfigCollectionDescriptor } from './collection';
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Config Accessor
|
|
3
|
+
*
|
|
4
|
+
* Provides a simple accessor interface for config values that works with
|
|
5
|
+
* the runtime and unified loader. Replaces the legacy registry accessor.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* const accessor = await createConfigAccessor(manifest);
|
|
10
|
+
*
|
|
11
|
+
* // Get current value
|
|
12
|
+
* const value = accessor.get();
|
|
13
|
+
*
|
|
14
|
+
* // Set a field
|
|
15
|
+
* accessor.setField('fieldName', newValue);
|
|
16
|
+
*
|
|
17
|
+
* // Save changes
|
|
18
|
+
* await accessor.save();
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
import type { ConfigManifest, ConfigContext } from '../manifest/types.ts';
|
|
23
|
+
import { loadConfigFromManifest } from '../loader/index.ts';
|
|
24
|
+
import { getVibesRuntime } from '@vibesdotdev/runtime';
|
|
25
|
+
import type { ConfigLoaderInterface } from './loader/loader.descriptor.ts';
|
|
26
|
+
|
|
27
|
+
import type { ConfigAccessor } from './schemas/config-accessor.schema.ts';
|
|
28
|
+
|
|
29
|
+
export type { ConfigAccessor } from './schemas/config-accessor.schema.ts';
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Internal state for a config accessor
|
|
33
|
+
*/
|
|
34
|
+
interface AccessorState<T> {
|
|
35
|
+
values: T | null;
|
|
36
|
+
dirty: boolean;
|
|
37
|
+
subscribers: Set<(values: T | null) => void>;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Create a config accessor for a manifest
|
|
42
|
+
*
|
|
43
|
+
* @param manifest - The config manifest
|
|
44
|
+
* @param context - Optional config context for initialization
|
|
45
|
+
* @returns A promise that resolves to the accessor
|
|
46
|
+
*/
|
|
47
|
+
export async function createConfigAccessor<T extends Record<string, unknown>>(
|
|
48
|
+
manifest: ConfigManifest<any>,
|
|
49
|
+
_context?: Partial<ConfigContext>
|
|
50
|
+
): Promise<ConfigAccessor<T>> {
|
|
51
|
+
const state: AccessorState<T> = {
|
|
52
|
+
values: null,
|
|
53
|
+
dirty: false,
|
|
54
|
+
subscribers: new Set()
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
// Load initial values
|
|
58
|
+
const result = await loadConfigFromManifest<T>({
|
|
59
|
+
manifest,
|
|
60
|
+
includeStorage: true,
|
|
61
|
+
includeDefaults: true
|
|
62
|
+
});
|
|
63
|
+
state.values = result.data;
|
|
64
|
+
|
|
65
|
+
const notifySubscribers = () => {
|
|
66
|
+
for (const callback of state.subscribers) {
|
|
67
|
+
callback(state.values);
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
return {
|
|
72
|
+
get(): T | null {
|
|
73
|
+
return state.values;
|
|
74
|
+
},
|
|
75
|
+
|
|
76
|
+
setField<K extends keyof T>(field: K, value: T[K]): void {
|
|
77
|
+
if (state.values === null) {
|
|
78
|
+
state.values = { [field]: value } as T;
|
|
79
|
+
} else {
|
|
80
|
+
state.values = { ...state.values, [field]: value };
|
|
81
|
+
}
|
|
82
|
+
state.dirty = true;
|
|
83
|
+
notifySubscribers();
|
|
84
|
+
},
|
|
85
|
+
|
|
86
|
+
setFields(fields: Partial<T>): void {
|
|
87
|
+
if (state.values === null) {
|
|
88
|
+
state.values = fields as T;
|
|
89
|
+
} else {
|
|
90
|
+
state.values = { ...state.values, ...fields };
|
|
91
|
+
}
|
|
92
|
+
state.dirty = true;
|
|
93
|
+
notifySubscribers();
|
|
94
|
+
},
|
|
95
|
+
|
|
96
|
+
subscribe(callback: (values: T | null) => void): () => void {
|
|
97
|
+
state.subscribers.add(callback);
|
|
98
|
+
return () => {
|
|
99
|
+
state.subscribers.delete(callback);
|
|
100
|
+
};
|
|
101
|
+
},
|
|
102
|
+
|
|
103
|
+
async save(): Promise<void> {
|
|
104
|
+
if (!state.values || !state.dirty) return;
|
|
105
|
+
|
|
106
|
+
const loader = (await getVibesRuntime()
|
|
107
|
+
.query('config/loader')
|
|
108
|
+
.resolve()) as ConfigLoaderInterface | undefined;
|
|
109
|
+
if (!loader) throw new Error('No config/loader registered');
|
|
110
|
+
await loader.save(manifest, state.values);
|
|
111
|
+
state.dirty = false;
|
|
112
|
+
},
|
|
113
|
+
|
|
114
|
+
async reload(): Promise<void> {
|
|
115
|
+
const result = await loadConfigFromManifest<T>({
|
|
116
|
+
manifest,
|
|
117
|
+
includeStorage: true,
|
|
118
|
+
includeDefaults: true
|
|
119
|
+
});
|
|
120
|
+
state.values = result.data;
|
|
121
|
+
state.dirty = false;
|
|
122
|
+
notifySubscribers();
|
|
123
|
+
},
|
|
124
|
+
|
|
125
|
+
isDirty(): boolean {
|
|
126
|
+
return state.dirty;
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Synchronous config accessor for cases where values are already loaded
|
|
133
|
+
* Useful for UI components that need immediate access
|
|
134
|
+
*/
|
|
135
|
+
export function createSyncConfigAccessor<T extends Record<string, unknown>>(
|
|
136
|
+
manifest: ConfigManifest<any>,
|
|
137
|
+
initialValues: T | null = null
|
|
138
|
+
): ConfigAccessor<T> & { setValue: (values: T) => void } {
|
|
139
|
+
const state: AccessorState<T> = {
|
|
140
|
+
values: initialValues,
|
|
141
|
+
dirty: false,
|
|
142
|
+
subscribers: new Set()
|
|
143
|
+
};
|
|
144
|
+
|
|
145
|
+
const notifySubscribers = () => {
|
|
146
|
+
for (const callback of state.subscribers) {
|
|
147
|
+
callback(state.values);
|
|
148
|
+
}
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
return {
|
|
152
|
+
get(): T | null {
|
|
153
|
+
return state.values;
|
|
154
|
+
},
|
|
155
|
+
|
|
156
|
+
setValue(values: T): void {
|
|
157
|
+
state.values = values;
|
|
158
|
+
notifySubscribers();
|
|
159
|
+
},
|
|
160
|
+
|
|
161
|
+
setField<K extends keyof T>(field: K, value: T[K]): void {
|
|
162
|
+
if (state.values === null) {
|
|
163
|
+
state.values = { [field]: value } as T;
|
|
164
|
+
} else {
|
|
165
|
+
state.values = { ...state.values, [field]: value };
|
|
166
|
+
}
|
|
167
|
+
state.dirty = true;
|
|
168
|
+
notifySubscribers();
|
|
169
|
+
},
|
|
170
|
+
|
|
171
|
+
setFields(fields: Partial<T>): void {
|
|
172
|
+
if (state.values === null) {
|
|
173
|
+
state.values = fields as T;
|
|
174
|
+
} else {
|
|
175
|
+
state.values = { ...state.values, ...fields };
|
|
176
|
+
}
|
|
177
|
+
state.dirty = true;
|
|
178
|
+
notifySubscribers();
|
|
179
|
+
},
|
|
180
|
+
|
|
181
|
+
subscribe(callback: (values: T | null) => void): () => void {
|
|
182
|
+
state.subscribers.add(callback);
|
|
183
|
+
callback(state.values);
|
|
184
|
+
return () => {
|
|
185
|
+
state.subscribers.delete(callback);
|
|
186
|
+
};
|
|
187
|
+
},
|
|
188
|
+
|
|
189
|
+
async save(): Promise<void> {
|
|
190
|
+
if (!state.values || !state.dirty) return;
|
|
191
|
+
|
|
192
|
+
const loader = (await getVibesRuntime()
|
|
193
|
+
.query('config/loader')
|
|
194
|
+
.resolve()) as ConfigLoaderInterface | undefined;
|
|
195
|
+
if (!loader) throw new Error('No config/loader registered');
|
|
196
|
+
await loader.save(manifest, state.values);
|
|
197
|
+
state.dirty = false;
|
|
198
|
+
},
|
|
199
|
+
|
|
200
|
+
async reload(): Promise<void> {
|
|
201
|
+
const result = await loadConfigFromManifest<T>({
|
|
202
|
+
manifest,
|
|
203
|
+
includeStorage: true,
|
|
204
|
+
includeDefaults: true
|
|
205
|
+
});
|
|
206
|
+
state.values = result.data;
|
|
207
|
+
state.dirty = false;
|
|
208
|
+
notifySubscribers();
|
|
209
|
+
},
|
|
210
|
+
|
|
211
|
+
isDirty(): boolean {
|
|
212
|
+
return state.dirty;
|
|
213
|
+
}
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
// Re-export the ConfigAccessor type for convenience
|
|
218
|
+
export type { ConfigAccessor as ConfigAccessorInterface };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Config Storage Service
|
|
3
|
+
*
|
|
4
|
+
* Runtime-resolved storage adapter for configuration storage.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
export { ConfigStorageService, getConfigStorageService, resetConfigStorageService } from './service.ts';
|
|
8
|
+
export type { CredentialsInput, ConfigDocumentInput, ConfigScope } from './service.ts';
|