@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,214 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Config Plugin
|
|
3
|
+
*
|
|
4
|
+
* Registers config/manifest kind with the runtime.
|
|
5
|
+
* This is the entry point for the config module's runtime integration.
|
|
6
|
+
*
|
|
7
|
+
* The config/manifest kind extends storage/manifest with:
|
|
8
|
+
* - Form field metadata for UI rendering
|
|
9
|
+
* - Navigation configuration for settings placement
|
|
10
|
+
* - Context constraints for conditional availability
|
|
11
|
+
* - Configuration tiers (system, user, internal)
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import { createRuntimePlugin, loader } from '@vibesdotdev/runtime';
|
|
15
|
+
import { createRuntimeImplementation } from '@vibesdotdev/runtime/factory/implementation';
|
|
16
|
+
import {
|
|
17
|
+
ConfigManifestDescriptorSchema,
|
|
18
|
+
type ConfigManifestDescriptor
|
|
19
|
+
} from './schemas/config-manifest-descriptor';
|
|
20
|
+
import { ConfigManifest } from './manifest/config-manifest';
|
|
21
|
+
import type { HardwareContext } from './manifest/types';
|
|
22
|
+
import {
|
|
23
|
+
ConfigCollectionDescriptorSchema,
|
|
24
|
+
type ConfigCollectionDescriptor
|
|
25
|
+
} from './schemas/collection';
|
|
26
|
+
import { ConfigCollection } from './collection/collection';
|
|
27
|
+
import { SettingsSectionDescriptorSchema } from './settings/settings-section.schema';
|
|
28
|
+
import configLoaderDescriptor, {
|
|
29
|
+
type ConfigLoaderInterface,
|
|
30
|
+
type LoadResult,
|
|
31
|
+
type SaveResult
|
|
32
|
+
} from './services/loader/loader.descriptor';
|
|
33
|
+
|
|
34
|
+
// Config loader kind definition
|
|
35
|
+
const configLoaderKind = {
|
|
36
|
+
id: 'config/loader',
|
|
37
|
+
descriptorSchema: configLoaderDescriptor.schemas.input,
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Default implementation selection:
|
|
41
|
+
* - consumer + { storage: 'local' } → LocalConfigLoader
|
|
42
|
+
* - consumer + { storage: 'local-first' } → LocalFirstConfigLoader (sync)
|
|
43
|
+
* - cloud + { storage: 'cloud' } → CloudConfigLoader
|
|
44
|
+
*/
|
|
45
|
+
resolve: (_candidates: unknown[], scope: { hardware: string; qualifiers?: Record<string, unknown> }) => {
|
|
46
|
+
// Implementation selection is handled by runtime based on scope constraints
|
|
47
|
+
// Each implementation declares its scope, runtime picks the best match
|
|
48
|
+
return undefined; // Let runtime use implementation registration
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
// Type-safe kind definition
|
|
53
|
+
const configManifestKind = {
|
|
54
|
+
id: 'config/manifest',
|
|
55
|
+
descriptorSchema: ConfigManifestDescriptorSchema,
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Default implementation: ConfigManifest
|
|
59
|
+
*
|
|
60
|
+
* ConfigManifest extends StorageManifest with:
|
|
61
|
+
* - Form field metadata
|
|
62
|
+
* - Context-aware defaults
|
|
63
|
+
* - Visibility rules
|
|
64
|
+
* - Navigation configuration
|
|
65
|
+
*/
|
|
66
|
+
defaultImplementation: ConfigManifest as new (
|
|
67
|
+
descriptor: ConfigManifestDescriptor
|
|
68
|
+
) => ConfigManifest<unknown>,
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Resolution strategy: Match by tier and context constraints.
|
|
72
|
+
*
|
|
73
|
+
* Config manifests are typically looked up by ID, but when
|
|
74
|
+
* querying by tier or navigation, we filter by context.
|
|
75
|
+
*/
|
|
76
|
+
resolve: (candidates: ConfigManifestDescriptor[], scope: { hardware: string }) => {
|
|
77
|
+
// Filter to candidates matching hardware (type-safe cast to HardwareContext)
|
|
78
|
+
const hardwareContext = scope.hardware as HardwareContext;
|
|
79
|
+
const matching = candidates.filter((d: ConfigManifestDescriptor) => {
|
|
80
|
+
// Check hardware constraint
|
|
81
|
+
if (d.context?.hardware && !d.context.hardware.includes(hardwareContext)) {
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
// Check enabled
|
|
85
|
+
if (d.enabled === false) {
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
return true;
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
if (matching.length === 0) return undefined;
|
|
92
|
+
|
|
93
|
+
// Return first match (typically looked up by ID anyway)
|
|
94
|
+
return matching[0];
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Config plugin - registers config/manifest kind with the runtime.
|
|
100
|
+
*
|
|
101
|
+
* Kinds registered:
|
|
102
|
+
* - `config/manifest` - User-editable configuration with form metadata
|
|
103
|
+
*
|
|
104
|
+
* Dependencies:
|
|
105
|
+
* - Requires storage plugin for adapter resolution
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
* ```ts
|
|
109
|
+
* import { getVibesRuntime } from '@vibesdotdev/runtime';
|
|
110
|
+
* import { storagePlugin } from '@vibesdotdev/storage';
|
|
111
|
+
* import configPlugin from 'config.plugin';
|
|
112
|
+
*
|
|
113
|
+
* const runtime = getVibesRuntime();
|
|
114
|
+
*
|
|
115
|
+
* // Register storage first (config depends on it)
|
|
116
|
+
* await runtime.registerPlugin(storagePlugin);
|
|
117
|
+
* await runtime.registerPlugin(configPlugin);
|
|
118
|
+
*
|
|
119
|
+
* // Now you can query config manifests
|
|
120
|
+
* const aiConfig = await runtime.query('config/manifest')
|
|
121
|
+
* .filter(d => d.id === 'ai')
|
|
122
|
+
* .resolve();
|
|
123
|
+
*
|
|
124
|
+
* const config = await aiConfig.loadWithDefaults(ctx);
|
|
125
|
+
* ```
|
|
126
|
+
*/
|
|
127
|
+
// Config collection kind definition
|
|
128
|
+
const configCollectionKind = {
|
|
129
|
+
id: 'config/collection',
|
|
130
|
+
descriptorSchema: ConfigCollectionDescriptorSchema,
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Default implementation: ConfigCollection
|
|
134
|
+
*
|
|
135
|
+
* ConfigCollection groups related config manifests and provides
|
|
136
|
+
* unified load/subscribe/dispose lifecycle.
|
|
137
|
+
*/
|
|
138
|
+
defaultImplementation: ConfigCollection as new (
|
|
139
|
+
descriptor: ConfigCollectionDescriptor,
|
|
140
|
+
...args: unknown[]
|
|
141
|
+
) => ConfigCollection
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Settings section kind — pure-data contribution.
|
|
146
|
+
*
|
|
147
|
+
* Each owning module registers a `settings/section` descriptor naming its
|
|
148
|
+
* `config/manifest` IDs. Surfaces assemble the global Settings UI by
|
|
149
|
+
* concatenating every registered section, sorted by `order`. Config itself
|
|
150
|
+
* does not enumerate which sections exist.
|
|
151
|
+
*
|
|
152
|
+
* See `./settings/assemble.ts` for `assembleSettingsSections(runtime)`.
|
|
153
|
+
*/
|
|
154
|
+
const settingsSectionKind = {
|
|
155
|
+
id: 'settings/section',
|
|
156
|
+
descriptorSchema: SettingsSectionDescriptorSchema
|
|
157
|
+
// No defaultImplementation — descriptors are the contribution.
|
|
158
|
+
// No resolve override — runtime returns all registered candidates.
|
|
159
|
+
};
|
|
160
|
+
|
|
161
|
+
import type { AnyRuntimeKindDescriptor } from '@vibesdotdev/runtime';
|
|
162
|
+
|
|
163
|
+
// CLI command descriptors
|
|
164
|
+
import settingsDescriptor from './cli/settings.descriptor';
|
|
165
|
+
import configContextDescriptor from './config.context.descriptor';
|
|
166
|
+
|
|
167
|
+
// Docs
|
|
168
|
+
import manifestsDescriptor from './docs/manifests.docs.descriptor';
|
|
169
|
+
import environmentDescriptor from './docs/environment.docs.descriptor';
|
|
170
|
+
import validationDescriptor from './docs/validation.docs.descriptor';
|
|
171
|
+
|
|
172
|
+
export default createRuntimePlugin({
|
|
173
|
+
id: 'config',
|
|
174
|
+
name: 'Config Module',
|
|
175
|
+
description:
|
|
176
|
+
'User-editable configuration with form metadata, navigation, and context-aware defaults',
|
|
177
|
+
|
|
178
|
+
// Config depends on storage for adapter resolution. TUI integrations are
|
|
179
|
+
// activated after discovery so they do not depend on bootstrap order.
|
|
180
|
+
dependencies: ['storage'],
|
|
181
|
+
|
|
182
|
+
kinds: [
|
|
183
|
+
configLoaderKind,
|
|
184
|
+
configManifestKind,
|
|
185
|
+
configCollectionKind,
|
|
186
|
+
settingsSectionKind
|
|
187
|
+
] as readonly AnyRuntimeKindDescriptor[],
|
|
188
|
+
|
|
189
|
+
descriptors: [configLoaderDescriptor, settingsDescriptor, configContextDescriptor, manifestsDescriptor, environmentDescriptor, validationDescriptor],
|
|
190
|
+
|
|
191
|
+
loaders: [
|
|
192
|
+
// Config loader implementations - selected by runtime based on scope
|
|
193
|
+
loader(
|
|
194
|
+
'config.loader.local',
|
|
195
|
+
{ kind: 'config/loader', scope: 'consumer' },
|
|
196
|
+
() => import('./services/loader/loader.impl.consumer.js')
|
|
197
|
+
),
|
|
198
|
+
loader(
|
|
199
|
+
'config.loader.local-first',
|
|
200
|
+
{ kind: 'config/loader', scope: 'consumer' },
|
|
201
|
+
() => import('./services/loader/loader.impl.consumer.local-first.js')
|
|
202
|
+
),
|
|
203
|
+
loader(
|
|
204
|
+
'config.loader.cloud',
|
|
205
|
+
{ kind: 'config/loader', scope: 'cloud' },
|
|
206
|
+
() => import('./services/loader/loader.impl.cloud.js')
|
|
207
|
+
)
|
|
208
|
+
],
|
|
209
|
+
|
|
210
|
+
onRegister: async (_runtime) => {
|
|
211
|
+
// TUI apps (config settings, registry) are registered by
|
|
212
|
+
// @vibesdotdev/plugins-tui so they do not leak JSX into non-TUI consumers.
|
|
213
|
+
}
|
|
214
|
+
});
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Leaf-level CRUD base types.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from `./types.ts` so other type modules (extensions, routing)
|
|
5
|
+
* can reference `BaseRecord`, `CRUDViewMode`, and `FormStep` without
|
|
6
|
+
* cycling through the full crud/types module that itself imports those
|
|
7
|
+
* sibling type modules.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
export type { CRUDViewMode, BaseRecord, FormStep } from './schemas/base-types.schema.ts';
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type { BaseRecord, CRUDViewMode, FormStep } from './base-types.ts';
|
|
2
|
+
export type {
|
|
3
|
+
ListColumn,
|
|
4
|
+
ListViewConfig,
|
|
5
|
+
ListAction,
|
|
6
|
+
FormViewConfig,
|
|
7
|
+
DetailViewConfig,
|
|
8
|
+
DetailSection,
|
|
9
|
+
DeleteConfig,
|
|
10
|
+
DetectionConfig,
|
|
11
|
+
CRUDConfig,
|
|
12
|
+
RecordManifest,
|
|
13
|
+
CRUDPageProps
|
|
14
|
+
} from './types.ts';
|
|
15
|
+
export { isRecordManifest, hasNestedRoutings } from './types.ts';
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export type CRUDViewMode = 'list' | 'create' | 'edit' | 'view' | 'delete';
|
|
2
|
+
|
|
3
|
+
export interface BaseRecord {
|
|
4
|
+
id: string;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export interface FormStep {
|
|
8
|
+
id: string;
|
|
9
|
+
title: string;
|
|
10
|
+
description?: string;
|
|
11
|
+
icon?: string;
|
|
12
|
+
fields: string[];
|
|
13
|
+
validate?: 'fields' | 'custom' | 'none';
|
|
14
|
+
optional?: boolean;
|
|
15
|
+
visibleWhen?: {
|
|
16
|
+
field: string;
|
|
17
|
+
operator: 'equals' | 'notEquals' | 'in' | 'notIn' | 'exists' | 'isEmpty';
|
|
18
|
+
value?: unknown;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface BaseRecord {
|
|
2
|
+
id: string;
|
|
3
|
+
createdAt?: Date | string;
|
|
4
|
+
updatedAt?: Date | string;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export type CRUDViewMode = 'list' | 'create' | 'edit' | 'detail' | 'delete';
|
|
8
|
+
|
|
9
|
+
export interface FormStep {
|
|
10
|
+
id: string;
|
|
11
|
+
title: string;
|
|
12
|
+
fields: string[];
|
|
13
|
+
optional?: boolean;
|
|
14
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CRUD Shared Types
|
|
3
|
+
*
|
|
4
|
+
* Base types that are shared across config modules to avoid circular dependencies.
|
|
5
|
+
* These are minimal type definitions that don't import from other config modules.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
export type { BaseRecord, CRUDViewMode, FormStep } from './schemas/shared.schema.ts';
|
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CRUD Metadata Types for Config Manifests
|
|
3
|
+
*
|
|
4
|
+
* Extends the manifest system with metadata for rendering
|
|
5
|
+
* list views, create/edit forms, and delete confirmations.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { ReactNode } from 'react';
|
|
9
|
+
import type { ConfigManifest, ConfigFieldMeta } from '../manifest/types.ts';
|
|
10
|
+
import type { ExtensionSurface } from '../extensions/types.ts';
|
|
11
|
+
import type { ManifestRouting, NestedRouting } from '../routing/types.ts';
|
|
12
|
+
|
|
13
|
+
import type { BaseRecord, CRUDViewMode, FormStep } from './base-types.ts';
|
|
14
|
+
export type { BaseRecord, CRUDViewMode, FormStep } from './base-types.ts';
|
|
15
|
+
|
|
16
|
+
// =============================================================================
|
|
17
|
+
// List View Configuration
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Column definition for list/table views
|
|
21
|
+
*/
|
|
22
|
+
export interface ListColumn<T = unknown> {
|
|
23
|
+
/** Field key to display (dot notation for nested) */
|
|
24
|
+
key: string;
|
|
25
|
+
/** Column header label */
|
|
26
|
+
label: string;
|
|
27
|
+
/** Column width (characters or 'auto') */
|
|
28
|
+
width?: number | 'auto';
|
|
29
|
+
/** Text alignment */
|
|
30
|
+
align?: 'left' | 'center' | 'right';
|
|
31
|
+
/** Whether column is sortable */
|
|
32
|
+
sortable?: boolean;
|
|
33
|
+
/** Custom render function */
|
|
34
|
+
render?: (value: unknown, record: T) => ReactNode;
|
|
35
|
+
/** Format preset (applies default render) */
|
|
36
|
+
format?: 'text' | 'number' | 'date' | 'boolean' | 'status' | 'badge';
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* List view configuration
|
|
41
|
+
*/
|
|
42
|
+
export interface ListViewConfig<T = unknown> {
|
|
43
|
+
/** Columns to display */
|
|
44
|
+
columns: ListColumn<T>[];
|
|
45
|
+
/** Field to use as display name in UI */
|
|
46
|
+
displayField: string;
|
|
47
|
+
/** Field to use as unique identifier */
|
|
48
|
+
idField?: string; // defaults to 'id'
|
|
49
|
+
/** Default sort field */
|
|
50
|
+
defaultSort?: string;
|
|
51
|
+
/** Default sort direction */
|
|
52
|
+
defaultSortDirection?: 'asc' | 'desc';
|
|
53
|
+
/** Empty state message */
|
|
54
|
+
emptyMessage?: string;
|
|
55
|
+
/** Whether to show search/filter */
|
|
56
|
+
searchable?: boolean;
|
|
57
|
+
/** Fields to search in */
|
|
58
|
+
searchFields?: string[];
|
|
59
|
+
/** Row actions (edit, delete, custom) */
|
|
60
|
+
actions?: ListAction[];
|
|
61
|
+
/** Bulk actions */
|
|
62
|
+
bulkActions?: ListAction[];
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Action available in list view
|
|
67
|
+
*/
|
|
68
|
+
export interface ListAction {
|
|
69
|
+
id: string;
|
|
70
|
+
label: string;
|
|
71
|
+
icon?: string;
|
|
72
|
+
variant?: 'primary' | 'secondary' | 'danger' | 'ghost';
|
|
73
|
+
/** When action should be disabled */
|
|
74
|
+
disabledWhen?: (record: unknown) => boolean;
|
|
75
|
+
/** When action should be hidden */
|
|
76
|
+
hiddenWhen?: (record: unknown) => boolean;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// Form View Configuration
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Form view configuration (create/edit)
|
|
83
|
+
*/
|
|
84
|
+
export interface FormViewConfig {
|
|
85
|
+
/** Title for create mode */
|
|
86
|
+
createTitle?: string;
|
|
87
|
+
/** Title for edit mode */
|
|
88
|
+
editTitle?: string;
|
|
89
|
+
/** Fields to show in create mode (defaults to all) */
|
|
90
|
+
createFields?: string[];
|
|
91
|
+
/** Fields to show in edit mode (defaults to all) */
|
|
92
|
+
editFields?: string[];
|
|
93
|
+
/** Fields that are read-only in edit mode */
|
|
94
|
+
readOnlyInEdit?: string[];
|
|
95
|
+
/** Whether to show cancel button */
|
|
96
|
+
showCancel?: boolean;
|
|
97
|
+
/** Submit button label for create */
|
|
98
|
+
createSubmitLabel?: string;
|
|
99
|
+
/** Submit button label for edit */
|
|
100
|
+
editSubmitLabel?: string;
|
|
101
|
+
/** Layout mode */
|
|
102
|
+
layout?: 'vertical' | 'horizontal' | 'grid';
|
|
103
|
+
/**
|
|
104
|
+
* Optional wizard steps for multi-step forms.
|
|
105
|
+
* If provided, form renders as a stepped wizard.
|
|
106
|
+
* If omitted, form renders all fields in a single view.
|
|
107
|
+
*/
|
|
108
|
+
steps?: FormStep[];
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// Detail View Configuration
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Detail/view configuration (read-only view of single record)
|
|
115
|
+
*/
|
|
116
|
+
export interface DetailViewConfig {
|
|
117
|
+
/** Title template (can include {field} placeholders) */
|
|
118
|
+
titleTemplate?: string;
|
|
119
|
+
/** Fields to display */
|
|
120
|
+
fields?: string[];
|
|
121
|
+
/** Whether to group fields */
|
|
122
|
+
grouped?: boolean;
|
|
123
|
+
/** Custom sections */
|
|
124
|
+
sections?: DetailSection[];
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Section in detail view
|
|
129
|
+
*/
|
|
130
|
+
export interface DetailSection {
|
|
131
|
+
id: string;
|
|
132
|
+
title: string;
|
|
133
|
+
icon?: string;
|
|
134
|
+
fields: string[];
|
|
135
|
+
collapsed?: boolean;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// Delete Confirmation Configuration
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Delete confirmation configuration
|
|
142
|
+
*/
|
|
143
|
+
export interface DeleteConfig {
|
|
144
|
+
/** Confirmation message template */
|
|
145
|
+
confirmMessage?: string;
|
|
146
|
+
/** Whether to require typing name to confirm */
|
|
147
|
+
requireNameConfirmation?: boolean;
|
|
148
|
+
/** Warning message about consequences */
|
|
149
|
+
warningMessage?: string;
|
|
150
|
+
/** Related records that will be affected */
|
|
151
|
+
cascadeWarning?: string;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
// Auto-Detection Configuration
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Auto-detection configuration for CRUD resources
|
|
158
|
+
* Enables scanning for local/cloud providers, agents, etc.
|
|
159
|
+
*/
|
|
160
|
+
export interface DetectionConfig<TDetected = unknown, TRecord = unknown> {
|
|
161
|
+
/** Whether detection is enabled */
|
|
162
|
+
enabled: boolean;
|
|
163
|
+
/** Function that performs detection */
|
|
164
|
+
detector: () => Promise<TDetected[]>;
|
|
165
|
+
/** Label for detection button */
|
|
166
|
+
label?: string;
|
|
167
|
+
/** Description of what will be detected */
|
|
168
|
+
description?: string;
|
|
169
|
+
/** Function to match detected item with existing record */
|
|
170
|
+
matcher: (detected: TDetected, existing: TRecord) => boolean;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
// Combined CRUD Configuration
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* Complete CRUD configuration for a record-type manifest
|
|
177
|
+
*/
|
|
178
|
+
export interface CRUDConfig<T = unknown, TDetected = unknown> {
|
|
179
|
+
/** List view configuration */
|
|
180
|
+
list: ListViewConfig<T>;
|
|
181
|
+
/** Form view configuration */
|
|
182
|
+
form?: FormViewConfig;
|
|
183
|
+
/** Detail view configuration */
|
|
184
|
+
detail?: DetailViewConfig;
|
|
185
|
+
/** Delete confirmation configuration */
|
|
186
|
+
delete?: DeleteConfig;
|
|
187
|
+
/** Auto-detection configuration */
|
|
188
|
+
detection?: DetectionConfig<TDetected, T>;
|
|
189
|
+
/** Whether records can be created */
|
|
190
|
+
canCreate?: boolean;
|
|
191
|
+
/** Whether records can be edited */
|
|
192
|
+
canEdit?: boolean;
|
|
193
|
+
/** Whether records can be deleted */
|
|
194
|
+
canDelete?: boolean;
|
|
195
|
+
/** Whether records can be duplicated */
|
|
196
|
+
canDuplicate?: boolean;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
// Record Manifest (Manifest + CRUD Config)
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* A manifest for record-type configurations (providers, agents, etc.)
|
|
203
|
+
* Extends ConfigManifest with CRUD metadata for automatic UI generation.
|
|
204
|
+
*/
|
|
205
|
+
export interface RecordManifest<T = unknown, TDetected = unknown> extends ConfigManifest {
|
|
206
|
+
/** CRUD configuration for list/form/detail views */
|
|
207
|
+
crud: CRUDConfig<T, TDetected>;
|
|
208
|
+
/** Schema for individual records (vs the full config) */
|
|
209
|
+
recordSchema?: ConfigManifest['schema'];
|
|
210
|
+
/**
|
|
211
|
+
* Discriminated routing configuration (single discriminator).
|
|
212
|
+
* When present, a discriminator field value determines which variant
|
|
213
|
+
* fields, schema, and overrides are active.
|
|
214
|
+
*/
|
|
215
|
+
routing?: ManifestRouting;
|
|
216
|
+
/**
|
|
217
|
+
* Nested routing configurations (multiple discriminators).
|
|
218
|
+
* Used when a manifest contains multiple independent discriminated unions,
|
|
219
|
+
* each at a different path. For example, agent role configurations where
|
|
220
|
+
* each role (orchestration, development, etc.) has its own type discriminator.
|
|
221
|
+
*
|
|
222
|
+
* @example
|
|
223
|
+
* ```typescript
|
|
224
|
+
* nestedRoutings: [
|
|
225
|
+
* { path: 'agents.orchestration', discriminator: 'type', label: 'Orchestration Agent', variants: agentVariants },
|
|
226
|
+
* { path: 'agents.development', discriminator: 'type', label: 'Development Agent', variants: agentVariants },
|
|
227
|
+
* ]
|
|
228
|
+
* ```
|
|
229
|
+
*/
|
|
230
|
+
nestedRoutings?: NestedRouting[];
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
/**
|
|
234
|
+
* Type guard to check if manifest has CRUD config
|
|
235
|
+
*/
|
|
236
|
+
export function isRecordManifest(manifest: ConfigManifest): manifest is RecordManifest {
|
|
237
|
+
return 'crud' in manifest && manifest.crud !== undefined;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* Type guard to check if manifest has nested routings
|
|
242
|
+
*/
|
|
243
|
+
export function hasNestedRoutings(
|
|
244
|
+
manifest: ConfigManifest
|
|
245
|
+
): manifest is RecordManifest & { nestedRoutings: NestedRouting[] } {
|
|
246
|
+
return (
|
|
247
|
+
isRecordManifest(manifest) &&
|
|
248
|
+
'nestedRoutings' in manifest &&
|
|
249
|
+
Array.isArray(manifest.nestedRoutings) &&
|
|
250
|
+
manifest.nestedRoutings.length > 0
|
|
251
|
+
);
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
// CRUD Page Props
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* Props for the generic CRUD page component
|
|
258
|
+
*/
|
|
259
|
+
export interface CRUDPageProps<T extends BaseRecord = BaseRecord> {
|
|
260
|
+
/** The record manifest */
|
|
261
|
+
manifest: RecordManifest<T>;
|
|
262
|
+
/** Surface for loading extensions (enables extension loading when set) */
|
|
263
|
+
surface?: ExtensionSurface;
|
|
264
|
+
/** Whether component is embedded (removes padding and FocusZone) */
|
|
265
|
+
embedded?: boolean;
|
|
266
|
+
/** Initial view mode */
|
|
267
|
+
initialMode?: CRUDViewMode;
|
|
268
|
+
/** Selected record ID (for edit/view/delete modes) */
|
|
269
|
+
selectedId?: string;
|
|
270
|
+
/** Called when navigating between modes */
|
|
271
|
+
onModeChange?: (mode: CRUDViewMode, recordId?: string) => void;
|
|
272
|
+
/** Called after successful create */
|
|
273
|
+
onCreated?: (record: T) => void;
|
|
274
|
+
/** Called after successful update */
|
|
275
|
+
onUpdated?: (record: T) => void;
|
|
276
|
+
/** Called after successful delete */
|
|
277
|
+
onDeleted?: (recordId: string) => void;
|
|
278
|
+
/** Custom list row renderer */
|
|
279
|
+
renderListRow?: (record: T, defaultRender: () => ReactNode) => ReactNode;
|
|
280
|
+
/** Custom form field renderer */
|
|
281
|
+
renderFormField?: (
|
|
282
|
+
field: ConfigFieldMeta,
|
|
283
|
+
value: unknown,
|
|
284
|
+
onChange: (value: unknown) => void,
|
|
285
|
+
defaultRender: () => ReactNode
|
|
286
|
+
) => ReactNode;
|
|
287
|
+
/** Custom detail field renderer */
|
|
288
|
+
renderDetailField?: (
|
|
289
|
+
field: ConfigFieldMeta,
|
|
290
|
+
value: unknown,
|
|
291
|
+
defaultRender: () => ReactNode
|
|
292
|
+
) => ReactNode;
|
|
293
|
+
/** Custom empty state */
|
|
294
|
+
renderEmpty?: () => ReactNode;
|
|
295
|
+
/** Custom header */
|
|
296
|
+
renderHeader?: (mode: CRUDViewMode, record?: T) => ReactNode;
|
|
297
|
+
/** Custom footer */
|
|
298
|
+
renderFooter?: (mode: CRUDViewMode, record?: T) => ReactNode;
|
|
299
|
+
}
|