@lssm/lib.contracts 1.11.0 → 1.41.0
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 +1 -1
- package/dist/_virtual/rolldown_runtime.js +1 -0
- package/dist/app-config/app-config.feature.js +1 -0
- package/dist/app-config/contracts.js +1 -2
- package/dist/app-config/docs/app-config.docblock.js +220 -0
- package/dist/app-config/events.js +1 -2
- package/dist/app-config/index.js +1 -1
- package/dist/app-config/lifecycle-contracts.js +1 -2
- package/dist/app-config/runtime.js +1 -2
- package/dist/app-config/spec.js +1 -2
- package/dist/app-config/validation.js +1 -2
- package/dist/capabilities/docs/capabilities.docblock.js +1 -0
- package/dist/capabilities/openbanking.js +1 -2
- package/dist/capabilities.js +1 -2
- package/dist/client/react/drivers/rn-reusables.js +1 -2
- package/dist/client/react/drivers/shadcn.js +1 -2
- package/dist/client/react/feature-render.js +1 -2
- package/dist/client/react/form-render.js +1 -2
- package/dist/contract-registry/index.js +1 -0
- package/dist/contract-registry/schemas.js +1 -0
- package/dist/contract-registry/types.js +0 -0
- package/dist/contracts-adapter-hydration.js +1 -2
- package/dist/contracts-adapter-input.js +1 -2
- package/dist/data-views/docs/data-views.docblock.js +1 -0
- package/dist/data-views/query-generator.js +1 -2
- package/dist/data-views/runtime.js +1 -2
- package/dist/data-views.js +1 -2
- package/dist/docs/PUBLISHING.docblock.js +76 -0
- package/dist/docs/accessibility_wcag_compliance_specs.docblock.js +350 -0
- package/dist/docs/index.js +1 -0
- package/dist/docs/meta.docs.js +13 -0
- package/dist/docs/presentations.js +1 -0
- package/dist/docs/registry.js +1 -0
- package/dist/docs/tech/PHASE_1_QUICKSTART.docblock.js +383 -0
- package/dist/docs/tech/PHASE_2_AI_NATIVE_OPERATIONS.docblock.js +68 -0
- package/dist/docs/tech/PHASE_3_AUTO_EVOLUTION.docblock.js +140 -0
- package/dist/docs/tech/PHASE_4_PERSONALIZATION_ENGINE.docblock.js +86 -0
- package/dist/docs/tech/PHASE_5_ZERO_TOUCH_OPERATIONS.docblock.js +1 -0
- package/dist/docs/tech/auth/better-auth-nextjs.docblock.js +58 -0
- package/dist/docs/tech/contracts/README.docblock.js +1 -0
- package/dist/docs/tech/contracts/create-subscription.docblock.js +1 -0
- package/dist/docs/tech/contracts/graphql-typed-outputs.docblock.js +180 -0
- package/dist/docs/tech/contracts/migrations.docblock.js +1 -0
- package/dist/docs/tech/contracts/openapi-export.docblock.js +38 -0
- package/dist/docs/tech/contracts/ops-to-presentation-linking.docblock.js +62 -0
- package/dist/docs/tech/contracts/overlays.docblock.js +68 -0
- package/dist/docs/tech/contracts/tests.docblock.js +132 -0
- package/dist/docs/tech/contracts/themes.docblock.js +1 -0
- package/dist/docs/tech/contracts/vertical-pocket-family-office.docblock.js +106 -0
- package/dist/docs/tech/lifecycle-stage-system.docblock.js +213 -0
- package/dist/docs/tech/llm/llm-integration.docblock.js +289 -0
- package/dist/docs/tech/mcp-endpoints.docblock.js +1 -0
- package/dist/docs/tech/presentation-runtime.docblock.js +1 -0
- package/dist/docs/tech/schema/README.docblock.js +262 -0
- package/dist/docs/tech/studio/learning-events.docblock.js +1 -0
- package/dist/docs/tech/studio/learning-journeys.docblock.js +57 -0
- package/dist/docs/tech/studio/platform-admin-panel.docblock.js +63 -0
- package/dist/docs/tech/studio/project-access-teams.docblock.js +36 -0
- package/dist/docs/tech/studio/project-routing.docblock.js +1 -0
- package/dist/docs/tech/studio/sandbox-unlogged.docblock.js +20 -0
- package/dist/docs/tech/studio/team-invitations.docblock.js +65 -0
- package/dist/docs/tech/studio/workspace-ops.docblock.js +1 -0
- package/dist/docs/tech/studio/workspaces.docblock.js +41 -0
- package/dist/docs/tech/telemetry-ingest.docblock.js +122 -0
- package/dist/docs/tech/templates/runtime.docblock.js +1 -0
- package/dist/docs/tech/vscode-extension.docblock.js +68 -0
- package/dist/docs/tech/workflows/overview.docblock.js +1 -0
- package/dist/docs/tech-contracts.docs.js +76 -0
- package/dist/docs/types.js +0 -0
- package/dist/events.js +1 -2
- package/dist/experiments/docs/experiments.docblock.js +128 -0
- package/dist/experiments/evaluator.js +1 -2
- package/dist/experiments/spec.js +1 -2
- package/dist/features.js +1 -2
- package/dist/forms/docs/forms.docblock.js +1 -0
- package/dist/forms.js +1 -2
- package/dist/index.js +1 -1
- package/dist/install.js +1 -2
- package/dist/integrations/contracts.js +1 -2
- package/dist/integrations/docs/integrations.docblock.js +1 -0
- package/dist/integrations/health.js +1 -2
- package/dist/integrations/index.js +1 -1
- package/dist/integrations/openbanking/contracts/accounts.js +1 -2
- package/dist/integrations/openbanking/contracts/balances.js +1 -2
- package/dist/integrations/openbanking/contracts/index.js +1 -2
- package/dist/integrations/openbanking/contracts/transactions.js +1 -2
- package/dist/integrations/openbanking/guards.js +1 -2
- package/dist/integrations/openbanking/models.js +1 -2
- package/dist/integrations/openbanking/openbanking.feature.js +1 -0
- package/dist/integrations/openbanking/telemetry.js +1 -2
- package/dist/integrations/providers/elevenlabs.js +1 -2
- package/dist/integrations/providers/gcs-storage.js +1 -2
- package/dist/integrations/providers/gmail.js +1 -2
- package/dist/integrations/providers/google-calendar.js +1 -2
- package/dist/integrations/providers/impls/elevenlabs-voice.js +1 -2
- package/dist/integrations/providers/impls/gcs-storage.js +1 -2
- package/dist/integrations/providers/impls/gmail-inbound.js +1 -2
- package/dist/integrations/providers/impls/gmail-outbound.js +1 -2
- package/dist/integrations/providers/impls/google-calendar.js +1 -2
- package/dist/integrations/providers/impls/index.js +1 -1
- package/dist/integrations/providers/impls/mistral-embedding.js +1 -2
- package/dist/integrations/providers/impls/mistral-llm.js +1 -2
- package/dist/integrations/providers/impls/postmark-email.js +1 -2
- package/dist/integrations/providers/impls/powens-client.js +1 -2
- package/dist/integrations/providers/impls/powens-openbanking.js +1 -2
- package/dist/integrations/providers/impls/provider-factory.js +1 -2
- package/dist/integrations/providers/impls/qdrant-vector.js +1 -2
- package/dist/integrations/providers/impls/stripe-payments.js +1 -2
- package/dist/integrations/providers/impls/twilio-sms.js +1 -2
- package/dist/integrations/providers/index.js +1 -1
- package/dist/integrations/providers/mistral.js +1 -2
- package/dist/integrations/providers/postmark.js +1 -2
- package/dist/integrations/providers/powens.js +1 -2
- package/dist/integrations/providers/qdrant.js +1 -2
- package/dist/integrations/providers/registry.js +1 -0
- package/dist/integrations/providers/stripe.js +1 -2
- package/dist/integrations/providers/twilio-sms.js +1 -2
- package/dist/integrations/runtime.js +1 -2
- package/dist/integrations/secrets/aws-secret-manager.js +1 -0
- package/dist/integrations/secrets/env-secret-provider.js +1 -2
- package/dist/integrations/secrets/gcp-secret-manager.js +1 -2
- package/dist/integrations/secrets/index.js +1 -1
- package/dist/integrations/secrets/manager.js +1 -2
- package/dist/integrations/secrets/provider.js +1 -2
- package/dist/integrations/secrets/scaleway-secret-manager.js +1 -0
- package/dist/integrations/spec.js +1 -2
- package/dist/jobs/define-job.js +1 -0
- package/dist/jobs/gcp-cloud-tasks.js +1 -2
- package/dist/jobs/gcp-pubsub.js +1 -2
- package/dist/jobs/handlers/gmail-sync-handler.js +1 -2
- package/dist/jobs/handlers/index.js +1 -1
- package/dist/jobs/handlers/ping-handler.js +1 -0
- package/dist/jobs/handlers/storage-document-handler.js +1 -2
- package/dist/jobs/index.js +1 -1
- package/dist/jobs/memory-queue.js +1 -2
- package/dist/jobs/queue.js +1 -0
- package/dist/jobs/scaleway-sqs-queue.js +1 -0
- package/dist/jsonschema.js +1 -2
- package/dist/knowledge/contracts.js +1 -2
- package/dist/knowledge/docs/knowledge.docblock.js +138 -0
- package/dist/knowledge/ingestion/document-processor.js +1 -2
- package/dist/knowledge/ingestion/embedding-service.js +1 -2
- package/dist/knowledge/ingestion/gmail-adapter.js +1 -2
- package/dist/knowledge/ingestion/storage-adapter.js +1 -2
- package/dist/knowledge/ingestion/vector-indexer.js +1 -2
- package/dist/knowledge/query/service.js +1 -2
- package/dist/knowledge/runtime.js +1 -2
- package/dist/knowledge/spaces/email-threads.js +1 -2
- package/dist/knowledge/spaces/financial-docs.js +1 -2
- package/dist/knowledge/spaces/financial-overview.js +1 -2
- package/dist/knowledge/spaces/product-canon.js +1 -2
- package/dist/knowledge/spaces/support-faq.js +1 -2
- package/dist/knowledge/spaces/uploaded-docs.js +1 -2
- package/dist/knowledge/spec.js +1 -2
- package/dist/llm/exporters.js +8 -0
- package/dist/llm/index.js +1 -0
- package/dist/llm/prompts.js +220 -0
- package/dist/llm/types.js +0 -0
- package/dist/markdown.js +1 -2
- package/dist/migrations.js +1 -2
- package/dist/node_modules/@pothos/plugin-complexity/esm/calculate-complexity.js +1 -0
- package/dist/node_modules/@pothos/plugin-complexity/esm/defaults.js +1 -0
- package/dist/node_modules/@pothos/plugin-complexity/esm/index.js +1 -0
- package/dist/node_modules/@pothos/plugin-complexity/esm/types.js +1 -0
- package/dist/node_modules/@pothos/plugin-complexity/esm/util.js +1 -0
- package/dist/node_modules/@pothos/plugin-complexity/esm/validator.js +1 -0
- package/dist/node_modules/@pothos/plugin-dataloader/esm/field-builder.js +1 -0
- package/dist/node_modules/@pothos/plugin-dataloader/esm/index.js +1 -0
- package/dist/node_modules/@pothos/plugin-dataloader/esm/refs/index.js +1 -0
- package/dist/node_modules/@pothos/plugin-dataloader/esm/refs/interface.js +1 -0
- package/dist/node_modules/@pothos/plugin-dataloader/esm/refs/node.js +1 -0
- package/dist/node_modules/@pothos/plugin-dataloader/esm/refs/object.js +1 -0
- package/dist/node_modules/@pothos/plugin-dataloader/esm/refs/union.js +1 -0
- package/dist/node_modules/@pothos/plugin-dataloader/esm/schema-builder.js +1 -0
- package/dist/node_modules/@pothos/plugin-dataloader/esm/util.js +1 -0
- package/dist/node_modules/@pothos/plugin-prisma/esm/connection-helpers.js +1 -0
- package/dist/node_modules/@pothos/plugin-prisma/esm/field-builder.js +1 -0
- package/dist/node_modules/@pothos/plugin-prisma/esm/index.js +1 -0
- package/dist/node_modules/@pothos/plugin-prisma/esm/interface-ref.js +1 -0
- package/dist/node_modules/@pothos/plugin-prisma/esm/model-loader.js +1 -0
- package/dist/node_modules/@pothos/plugin-prisma/esm/node-ref.js +1 -0
- package/dist/node_modules/@pothos/plugin-prisma/esm/object-ref.js +1 -0
- package/dist/node_modules/@pothos/plugin-prisma/esm/prisma-field-builder.js +1 -0
- package/dist/node_modules/@pothos/plugin-prisma/esm/schema-builder.js +1 -0
- package/dist/node_modules/@pothos/plugin-prisma/esm/types.js +0 -0
- package/dist/node_modules/@pothos/plugin-prisma/esm/util/cursors.js +1 -0
- package/dist/node_modules/@pothos/plugin-prisma/esm/util/datamodel.js +1 -0
- package/dist/node_modules/@pothos/plugin-prisma/esm/util/deep-equal.js +1 -0
- package/dist/node_modules/@pothos/plugin-prisma/esm/util/description.js +1 -0
- package/dist/node_modules/@pothos/plugin-prisma/esm/util/get-client.js +1 -0
- package/dist/node_modules/@pothos/plugin-prisma/esm/util/loader-map.js +1 -0
- package/dist/node_modules/@pothos/plugin-prisma/esm/util/map-query.js +1 -0
- package/dist/node_modules/@pothos/plugin-prisma/esm/util/relation-map.js +1 -0
- package/dist/node_modules/@pothos/plugin-prisma/esm/util/selections.js +1 -0
- package/dist/node_modules/@pothos/plugin-prisma/esm/util/usage.js +1 -0
- package/dist/node_modules/@pothos/plugin-tracing/esm/index.js +1 -0
- package/dist/node_modules/@pothos/plugin-tracing/esm/util.js +1 -0
- package/dist/node_modules/dataloader/index.js +7 -0
- package/dist/node_modules/graphql/error/GraphQLError.js +5 -0
- package/dist/node_modules/graphql/error/index.js +1 -0
- package/dist/node_modules/graphql/error/locatedError.js +1 -0
- package/dist/node_modules/graphql/error/syntaxError.js +1 -0
- package/dist/node_modules/graphql/execution/collectFields.js +1 -0
- package/dist/node_modules/graphql/execution/execute.js +1 -0
- package/dist/node_modules/graphql/execution/index.js +1 -0
- package/dist/node_modules/graphql/execution/mapAsyncIterator.js +1 -0
- package/dist/node_modules/graphql/execution/subscribe.js +1 -0
- package/dist/node_modules/graphql/execution/values.js +1 -0
- package/dist/node_modules/graphql/graphql.js +1 -0
- package/dist/node_modules/graphql/index.js +1 -0
- package/dist/node_modules/graphql/jsutils/Path.js +1 -0
- package/dist/node_modules/graphql/jsutils/devAssert.js +1 -0
- package/dist/node_modules/graphql/jsutils/didYouMean.js +1 -0
- package/dist/node_modules/graphql/jsutils/groupBy.js +1 -0
- package/dist/node_modules/graphql/jsutils/identityFunc.js +1 -0
- package/dist/node_modules/graphql/jsutils/inspect.js +1 -0
- package/dist/node_modules/graphql/jsutils/instanceOf.js +12 -0
- package/dist/node_modules/graphql/jsutils/invariant.js +1 -0
- package/dist/node_modules/graphql/jsutils/isAsyncIterable.js +1 -0
- package/dist/node_modules/graphql/jsutils/isIterableObject.js +1 -0
- package/dist/node_modules/graphql/jsutils/isObjectLike.js +1 -0
- package/dist/node_modules/graphql/jsutils/isPromise.js +1 -0
- package/dist/node_modules/graphql/jsutils/keyMap.js +1 -0
- package/dist/node_modules/graphql/jsutils/keyValMap.js +1 -0
- package/dist/node_modules/graphql/jsutils/mapValue.js +1 -0
- package/dist/node_modules/graphql/jsutils/memoize3.js +1 -0
- package/dist/node_modules/graphql/jsutils/naturalCompare.js +1 -0
- package/dist/node_modules/graphql/jsutils/printPathArray.js +1 -0
- package/dist/node_modules/graphql/jsutils/promiseForObject.js +1 -0
- package/dist/node_modules/graphql/jsutils/promiseReduce.js +1 -0
- package/dist/node_modules/graphql/jsutils/suggestionList.js +1 -0
- package/dist/node_modules/graphql/jsutils/toError.js +1 -0
- package/dist/node_modules/graphql/jsutils/toObjMap.js +1 -0
- package/dist/node_modules/graphql/language/ast.js +1 -0
- package/dist/node_modules/graphql/language/blockString.js +3 -0
- package/dist/node_modules/graphql/language/characterClasses.js +1 -0
- package/dist/node_modules/graphql/language/directiveLocation.js +1 -0
- package/dist/node_modules/graphql/language/index.js +1 -0
- package/dist/node_modules/graphql/language/kinds.js +1 -0
- package/dist/node_modules/graphql/language/lexer.js +3 -0
- package/dist/node_modules/graphql/language/location.js +1 -0
- package/dist/node_modules/graphql/language/parser.js +1 -0
- package/dist/node_modules/graphql/language/predicates.js +1 -0
- package/dist/node_modules/graphql/language/printLocation.js +2 -0
- package/dist/node_modules/graphql/language/printString.js +1 -0
- package/dist/node_modules/graphql/language/printer.js +34 -0
- package/dist/node_modules/graphql/language/schemaCoordinateLexer.js +1 -0
- package/dist/node_modules/graphql/language/source.js +1 -0
- package/dist/node_modules/graphql/language/tokenKind.js +1 -0
- package/dist/node_modules/graphql/language/visitor.js +1 -0
- package/dist/node_modules/graphql/type/assertName.js +1 -0
- package/dist/node_modules/graphql/type/definition.js +1 -0
- package/dist/node_modules/graphql/type/directives.js +1 -0
- package/dist/node_modules/graphql/type/index.js +1 -0
- package/dist/node_modules/graphql/type/introspection.js +3 -0
- package/dist/node_modules/graphql/type/scalars.js +1 -0
- package/dist/node_modules/graphql/type/schema.js +1 -0
- package/dist/node_modules/graphql/type/validate.js +3 -0
- package/dist/node_modules/graphql/utilities/TypeInfo.js +1 -0
- package/dist/node_modules/graphql/utilities/assertValidName.js +1 -0
- package/dist/node_modules/graphql/utilities/astFromValue.js +1 -0
- package/dist/node_modules/graphql/utilities/buildASTSchema.js +1 -0
- package/dist/node_modules/graphql/utilities/buildClientSchema.js +1 -0
- package/dist/node_modules/graphql/utilities/coerceInputValue.js +1 -0
- package/dist/node_modules/graphql/utilities/concatAST.js +1 -0
- package/dist/node_modules/graphql/utilities/extendSchema.js +1 -0
- package/dist/node_modules/graphql/utilities/findBreakingChanges.js +1 -0
- package/dist/node_modules/graphql/utilities/getIntrospectionQuery.js +107 -0
- package/dist/node_modules/graphql/utilities/getOperationAST.js +1 -0
- package/dist/node_modules/graphql/utilities/getOperationRootType.js +1 -0
- package/dist/node_modules/graphql/utilities/index.js +1 -0
- package/dist/node_modules/graphql/utilities/introspectionFromSchema.js +1 -0
- package/dist/node_modules/graphql/utilities/lexicographicSortSchema.js +1 -0
- package/dist/node_modules/graphql/utilities/printSchema.js +13 -0
- package/dist/node_modules/graphql/utilities/resolveSchemaCoordinate.js +1 -0
- package/dist/node_modules/graphql/utilities/separateOperations.js +1 -0
- package/dist/node_modules/graphql/utilities/sortValueNode.js +1 -0
- package/dist/node_modules/graphql/utilities/stripIgnoredCharacters.js +1 -0
- package/dist/node_modules/graphql/utilities/typeComparators.js +1 -0
- package/dist/node_modules/graphql/utilities/typeFromAST.js +1 -0
- package/dist/node_modules/graphql/utilities/valueFromAST.js +1 -0
- package/dist/node_modules/graphql/utilities/valueFromASTUntyped.js +1 -0
- package/dist/node_modules/graphql/validation/ValidationContext.js +1 -0
- package/dist/node_modules/graphql/validation/index.js +1 -0
- package/dist/node_modules/graphql/validation/rules/ExecutableDefinitionsRule.js +1 -0
- package/dist/node_modules/graphql/validation/rules/FieldsOnCorrectTypeRule.js +1 -0
- package/dist/node_modules/graphql/validation/rules/FragmentsOnCompositeTypesRule.js +1 -0
- package/dist/node_modules/graphql/validation/rules/KnownArgumentNamesRule.js +1 -0
- package/dist/node_modules/graphql/validation/rules/KnownDirectivesRule.js +1 -0
- package/dist/node_modules/graphql/validation/rules/KnownFragmentNamesRule.js +1 -0
- package/dist/node_modules/graphql/validation/rules/KnownTypeNamesRule.js +1 -0
- package/dist/node_modules/graphql/validation/rules/LoneAnonymousOperationRule.js +1 -0
- package/dist/node_modules/graphql/validation/rules/LoneSchemaDefinitionRule.js +1 -0
- package/dist/node_modules/graphql/validation/rules/MaxIntrospectionDepthRule.js +1 -0
- package/dist/node_modules/graphql/validation/rules/NoFragmentCyclesRule.js +1 -0
- package/dist/node_modules/graphql/validation/rules/NoUndefinedVariablesRule.js +1 -0
- package/dist/node_modules/graphql/validation/rules/NoUnusedFragmentsRule.js +1 -0
- package/dist/node_modules/graphql/validation/rules/NoUnusedVariablesRule.js +1 -0
- package/dist/node_modules/graphql/validation/rules/OverlappingFieldsCanBeMergedRule.js +1 -0
- package/dist/node_modules/graphql/validation/rules/PossibleFragmentSpreadsRule.js +1 -0
- package/dist/node_modules/graphql/validation/rules/PossibleTypeExtensionsRule.js +1 -0
- package/dist/node_modules/graphql/validation/rules/ProvidedRequiredArgumentsRule.js +1 -0
- package/dist/node_modules/graphql/validation/rules/ScalarLeafsRule.js +1 -0
- package/dist/node_modules/graphql/validation/rules/SingleFieldSubscriptionsRule.js +1 -0
- package/dist/node_modules/graphql/validation/rules/UniqueArgumentDefinitionNamesRule.js +1 -0
- package/dist/node_modules/graphql/validation/rules/UniqueArgumentNamesRule.js +1 -0
- package/dist/node_modules/graphql/validation/rules/UniqueDirectiveNamesRule.js +1 -0
- package/dist/node_modules/graphql/validation/rules/UniqueDirectivesPerLocationRule.js +1 -0
- package/dist/node_modules/graphql/validation/rules/UniqueEnumValueNamesRule.js +1 -0
- package/dist/node_modules/graphql/validation/rules/UniqueFieldDefinitionNamesRule.js +1 -0
- package/dist/node_modules/graphql/validation/rules/UniqueFragmentNamesRule.js +1 -0
- package/dist/node_modules/graphql/validation/rules/UniqueInputFieldNamesRule.js +1 -0
- package/dist/node_modules/graphql/validation/rules/UniqueOperationNamesRule.js +1 -0
- package/dist/node_modules/graphql/validation/rules/UniqueOperationTypesRule.js +1 -0
- package/dist/node_modules/graphql/validation/rules/UniqueTypeNamesRule.js +1 -0
- package/dist/node_modules/graphql/validation/rules/UniqueVariableNamesRule.js +1 -0
- package/dist/node_modules/graphql/validation/rules/ValuesOfCorrectTypeRule.js +1 -0
- package/dist/node_modules/graphql/validation/rules/VariablesAreInputTypesRule.js +1 -0
- package/dist/node_modules/graphql/validation/rules/VariablesInAllowedPositionRule.js +1 -0
- package/dist/node_modules/graphql/validation/rules/custom/NoDeprecatedCustomRule.js +1 -0
- package/dist/node_modules/graphql/validation/rules/custom/NoSchemaIntrospectionCustomRule.js +1 -0
- package/dist/node_modules/graphql/validation/specifiedRules.js +1 -0
- package/dist/node_modules/graphql/validation/validate.js +5 -0
- package/dist/node_modules/graphql/version.js +1 -0
- package/dist/onboarding-base.js +1 -2
- package/dist/openapi.js +1 -0
- package/dist/openbanking/docs/openbanking.docblock.js +109 -0
- package/dist/ownership.js +1 -2
- package/dist/policy/docs/policy.docblock.js +1 -0
- package/dist/policy/engine.js +1 -2
- package/dist/policy/opa-adapter.js +1 -2
- package/dist/policy/spec.js +1 -2
- package/dist/presentations/docs/presentations-conventions.docblock.js +8 -0
- package/dist/presentations.backcompat.js +1 -2
- package/dist/presentations.js +1 -2
- package/dist/presentations.v2.js +7 -2
- package/dist/prompt.js +1 -2
- package/dist/promptRegistry.js +1 -2
- package/dist/regenerator/docs/regenerator.docblock.js +184 -0
- package/dist/regenerator/executor.js +1 -2
- package/dist/regenerator/service.js +1 -2
- package/dist/regenerator/sinks.js +1 -2
- package/dist/regenerator/utils.js +1 -2
- package/dist/registry.js +1 -2
- package/dist/resources.js +1 -2
- package/dist/schema-to-markdown.js +10 -0
- package/dist/server/graphql-pothos.js +1 -2
- package/dist/server/index.js +1 -1
- package/dist/server/mcp/createMcpServer.js +1 -0
- package/dist/server/mcp/mcpTypes.js +0 -0
- package/dist/server/mcp/registerPresentations.js +1 -0
- package/dist/server/mcp/registerPrompts.js +3 -0
- package/dist/server/mcp/registerResources.js +1 -0
- package/dist/server/mcp/registerTools.js +1 -0
- package/dist/server/provider-mcp.js +1 -2
- package/dist/server/rest-elysia.js +1 -2
- package/dist/server/rest-express.js +1 -2
- package/dist/server/rest-generic.js +1 -2
- package/dist/server/rest-next-app.js +1 -2
- package/dist/server/rest-next-mcp.js +1 -2
- package/dist/server/rest-next-pages.js +1 -2
- package/dist/spec.js +1 -2
- package/dist/telemetry/anomaly.js +1 -2
- package/dist/telemetry/docs/telemetry.docblock.js +139 -0
- package/dist/telemetry/spec.js +1 -2
- package/dist/telemetry/tracker.js +1 -2
- package/dist/tests/runner.js +1 -2
- package/dist/tests/spec.js +1 -2
- package/dist/themes.js +1 -2
- package/dist/workflow/adapters/db-adapter.js +1 -2
- package/dist/workflow/adapters/file-adapter.js +1 -2
- package/dist/workflow/adapters/memory-store.js +1 -2
- package/dist/workflow/expression.js +1 -2
- package/dist/workflow/runner.js +1 -2
- package/dist/workflow/sla-monitor.js +1 -2
- package/dist/workflow/spec.js +1 -2
- package/dist/workflow/validation.js +1 -2
- package/package.json +353 -193
- package/dist/app-config/branding.d.ts +0 -56
- package/dist/app-config/branding.d.ts.map +0 -1
- package/dist/app-config/contracts.d.ts +0 -245
- package/dist/app-config/contracts.d.ts.map +0 -1
- package/dist/app-config/contracts.js.map +0 -1
- package/dist/app-config/events.d.ts +0 -123
- package/dist/app-config/events.d.ts.map +0 -1
- package/dist/app-config/events.js.map +0 -1
- package/dist/app-config/index.d.ts +0 -8
- package/dist/app-config/lifecycle-contracts.d.ts +0 -383
- package/dist/app-config/lifecycle-contracts.d.ts.map +0 -1
- package/dist/app-config/lifecycle-contracts.js.map +0 -1
- package/dist/app-config/lifecycle.d.ts +0 -28
- package/dist/app-config/lifecycle.d.ts.map +0 -1
- package/dist/app-config/runtime.d.ts +0 -115
- package/dist/app-config/runtime.d.ts.map +0 -1
- package/dist/app-config/runtime.js.map +0 -1
- package/dist/app-config/spec.d.ts +0 -176
- package/dist/app-config/spec.d.ts.map +0 -1
- package/dist/app-config/spec.js.map +0 -1
- package/dist/app-config/validation.d.ts +0 -48
- package/dist/app-config/validation.d.ts.map +0 -1
- package/dist/app-config/validation.js.map +0 -1
- package/dist/capabilities/openbanking.d.ts +0 -10
- package/dist/capabilities/openbanking.d.ts.map +0 -1
- package/dist/capabilities/openbanking.js.map +0 -1
- package/dist/capabilities.d.ts +0 -46
- package/dist/capabilities.d.ts.map +0 -1
- package/dist/capabilities.js.map +0 -1
- package/dist/client/index.d.ts +0 -6
- package/dist/client/react/drivers/rn-reusables.d.ts +0 -23
- package/dist/client/react/drivers/rn-reusables.d.ts.map +0 -1
- package/dist/client/react/drivers/rn-reusables.js.map +0 -1
- package/dist/client/react/drivers/shadcn.d.ts +0 -13
- package/dist/client/react/drivers/shadcn.d.ts.map +0 -1
- package/dist/client/react/drivers/shadcn.js.map +0 -1
- package/dist/client/react/feature-render.d.ts +0 -21
- package/dist/client/react/feature-render.d.ts.map +0 -1
- package/dist/client/react/feature-render.js.map +0 -1
- package/dist/client/react/form-render.d.ts +0 -92
- package/dist/client/react/form-render.d.ts.map +0 -1
- package/dist/client/react/form-render.js.map +0 -1
- package/dist/client/react/index.d.ts +0 -5
- package/dist/contracts-adapter-hydration.d.ts +0 -16
- package/dist/contracts-adapter-hydration.d.ts.map +0 -1
- package/dist/contracts-adapter-hydration.js.map +0 -1
- package/dist/contracts-adapter-input.d.ts +0 -11
- package/dist/contracts-adapter-input.d.ts.map +0 -1
- package/dist/contracts-adapter-input.js.map +0 -1
- package/dist/data-views/query-generator.d.ts +0 -40
- package/dist/data-views/query-generator.d.ts.map +0 -1
- package/dist/data-views/query-generator.js.map +0 -1
- package/dist/data-views/runtime.d.ts +0 -27
- package/dist/data-views/runtime.d.ts.map +0 -1
- package/dist/data-views/runtime.js.map +0 -1
- package/dist/data-views.d.ts +0 -132
- package/dist/data-views.d.ts.map +0 -1
- package/dist/data-views.js.map +0 -1
- package/dist/events.d.ts +0 -45
- package/dist/events.d.ts.map +0 -1
- package/dist/events.js.map +0 -1
- package/dist/experiments/evaluator.d.ts +0 -38
- package/dist/experiments/evaluator.d.ts.map +0 -1
- package/dist/experiments/evaluator.js.map +0 -1
- package/dist/experiments/spec-resolver.d.ts +0 -17
- package/dist/experiments/spec-resolver.d.ts.map +0 -1
- package/dist/experiments/spec.d.ts +0 -90
- package/dist/experiments/spec.d.ts.map +0 -1
- package/dist/experiments/spec.js.map +0 -1
- package/dist/features.d.ts +0 -88
- package/dist/features.d.ts.map +0 -1
- package/dist/features.js.map +0 -1
- package/dist/forms.d.ts +0 -259
- package/dist/forms.d.ts.map +0 -1
- package/dist/forms.js.map +0 -1
- package/dist/graphql-federation/dist/index.js +0 -2
- package/dist/graphql-federation/dist/index.js.map +0 -1
- package/dist/index.d.ts +0 -130
- package/dist/install.d.ts +0 -77
- package/dist/install.d.ts.map +0 -1
- package/dist/install.js.map +0 -1
- package/dist/integrations/binding.d.ts +0 -18
- package/dist/integrations/binding.d.ts.map +0 -1
- package/dist/integrations/connection.d.ts +0 -52
- package/dist/integrations/connection.d.ts.map +0 -1
- package/dist/integrations/contracts.d.ts +0 -436
- package/dist/integrations/contracts.d.ts.map +0 -1
- package/dist/integrations/contracts.js.map +0 -1
- package/dist/integrations/health.d.ts +0 -22
- package/dist/integrations/health.d.ts.map +0 -1
- package/dist/integrations/health.js.map +0 -1
- package/dist/integrations/index.d.ts +0 -53
- package/dist/integrations/openbanking/contracts/accounts.d.ts +0 -288
- package/dist/integrations/openbanking/contracts/accounts.d.ts.map +0 -1
- package/dist/integrations/openbanking/contracts/accounts.js.map +0 -1
- package/dist/integrations/openbanking/contracts/balances.d.ts +0 -164
- package/dist/integrations/openbanking/contracts/balances.d.ts.map +0 -1
- package/dist/integrations/openbanking/contracts/balances.js.map +0 -1
- package/dist/integrations/openbanking/contracts/index.d.ts +0 -10
- package/dist/integrations/openbanking/contracts/index.d.ts.map +0 -1
- package/dist/integrations/openbanking/contracts/index.js.map +0 -1
- package/dist/integrations/openbanking/contracts/transactions.d.ts +0 -212
- package/dist/integrations/openbanking/contracts/transactions.d.ts.map +0 -1
- package/dist/integrations/openbanking/contracts/transactions.js.map +0 -1
- package/dist/integrations/openbanking/guards.d.ts +0 -13
- package/dist/integrations/openbanking/guards.d.ts.map +0 -1
- package/dist/integrations/openbanking/guards.js.map +0 -1
- package/dist/integrations/openbanking/models.d.ts +0 -229
- package/dist/integrations/openbanking/models.d.ts.map +0 -1
- package/dist/integrations/openbanking/models.js.map +0 -1
- package/dist/integrations/openbanking/telemetry.d.ts +0 -16
- package/dist/integrations/openbanking/telemetry.d.ts.map +0 -1
- package/dist/integrations/openbanking/telemetry.js.map +0 -1
- package/dist/integrations/providers/calendar.d.ts +0 -79
- package/dist/integrations/providers/calendar.d.ts.map +0 -1
- package/dist/integrations/providers/elevenlabs.d.ts +0 -8
- package/dist/integrations/providers/elevenlabs.d.ts.map +0 -1
- package/dist/integrations/providers/elevenlabs.js.map +0 -1
- package/dist/integrations/providers/email.d.ts +0 -87
- package/dist/integrations/providers/email.d.ts.map +0 -1
- package/dist/integrations/providers/embedding.d.ts +0 -25
- package/dist/integrations/providers/embedding.d.ts.map +0 -1
- package/dist/integrations/providers/gcs-storage.d.ts +0 -8
- package/dist/integrations/providers/gcs-storage.d.ts.map +0 -1
- package/dist/integrations/providers/gcs-storage.js.map +0 -1
- package/dist/integrations/providers/gmail.d.ts +0 -8
- package/dist/integrations/providers/gmail.d.ts.map +0 -1
- package/dist/integrations/providers/gmail.js.map +0 -1
- package/dist/integrations/providers/google-calendar.d.ts +0 -8
- package/dist/integrations/providers/google-calendar.d.ts.map +0 -1
- package/dist/integrations/providers/google-calendar.js.map +0 -1
- package/dist/integrations/providers/impls/elevenlabs-voice.d.ts +0 -21
- package/dist/integrations/providers/impls/elevenlabs-voice.d.ts.map +0 -1
- package/dist/integrations/providers/impls/elevenlabs-voice.js.map +0 -1
- package/dist/integrations/providers/impls/gcs-storage.d.ts +0 -25
- package/dist/integrations/providers/impls/gcs-storage.d.ts.map +0 -1
- package/dist/integrations/providers/impls/gcs-storage.js.map +0 -1
- package/dist/integrations/providers/impls/gmail-inbound.d.ts +0 -27
- package/dist/integrations/providers/impls/gmail-inbound.d.ts.map +0 -1
- package/dist/integrations/providers/impls/gmail-inbound.js.map +0 -1
- package/dist/integrations/providers/impls/gmail-outbound.d.ts +0 -19
- package/dist/integrations/providers/impls/gmail-outbound.d.ts.map +0 -1
- package/dist/integrations/providers/impls/gmail-outbound.js.map +0 -1
- package/dist/integrations/providers/impls/google-calendar.d.ts +0 -24
- package/dist/integrations/providers/impls/google-calendar.d.ts.map +0 -1
- package/dist/integrations/providers/impls/google-calendar.js.map +0 -1
- package/dist/integrations/providers/impls/index.d.ts +0 -15
- package/dist/integrations/providers/impls/mistral-embedding.d.ts +0 -24
- package/dist/integrations/providers/impls/mistral-embedding.d.ts.map +0 -1
- package/dist/integrations/providers/impls/mistral-embedding.js.map +0 -1
- package/dist/integrations/providers/impls/mistral-llm.d.ts +0 -32
- package/dist/integrations/providers/impls/mistral-llm.d.ts.map +0 -1
- package/dist/integrations/providers/impls/mistral-llm.js.map +0 -1
- package/dist/integrations/providers/impls/postmark-email.d.ts +0 -20
- package/dist/integrations/providers/impls/postmark-email.d.ts.map +0 -1
- package/dist/integrations/providers/impls/postmark-email.js.map +0 -1
- package/dist/integrations/providers/impls/powens-client.d.ts +0 -125
- package/dist/integrations/providers/impls/powens-client.d.ts.map +0 -1
- package/dist/integrations/providers/impls/powens-client.js.map +0 -1
- package/dist/integrations/providers/impls/powens-openbanking.d.ts +0 -28
- package/dist/integrations/providers/impls/powens-openbanking.d.ts.map +0 -1
- package/dist/integrations/providers/impls/powens-openbanking.js.map +0 -1
- package/dist/integrations/providers/impls/provider-factory.d.ts +0 -27
- package/dist/integrations/providers/impls/provider-factory.d.ts.map +0 -1
- package/dist/integrations/providers/impls/provider-factory.js.map +0 -1
- package/dist/integrations/providers/impls/qdrant-vector.d.ts +0 -25
- package/dist/integrations/providers/impls/qdrant-vector.d.ts.map +0 -1
- package/dist/integrations/providers/impls/qdrant-vector.js.map +0 -1
- package/dist/integrations/providers/impls/stripe-payments.d.ts +0 -29
- package/dist/integrations/providers/impls/stripe-payments.d.ts.map +0 -1
- package/dist/integrations/providers/impls/stripe-payments.js.map +0 -1
- package/dist/integrations/providers/impls/twilio-sms.d.ts +0 -21
- package/dist/integrations/providers/impls/twilio-sms.d.ts.map +0 -1
- package/dist/integrations/providers/impls/twilio-sms.js.map +0 -1
- package/dist/integrations/providers/index.d.ts +0 -36
- package/dist/integrations/providers/llm.d.ts +0 -83
- package/dist/integrations/providers/llm.d.ts.map +0 -1
- package/dist/integrations/providers/mistral.d.ts +0 -8
- package/dist/integrations/providers/mistral.d.ts.map +0 -1
- package/dist/integrations/providers/mistral.js.map +0 -1
- package/dist/integrations/providers/openbanking.d.ts +0 -129
- package/dist/integrations/providers/openbanking.d.ts.map +0 -1
- package/dist/integrations/providers/payments.d.ts +0 -110
- package/dist/integrations/providers/payments.d.ts.map +0 -1
- package/dist/integrations/providers/postmark.d.ts +0 -8
- package/dist/integrations/providers/postmark.d.ts.map +0 -1
- package/dist/integrations/providers/postmark.js.map +0 -1
- package/dist/integrations/providers/powens.d.ts +0 -8
- package/dist/integrations/providers/powens.d.ts.map +0 -1
- package/dist/integrations/providers/powens.js.map +0 -1
- package/dist/integrations/providers/qdrant.d.ts +0 -8
- package/dist/integrations/providers/qdrant.d.ts.map +0 -1
- package/dist/integrations/providers/qdrant.js.map +0 -1
- package/dist/integrations/providers/sms.d.ts +0 -35
- package/dist/integrations/providers/sms.d.ts.map +0 -1
- package/dist/integrations/providers/storage.d.ts +0 -61
- package/dist/integrations/providers/storage.d.ts.map +0 -1
- package/dist/integrations/providers/stripe.d.ts +0 -8
- package/dist/integrations/providers/stripe.d.ts.map +0 -1
- package/dist/integrations/providers/stripe.js.map +0 -1
- package/dist/integrations/providers/twilio-sms.d.ts +0 -8
- package/dist/integrations/providers/twilio-sms.d.ts.map +0 -1
- package/dist/integrations/providers/twilio-sms.js.map +0 -1
- package/dist/integrations/providers/vector-store.d.ts +0 -44
- package/dist/integrations/providers/vector-store.d.ts.map +0 -1
- package/dist/integrations/providers/voice.d.ts +0 -35
- package/dist/integrations/providers/voice.d.ts.map +0 -1
- package/dist/integrations/runtime.d.ts +0 -100
- package/dist/integrations/runtime.d.ts.map +0 -1
- package/dist/integrations/runtime.js.map +0 -1
- package/dist/integrations/secrets/env-secret-provider.d.ts +0 -32
- package/dist/integrations/secrets/env-secret-provider.d.ts.map +0 -1
- package/dist/integrations/secrets/env-secret-provider.js.map +0 -1
- package/dist/integrations/secrets/gcp-secret-manager.d.ts +0 -33
- package/dist/integrations/secrets/gcp-secret-manager.d.ts.map +0 -1
- package/dist/integrations/secrets/gcp-secret-manager.js.map +0 -1
- package/dist/integrations/secrets/index.d.ts +0 -5
- package/dist/integrations/secrets/manager.d.ts +0 -48
- package/dist/integrations/secrets/manager.d.ts.map +0 -1
- package/dist/integrations/secrets/manager.js.map +0 -1
- package/dist/integrations/secrets/provider.d.ts +0 -53
- package/dist/integrations/secrets/provider.d.ts.map +0 -1
- package/dist/integrations/secrets/provider.js.map +0 -1
- package/dist/integrations/spec.d.ts +0 -80
- package/dist/integrations/spec.d.ts.map +0 -1
- package/dist/integrations/spec.js.map +0 -1
- package/dist/jobs/gcp-cloud-tasks.d.ts +0 -42
- package/dist/jobs/gcp-cloud-tasks.d.ts.map +0 -1
- package/dist/jobs/gcp-cloud-tasks.js.map +0 -1
- package/dist/jobs/gcp-pubsub.d.ts +0 -26
- package/dist/jobs/gcp-pubsub.d.ts.map +0 -1
- package/dist/jobs/gcp-pubsub.js.map +0 -1
- package/dist/jobs/handlers/gmail-sync-handler.d.ts +0 -10
- package/dist/jobs/handlers/gmail-sync-handler.d.ts.map +0 -1
- package/dist/jobs/handlers/gmail-sync-handler.js.map +0 -1
- package/dist/jobs/handlers/index.d.ts +0 -3
- package/dist/jobs/handlers/storage-document-handler.d.ts +0 -13
- package/dist/jobs/handlers/storage-document-handler.d.ts.map +0 -1
- package/dist/jobs/handlers/storage-document-handler.js.map +0 -1
- package/dist/jobs/index.d.ts +0 -7
- package/dist/jobs/memory-queue.d.ts +0 -19
- package/dist/jobs/memory-queue.d.ts.map +0 -1
- package/dist/jobs/memory-queue.js.map +0 -1
- package/dist/jobs/queue.d.ts +0 -27
- package/dist/jobs/queue.d.ts.map +0 -1
- package/dist/jsonschema.d.ts +0 -27
- package/dist/jsonschema.d.ts.map +0 -1
- package/dist/jsonschema.js.map +0 -1
- package/dist/knowledge/binding.d.ts +0 -26
- package/dist/knowledge/binding.d.ts.map +0 -1
- package/dist/knowledge/contracts.d.ts +0 -317
- package/dist/knowledge/contracts.d.ts.map +0 -1
- package/dist/knowledge/contracts.js.map +0 -1
- package/dist/knowledge/index.d.ts +0 -10
- package/dist/knowledge/ingestion/document-processor.d.ts +0 -25
- package/dist/knowledge/ingestion/document-processor.d.ts.map +0 -1
- package/dist/knowledge/ingestion/document-processor.js.map +0 -1
- package/dist/knowledge/ingestion/embedding-service.d.ts +0 -13
- package/dist/knowledge/ingestion/embedding-service.d.ts.map +0 -1
- package/dist/knowledge/ingestion/embedding-service.js.map +0 -1
- package/dist/knowledge/ingestion/gmail-adapter.d.ts +0 -19
- package/dist/knowledge/ingestion/gmail-adapter.d.ts.map +0 -1
- package/dist/knowledge/ingestion/gmail-adapter.js.map +0 -1
- package/dist/knowledge/ingestion/index.d.ts +0 -6
- package/dist/knowledge/ingestion/storage-adapter.d.ts +0 -16
- package/dist/knowledge/ingestion/storage-adapter.d.ts.map +0 -1
- package/dist/knowledge/ingestion/storage-adapter.js.map +0 -1
- package/dist/knowledge/ingestion/vector-indexer.d.ts +0 -19
- package/dist/knowledge/ingestion/vector-indexer.d.ts.map +0 -1
- package/dist/knowledge/ingestion/vector-indexer.js.map +0 -1
- package/dist/knowledge/query/index.d.ts +0 -2
- package/dist/knowledge/query/service.d.ts +0 -30
- package/dist/knowledge/query/service.d.ts.map +0 -1
- package/dist/knowledge/query/service.js.map +0 -1
- package/dist/knowledge/runtime.d.ts +0 -33
- package/dist/knowledge/runtime.d.ts.map +0 -1
- package/dist/knowledge/runtime.js.map +0 -1
- package/dist/knowledge/source.d.ts +0 -33
- package/dist/knowledge/source.d.ts.map +0 -1
- package/dist/knowledge/spaces/email-threads.d.ts +0 -8
- package/dist/knowledge/spaces/email-threads.d.ts.map +0 -1
- package/dist/knowledge/spaces/email-threads.js.map +0 -1
- package/dist/knowledge/spaces/financial-docs.d.ts +0 -8
- package/dist/knowledge/spaces/financial-docs.d.ts.map +0 -1
- package/dist/knowledge/spaces/financial-docs.js.map +0 -1
- package/dist/knowledge/spaces/financial-overview.d.ts +0 -8
- package/dist/knowledge/spaces/financial-overview.d.ts.map +0 -1
- package/dist/knowledge/spaces/financial-overview.js.map +0 -1
- package/dist/knowledge/spaces/index.d.ts +0 -7
- package/dist/knowledge/spaces/product-canon.d.ts +0 -8
- package/dist/knowledge/spaces/product-canon.d.ts.map +0 -1
- package/dist/knowledge/spaces/product-canon.js.map +0 -1
- package/dist/knowledge/spaces/support-faq.d.ts +0 -8
- package/dist/knowledge/spaces/support-faq.d.ts.map +0 -1
- package/dist/knowledge/spaces/support-faq.js.map +0 -1
- package/dist/knowledge/spaces/uploaded-docs.d.ts +0 -8
- package/dist/knowledge/spaces/uploaded-docs.d.ts.map +0 -1
- package/dist/knowledge/spaces/uploaded-docs.js.map +0 -1
- package/dist/knowledge/spec.d.ts +0 -53
- package/dist/knowledge/spec.d.ts.map +0 -1
- package/dist/knowledge/spec.js.map +0 -1
- package/dist/markdown.d.ts +0 -22
- package/dist/markdown.d.ts.map +0 -1
- package/dist/markdown.js.map +0 -1
- package/dist/migrations.d.ts +0 -53
- package/dist/migrations.d.ts.map +0 -1
- package/dist/migrations.js.map +0 -1
- package/dist/onboarding-base.d.ts +0 -138
- package/dist/onboarding-base.d.ts.map +0 -1
- package/dist/onboarding-base.js.map +0 -1
- package/dist/ownership.d.ts +0 -76
- package/dist/ownership.d.ts.map +0 -1
- package/dist/ownership.js.map +0 -1
- package/dist/policy/engine.d.ts +0 -40
- package/dist/policy/engine.d.ts.map +0 -1
- package/dist/policy/engine.js.map +0 -1
- package/dist/policy/opa-adapter.d.ts +0 -46
- package/dist/policy/opa-adapter.d.ts.map +0 -1
- package/dist/policy/opa-adapter.js.map +0 -1
- package/dist/policy/spec.d.ts +0 -115
- package/dist/policy/spec.d.ts.map +0 -1
- package/dist/policy/spec.js.map +0 -1
- package/dist/presentations.backcompat.d.ts +0 -8
- package/dist/presentations.backcompat.d.ts.map +0 -1
- package/dist/presentations.backcompat.js.map +0 -1
- package/dist/presentations.d.ts +0 -97
- package/dist/presentations.d.ts.map +0 -1
- package/dist/presentations.js.map +0 -1
- package/dist/presentations.v2.d.ts +0 -96
- package/dist/presentations.v2.d.ts.map +0 -1
- package/dist/presentations.v2.js.map +0 -1
- package/dist/prompt.d.ts +0 -61
- package/dist/prompt.d.ts.map +0 -1
- package/dist/prompt.js.map +0 -1
- package/dist/promptRegistry.d.ts +0 -16
- package/dist/promptRegistry.d.ts.map +0 -1
- package/dist/promptRegistry.js.map +0 -1
- package/dist/regenerator/adapters.d.ts +0 -20
- package/dist/regenerator/adapters.d.ts.map +0 -1
- package/dist/regenerator/executor.d.ts +0 -71
- package/dist/regenerator/executor.d.ts.map +0 -1
- package/dist/regenerator/executor.js.map +0 -1
- package/dist/regenerator/index.d.ts +0 -7
- package/dist/regenerator/service.d.ts +0 -34
- package/dist/regenerator/service.d.ts.map +0 -1
- package/dist/regenerator/service.js.map +0 -1
- package/dist/regenerator/sinks.d.ts +0 -27
- package/dist/regenerator/sinks.d.ts.map +0 -1
- package/dist/regenerator/sinks.js.map +0 -1
- package/dist/regenerator/types.d.ts +0 -108
- package/dist/regenerator/types.d.ts.map +0 -1
- package/dist/regenerator/utils.d.ts +0 -10
- package/dist/regenerator/utils.d.ts.map +0 -1
- package/dist/regenerator/utils.js.map +0 -1
- package/dist/registry.d.ts +0 -73
- package/dist/registry.d.ts.map +0 -1
- package/dist/registry.js.map +0 -1
- package/dist/resources.d.ts +0 -65
- package/dist/resources.d.ts.map +0 -1
- package/dist/resources.js.map +0 -1
- package/dist/schema/dist/EnumType.js +0 -1
- package/dist/schema/dist/FieldType.js +0 -2
- package/dist/schema/dist/FieldType.js.map +0 -1
- package/dist/schema/dist/ScalarTypeEnum.js +0 -2
- package/dist/schema/dist/ScalarTypeEnum.js.map +0 -1
- package/dist/schema/dist/SchemaModel.js +0 -2
- package/dist/schema/dist/SchemaModel.js.map +0 -1
- package/dist/schema/dist/index.js +0 -1
- package/dist/server/graphql-pothos.d.ts +0 -32
- package/dist/server/graphql-pothos.d.ts.map +0 -1
- package/dist/server/graphql-pothos.js.map +0 -1
- package/dist/server/graphql-schema-export.d.ts +0 -7
- package/dist/server/graphql-schema-export.d.ts.map +0 -1
- package/dist/server/graphql-schema-export.js +0 -2
- package/dist/server/graphql-schema-export.js.map +0 -1
- package/dist/server/index.d.ts +0 -9
- package/dist/server/provider-mcp.d.ts +0 -52
- package/dist/server/provider-mcp.d.ts.map +0 -1
- package/dist/server/provider-mcp.js.map +0 -1
- package/dist/server/rest-elysia.d.ts +0 -41
- package/dist/server/rest-elysia.d.ts.map +0 -1
- package/dist/server/rest-elysia.js.map +0 -1
- package/dist/server/rest-express.d.ts +0 -17
- package/dist/server/rest-express.d.ts.map +0 -1
- package/dist/server/rest-express.js.map +0 -1
- package/dist/server/rest-generic.d.ts +0 -33
- package/dist/server/rest-generic.d.ts.map +0 -1
- package/dist/server/rest-generic.js.map +0 -1
- package/dist/server/rest-next-app.d.ts +0 -36
- package/dist/server/rest-next-app.d.ts.map +0 -1
- package/dist/server/rest-next-app.js.map +0 -1
- package/dist/server/rest-next-mcp.d.ts +0 -12
- package/dist/server/rest-next-mcp.d.ts.map +0 -1
- package/dist/server/rest-next-mcp.js.map +0 -1
- package/dist/server/rest-next-pages.d.ts +0 -10
- package/dist/server/rest-next-pages.d.ts.map +0 -1
- package/dist/server/rest-next-pages.js.map +0 -1
- package/dist/spec.d.ts +0 -172
- package/dist/spec.d.ts.map +0 -1
- package/dist/spec.js.map +0 -1
- package/dist/telemetry/anomaly.d.ts +0 -28
- package/dist/telemetry/anomaly.d.ts.map +0 -1
- package/dist/telemetry/anomaly.js.map +0 -1
- package/dist/telemetry/index.d.ts +0 -4
- package/dist/telemetry/spec.d.ts +0 -99
- package/dist/telemetry/spec.d.ts.map +0 -1
- package/dist/telemetry/spec.js.map +0 -1
- package/dist/telemetry/tracker.d.ts +0 -52
- package/dist/telemetry/tracker.d.ts.map +0 -1
- package/dist/telemetry/tracker.js.map +0 -1
- package/dist/tests/index.d.ts +0 -3
- package/dist/tests/runner.d.ts +0 -44
- package/dist/tests/runner.d.ts.map +0 -1
- package/dist/tests/runner.js.map +0 -1
- package/dist/tests/spec.d.ts +0 -90
- package/dist/tests/spec.d.ts.map +0 -1
- package/dist/tests/spec.js.map +0 -1
- package/dist/themes.d.ts +0 -56
- package/dist/themes.d.ts.map +0 -1
- package/dist/themes.js.map +0 -1
- package/dist/translations/catalog.d.ts +0 -29
- package/dist/translations/catalog.d.ts.map +0 -1
- package/dist/translations/tenant.d.ts +0 -16
- package/dist/translations/tenant.d.ts.map +0 -1
- package/dist/types/all.d.ts +0 -60
- package/dist/types.d.ts +0 -89
- package/dist/types.d.ts.map +0 -1
- package/dist/workflow/adapters/db-adapter.d.ts +0 -35
- package/dist/workflow/adapters/db-adapter.d.ts.map +0 -1
- package/dist/workflow/adapters/db-adapter.js.map +0 -1
- package/dist/workflow/adapters/file-adapter.d.ts +0 -15
- package/dist/workflow/adapters/file-adapter.d.ts.map +0 -1
- package/dist/workflow/adapters/file-adapter.js.map +0 -1
- package/dist/workflow/adapters/index.d.ts +0 -4
- package/dist/workflow/adapters/memory-store.d.ts +0 -19
- package/dist/workflow/adapters/memory-store.d.ts.map +0 -1
- package/dist/workflow/adapters/memory-store.js.map +0 -1
- package/dist/workflow/expression.d.ts +0 -10
- package/dist/workflow/expression.d.ts.map +0 -1
- package/dist/workflow/expression.js.map +0 -1
- package/dist/workflow/index.d.ts +0 -10
- package/dist/workflow/runner.d.ts +0 -75
- package/dist/workflow/runner.d.ts.map +0 -1
- package/dist/workflow/runner.js.map +0 -1
- package/dist/workflow/sla-monitor.d.ts +0 -21
- package/dist/workflow/sla-monitor.d.ts.map +0 -1
- package/dist/workflow/sla-monitor.js.map +0 -1
- package/dist/workflow/spec.d.ts +0 -100
- package/dist/workflow/spec.d.ts.map +0 -1
- package/dist/workflow/spec.js.map +0 -1
- package/dist/workflow/state.d.ts +0 -36
- package/dist/workflow/state.d.ts.map +0 -1
- package/dist/workflow/validation.d.ts +0 -29
- package/dist/workflow/validation.d.ts.map +0 -1
- package/dist/workflow/validation.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","names":["missing: MissingReference[]","merged: Record<string, SpecPointer>","binding: TelemetryBinding","localePreferenceOrder: string[]","appName: string | undefined","assets","assets: ResolvedBranding['assets']","colors: ResolvedBranding['colors']","resolved: ResolvedIntegration[]","resolved: CapabilitySpec[]","resolved: FeatureModuleSpec[]","resolved: Record<string, TSpec>","resolved: PolicySpec[]","themeMissing: MissingReference[]","fallbacks: ThemeSpec[]","telemetryMissing: MissingReference[]","resolved: ExperimentSpec[]"],"sources":["../../src/app-config/runtime.ts"],"sourcesContent":["import type {\n CapabilityRef,\n CapabilityRegistry,\n CapabilitySpec,\n} from '../capabilities';\nimport type {\n FeatureRegistry,\n FeatureModuleSpec,\n FeatureRef,\n} from '../features';\nimport type { DataViewRegistry, DataViewSpec } from '../data-views';\nimport type { WorkflowRegistry, WorkflowSpec } from '../workflow/spec';\nimport type { PolicyRef, PolicyRegistry, PolicySpec } from '../policy/spec';\nimport type { ThemeRegistry, ThemeSpec } from '../themes';\nimport type { TelemetryRegistry, TelemetrySpec } from '../telemetry/spec';\nimport type {\n ExperimentRef,\n ExperimentRegistry,\n ExperimentSpec,\n} from '../experiments/spec';\nimport type {\n IntegrationSpec,\n IntegrationSpecRegistry,\n} from '../integrations/spec';\nimport type { IntegrationConnection } from '../integrations/connection';\nimport type { AppIntegrationBinding } from '../integrations/binding';\nimport type {\n KnowledgeSpaceSpec,\n KnowledgeSpaceRegistry,\n} from '../knowledge/spec';\nimport type { KnowledgeSourceConfig } from '../knowledge/source';\nimport type { AppKnowledgeBinding } from '../knowledge/binding';\nimport type {\n BrandingAssetRef,\n BrandingDefaults,\n ResolvedBranding,\n TenantBrandingAsset,\n TenantBrandingConfig,\n} from './branding';\nimport type { Locale, TranslationEntry } from '../translations/catalog';\nimport type {\n AppBlueprintSpec,\n AppIntegrationSlot,\n AppRouteConfig,\n AppThemeBinding,\n FeatureFlagState,\n SpecPointer,\n TelemetryBinding,\n TenantAppConfig,\n TenantRouteOverride,\n TenantSpecOverride,\n TranslationCatalogPointer,\n} from './spec';\n\nexport interface ResolvedIntegration {\n slot: AppIntegrationSlot;\n binding: AppIntegrationBinding;\n connection: IntegrationConnection;\n spec: IntegrationSpec;\n}\n\nexport interface ResolvedKnowledge {\n binding: AppKnowledgeBinding;\n space: KnowledgeSpaceSpec;\n sources: KnowledgeSourceConfig[];\n}\n\nexport interface ResolvedTranslation {\n defaultLocale: Locale;\n supportedLocales: Locale[];\n blueprintCatalog?: TranslationCatalogPointer;\n tenantOverrides: TranslationEntry[];\n}\n\nexport interface ResolvedAppConfig {\n appId: string;\n tenantId: string;\n environment?: string;\n blueprintName: string;\n blueprintVersion: number;\n configVersion: number;\n capabilities: {\n enabled: CapabilityRef[];\n disabled: CapabilityRef[];\n };\n features: {\n include: FeatureRef[];\n exclude: FeatureRef[];\n };\n dataViews: Record<string, SpecPointer>;\n workflows: Record<string, SpecPointer>;\n policies: PolicyRef[];\n theme?: AppThemeBinding;\n telemetry?: TelemetryBinding;\n experiments: {\n catalog: ExperimentRef[];\n active: ExperimentRef[];\n paused: ExperimentRef[];\n };\n featureFlags: FeatureFlagState[];\n routes: AppRouteConfig[];\n integrations: ResolvedIntegration[];\n knowledge: ResolvedKnowledge[];\n translation: ResolvedTranslation;\n branding: ResolvedBranding;\n notes?: string;\n}\n\nexport interface AppComposition {\n resolved: ResolvedAppConfig;\n capabilities: CapabilitySpec[];\n features: FeatureModuleSpec[];\n dataViews: Record<string, DataViewSpec>;\n workflows: Record<string, WorkflowSpec>;\n policies: PolicySpec[];\n theme?: ThemeSpec;\n themeFallbacks: ThemeSpec[];\n telemetry?: TelemetrySpec;\n experiments: {\n active: ExperimentSpec[];\n paused: ExperimentSpec[];\n };\n integrations: ResolvedIntegration[];\n knowledge: ResolvedKnowledge[];\n missing: MissingReference[];\n}\n\nexport interface MissingReference {\n type:\n | 'capability'\n | 'feature'\n | 'dataView'\n | 'workflow'\n | 'policy'\n | 'theme'\n | 'telemetry'\n | 'experiment'\n | 'integrationConnection'\n | 'integrationSpec'\n | 'integrationSlot'\n | 'knowledgeSpace'\n | 'knowledgeSource';\n identifier: string;\n}\n\nexport interface ResolveAppConfigDeps {\n integrationSpecs?: IntegrationSpecRegistry;\n integrationConnections?: IntegrationConnection[];\n knowledgeSpaces?: KnowledgeSpaceRegistry;\n knowledgeSources?: KnowledgeSourceConfig[];\n}\n\nexport interface AppCompositionDeps extends ResolveAppConfigDeps {\n capabilities?: CapabilityRegistry;\n features?: FeatureRegistry;\n dataViews?: DataViewRegistry;\n workflows?: WorkflowRegistry;\n policies?: PolicyRegistry;\n themes?: ThemeRegistry;\n telemetry?: TelemetryRegistry;\n experiments?: ExperimentRegistry;\n}\n\nexport interface ComposeOptions {\n strict?: boolean;\n}\n\nexport function resolveAppConfig(\n blueprint: AppBlueprintSpec,\n tenant: TenantAppConfig,\n deps: ResolveAppConfigDeps = {}\n): ResolvedAppConfig {\n const capabilities = mergeCapabilities(\n blueprint.capabilities,\n tenant.capabilities\n );\n const features = mergeFeatures(blueprint.features, tenant.features);\n const dataViews = mergeMappings(\n blueprint.dataViews ?? {},\n tenant.dataViewOverrides\n );\n const workflows = mergeMappings(\n blueprint.workflows ?? {},\n tenant.workflowOverrides\n );\n const policies = mergePolicies(\n blueprint.policies ?? [],\n tenant.additionalPolicies ?? []\n );\n const theme = mergeTheme(blueprint.theme, tenant.themeOverride);\n const telemetry = mergeTelemetry(\n blueprint.telemetry,\n tenant.telemetryOverride\n );\n const experiments = mergeExperiments(\n blueprint.experiments,\n tenant.experiments\n );\n const featureFlags = mergeFeatureFlags(\n blueprint.featureFlags ?? [],\n tenant.featureFlags ?? []\n );\n const routes = mergeRoutes(\n blueprint.routes ?? [],\n tenant.routeOverrides ?? []\n );\n const { resolved: integrations } = evaluateIntegrationSlots(\n blueprint.integrationSlots,\n tenant.integrations,\n deps.integrationConnections,\n deps.integrationSpecs\n );\n const knowledge = resolveKnowledgeBindings(\n tenant.knowledge,\n deps.knowledgeSpaces,\n deps.knowledgeSources\n );\n const branding = resolveBranding(blueprint.branding, tenant);\n const translation = resolveTranslation(\n blueprint.translationCatalog,\n tenant.locales,\n tenant.translationOverrides\n );\n\n return {\n appId: blueprint.meta.appId,\n tenantId: tenant.meta.tenantId,\n environment: tenant.meta.environment,\n blueprintName: blueprint.meta.name,\n blueprintVersion: blueprint.meta.version,\n configVersion: tenant.meta.version,\n capabilities,\n features,\n dataViews,\n workflows,\n policies,\n theme,\n telemetry,\n experiments,\n featureFlags,\n routes,\n integrations,\n knowledge,\n translation,\n branding,\n notes: tenant.notes ?? blueprint.notes,\n };\n}\n\nexport function composeAppConfig(\n blueprint: AppBlueprintSpec,\n tenant: TenantAppConfig,\n deps: AppCompositionDeps,\n options: ComposeOptions = {}\n): AppComposition {\n const resolved = resolveAppConfig(blueprint, tenant, deps);\n const missing: MissingReference[] = [];\n\n const integrationEvaluation = evaluateIntegrationSlots(\n blueprint.integrationSlots,\n tenant.integrations,\n deps.integrationConnections,\n deps.integrationSpecs\n );\n resolved.integrations = integrationEvaluation.resolved;\n missing.push(...integrationEvaluation.missing);\n missing.push(\n ...collectMissingKnowledge(\n tenant.knowledge ?? [],\n deps.knowledgeSpaces,\n deps.knowledgeSources\n )\n );\n\n const capabilities = resolveCapabilityRefs(\n resolved.capabilities.enabled,\n deps.capabilities,\n missing\n );\n\n const features = resolveFeatureRefs(\n resolved.features.include,\n deps.features,\n missing\n );\n\n const dataViews = resolvePointerRecord(\n resolved.dataViews,\n deps.dataViews,\n 'dataView',\n missing\n );\n\n const workflows = resolvePointerRecord(\n resolved.workflows,\n deps.workflows,\n 'workflow',\n missing\n );\n\n const policies = resolvePolicies(resolved.policies, deps.policies, missing);\n\n const { theme, fallbacks, themeMissing } = resolveThemeBinding(\n resolved.theme,\n deps.themes\n );\n missing.push(...themeMissing);\n\n const { telemetry, telemetryMissing } = resolveTelemetryBinding(\n resolved.telemetry,\n deps.telemetry\n );\n missing.push(...telemetryMissing);\n\n const experiments = resolveExperimentsSpecs(\n resolved.experiments,\n deps.experiments,\n missing\n );\n\n if (options.strict && missing.length > 0) {\n const reasons = missing\n .map((item) => `${item.type}:${item.identifier}`)\n .join(', ');\n throw new Error(`composeAppConfig: missing references -> ${reasons}`);\n }\n\n return {\n resolved,\n capabilities,\n features,\n dataViews,\n workflows,\n policies,\n theme,\n themeFallbacks: fallbacks,\n telemetry,\n experiments,\n integrations: resolved.integrations,\n knowledge: resolved.knowledge,\n missing,\n };\n}\n\nfunction mergeCapabilities(\n blueprint: AppBlueprintSpec['capabilities'],\n tenant: TenantAppConfig['capabilities']\n): { enabled: CapabilityRef[]; disabled: CapabilityRef[] } {\n const enabled = dedupeRefs(\n [...(blueprint?.enabled ?? []), ...(tenant?.enable ?? [])],\n capabilityKey\n );\n const disabled = dedupeRefs(\n [...(blueprint?.disabled ?? []), ...(tenant?.disable ?? [])],\n capabilityKey\n );\n const disabledKeys = new Set(disabled.map(capabilityKey));\n const filteredEnabled = enabled.filter(\n (ref) => !disabledKeys.has(capabilityKey(ref))\n );\n return { enabled: filteredEnabled, disabled };\n}\n\nfunction mergeFeatures(\n blueprint: AppBlueprintSpec['features'],\n tenant: TenantAppConfig['features']\n): { include: FeatureRef[]; exclude: FeatureRef[] } {\n const include = dedupeRefs(\n [...(blueprint?.include ?? []), ...(tenant?.include ?? [])],\n featureKey\n );\n const exclude = dedupeRefs(\n [...(blueprint?.exclude ?? []), ...(tenant?.exclude ?? [])],\n featureKey\n );\n const excludeSet = new Set(exclude.map(featureKey));\n const filteredInclude = include.filter(\n (ref) => !excludeSet.has(featureKey(ref))\n );\n return { include: filteredInclude, exclude };\n}\n\nfunction mergeMappings(\n blueprint: Record<string, SpecPointer>,\n overrides: TenantSpecOverride[] | undefined\n): Record<string, SpecPointer> {\n const merged: Record<string, SpecPointer> = { ...blueprint };\n if (!overrides) return merged;\n for (const override of overrides) {\n if (!override) continue;\n if (!override.pointer) {\n delete merged[override.slot];\n } else {\n merged[override.slot] = override.pointer;\n }\n }\n return merged;\n}\n\nfunction mergePolicies(\n blueprint: PolicyRef[],\n additional: PolicyRef[]\n): PolicyRef[] {\n return dedupeRefs([...blueprint, ...additional], policyKey);\n}\n\nfunction mergeTheme(\n blueprint: AppThemeBinding | undefined,\n override: TenantAppConfig['themeOverride']\n): AppThemeBinding | undefined {\n if (!blueprint && !override) return undefined;\n const primary = override?.primary ?? blueprint?.primary;\n if (!primary) return undefined;\n const fallbacks = override?.fallbacks ?? blueprint?.fallbacks ?? [];\n return { primary, fallbacks };\n}\n\nfunction mergeTelemetry(\n blueprint: TelemetryBinding | undefined,\n override: TenantAppConfig['telemetryOverride']\n): TelemetryBinding | undefined {\n if (!blueprint && !override) return undefined;\n const binding: TelemetryBinding = {\n spec: blueprint?.spec,\n disabledEvents: blueprint?.disabledEvents\n ? [...blueprint.disabledEvents]\n : undefined,\n samplingOverrides: blueprint?.samplingOverrides\n ? { ...blueprint.samplingOverrides }\n : undefined,\n };\n if (override?.spec !== undefined) {\n binding.spec = override.spec ?? undefined;\n }\n if (override?.disabledEvents) {\n binding.disabledEvents = dedupeStrings([\n ...(binding.disabledEvents ?? []),\n ...override.disabledEvents,\n ]);\n }\n if (override?.samplingOverrides) {\n binding.samplingOverrides = {\n ...(binding.samplingOverrides ?? {}),\n ...override.samplingOverrides,\n };\n }\n if (!binding.spec && !binding.disabledEvents?.length) {\n return undefined;\n }\n return binding;\n}\n\nfunction mergeExperiments(\n blueprint: AppBlueprintSpec['experiments'],\n tenant: TenantAppConfig['experiments']\n): {\n catalog: ExperimentRef[];\n active: ExperimentRef[];\n paused: ExperimentRef[];\n} {\n const defaultActive = blueprint?.active ?? [];\n const defaultPaused = blueprint?.paused ?? [];\n const tenantActive = tenant?.active;\n const tenantPaused = tenant?.paused;\n\n const activeSource =\n tenantActive && tenantActive.length > 0 ? tenantActive : defaultActive;\n const pausedSource =\n tenantPaused && tenantPaused.length > 0 ? tenantPaused : defaultPaused;\n\n const active = dedupeRefs(activeSource, experimentKey);\n let paused = dedupeRefs(pausedSource, experimentKey);\n const activeKeys = new Set(active.map(experimentKey));\n paused = paused.filter((ref) => !activeKeys.has(experimentKey(ref)));\n\n const catalog = dedupeRefs(\n [\n ...defaultActive,\n ...defaultPaused,\n ...(tenantActive ?? []),\n ...(tenantPaused ?? []),\n ],\n experimentKey\n );\n\n return { catalog, active, paused };\n}\n\nfunction resolveBranding(\n defaults: BrandingDefaults | undefined,\n tenant: TenantAppConfig\n): ResolvedBranding {\n const override = tenant.branding;\n const tenantMeta = tenant.meta;\n const baseDomain = 'app.localhost';\n const domain =\n override?.customDomain ??\n (override?.subdomain\n ? `${override.subdomain}.${baseDomain}`\n : `${tenantMeta.tenantId}.${baseDomain}`);\n\n const localePreferenceOrder: string[] = [];\n if (tenant.locales?.defaultLocale) {\n localePreferenceOrder.push(tenant.locales.defaultLocale);\n }\n if (override?.appName) {\n localePreferenceOrder.push('default', 'en');\n }\n\n let appName: string | undefined;\n if (override?.appName) {\n for (const key of localePreferenceOrder) {\n const candidate = override.appName[key];\n if (candidate) {\n appName = candidate;\n break;\n }\n }\n if (!appName) {\n const [, firstValue] = Object.entries(override.appName)[0] ?? [];\n if (typeof firstValue === 'string') {\n appName = firstValue;\n }\n }\n }\n if (!appName) {\n appName = defaults?.appNameKey ?? tenantMeta.appId;\n }\n\n const assetEntries = new Map<BrandingAssetRef['type'], string | undefined>();\n\n const applyAssets = (assets?: (BrandingAssetRef | TenantBrandingAsset)[]) => {\n if (!assets) return;\n for (const asset of assets) {\n if (!asset?.type) continue;\n if ('url' in asset && asset.url) {\n assetEntries.set(asset.type, asset.url);\n }\n }\n };\n\n applyAssets(defaults?.assets);\n applyAssets(override?.assets);\n\n const assets: ResolvedBranding['assets'] = {\n logo: assetEntries.get('logo'),\n logoDark: assetEntries.get('logo-dark'),\n favicon: assetEntries.get('favicon'),\n ogImage: assetEntries.get('og-image'),\n };\n\n const colors: ResolvedBranding['colors'] = {\n primary:\n override?.colors?.primary ?? defaults?.colorTokens?.primary ?? '#1f2937',\n secondary:\n override?.colors?.secondary ??\n defaults?.colorTokens?.secondary ??\n '#4b5563',\n };\n\n return {\n appName,\n assets,\n colors,\n domain,\n };\n}\n\nfunction resolveTranslation(\n catalogPointer: TranslationCatalogPointer | undefined,\n locales: TenantAppConfig['locales'],\n overrides: TenantAppConfig['translationOverrides']\n): ResolvedTranslation {\n const defaultLocale = locales?.defaultLocale ?? 'en';\n const enabled = locales?.enabledLocales ?? [];\n const supportedLocales = dedupeStrings([defaultLocale, ...enabled]);\n const entries = overrides?.entries ?? [];\n\n return {\n defaultLocale,\n supportedLocales,\n blueprintCatalog: catalogPointer,\n tenantOverrides: entries,\n };\n}\n\nfunction mergeFeatureFlags(\n blueprint: FeatureFlagState[],\n overrides: FeatureFlagState[]\n): FeatureFlagState[] {\n const merged = new Map<string, FeatureFlagState>();\n for (const flag of blueprint) {\n merged.set(flag.key, { ...flag });\n }\n for (const override of overrides) {\n merged.set(override.key, { ...override });\n }\n return [...merged.values()];\n}\n\nfunction mergeRoutes(\n blueprint: AppRouteConfig[],\n overrides: TenantRouteOverride[]\n): AppRouteConfig[] {\n const routes = new Map<string, AppRouteConfig>();\n for (const route of blueprint) {\n routes.set(route.path, { ...route });\n }\n for (const override of overrides) {\n const existing = routes.get(override.path) ?? { path: override.path };\n if (override.label !== undefined) {\n if (override.label === null) delete existing.label;\n else existing.label = override.label;\n }\n if (override.dataView !== undefined) {\n if (override.dataView === null) delete existing.dataView;\n else existing.dataView = override.dataView;\n }\n if (override.workflow !== undefined) {\n if (override.workflow === null) delete existing.workflow;\n else existing.workflow = override.workflow;\n }\n if (override.guard !== undefined) {\n if (override.guard === null) delete existing.guard;\n else existing.guard = override.guard;\n }\n if (override.featureFlag !== undefined) {\n if (override.featureFlag === null) delete existing.featureFlag;\n else existing.featureFlag = override.featureFlag;\n }\n if (override.experiment !== undefined) {\n if (override.experiment === null) delete existing.experiment;\n else existing.experiment = override.experiment;\n }\n routes.set(existing.path, existing);\n }\n return [...routes.values()];\n}\n\nfunction evaluateIntegrationSlots(\n slots: AppIntegrationSlot[] | undefined,\n bindings: AppIntegrationBinding[] | undefined,\n connections: IntegrationConnection[] | undefined,\n specs: IntegrationSpecRegistry | undefined\n): { resolved: ResolvedIntegration[]; missing: MissingReference[] } {\n const resolved: ResolvedIntegration[] = [];\n const missing: MissingReference[] = [];\n const missingKeys = new Set<string>();\n\n const recordMissing = (entry: MissingReference) => {\n const key = `${entry.type}:${entry.identifier}`;\n if (missingKeys.has(key)) return;\n missingKeys.add(key);\n missing.push(entry);\n };\n\n const slotList = slots ?? [];\n const slotById = new Map<string, AppIntegrationSlot>();\n for (const slot of slotList) {\n slotById.set(slot.slotId, slot);\n }\n\n const bindingsBySlot = new Map<string, AppIntegrationBinding[]>();\n for (const binding of bindings ?? []) {\n const slot = slotById.get(binding.slotId);\n if (!slot) {\n recordMissing({\n type: 'integrationSlot',\n identifier: `slot:${binding.slotId}`,\n });\n continue;\n }\n const entries = bindingsBySlot.get(binding.slotId);\n if (entries) entries.push(binding);\n else bindingsBySlot.set(binding.slotId, [binding]);\n }\n\n for (const slot of slotList) {\n const slotBindings = bindingsBySlot.get(slot.slotId) ?? [];\n if (slot.required && slotBindings.length === 0) {\n recordMissing({\n type: 'integrationSlot',\n identifier: `slot:${slot.slotId}`,\n });\n }\n }\n\n if (!connections || !specs) {\n return { resolved, missing };\n }\n\n const connectionById = new Map<string, IntegrationConnection>();\n for (const connection of connections) {\n connectionById.set(connection.meta.id, connection);\n }\n\n for (const slot of slotList) {\n const slotBindings = bindingsBySlot.get(slot.slotId) ?? [];\n if (slotBindings.length === 0) continue;\n\n const orderedBindings = [...slotBindings].sort((a, b) => {\n const aPriority = a.priority ?? Number.MAX_SAFE_INTEGER;\n const bPriority = b.priority ?? Number.MAX_SAFE_INTEGER;\n if (aPriority === bPriority) return 0;\n return aPriority < bPriority ? -1 : 1;\n });\n\n let slotResolved = false;\n for (const binding of orderedBindings) {\n const connection = connectionById.get(binding.connectionId);\n if (!connection) {\n recordMissing({\n type: 'integrationConnection',\n identifier: `connection:${binding.connectionId}`,\n });\n continue;\n }\n\n const spec = specs.get(\n connection.meta.integrationKey,\n connection.meta.integrationVersion\n );\n if (!spec) {\n recordMissing({\n type: 'integrationSpec',\n identifier: `spec:${connection.meta.integrationKey}.v${connection.meta.integrationVersion}`,\n });\n continue;\n }\n\n if (spec.meta.category !== slot.requiredCategory) {\n recordMissing({\n type: 'integrationSpec',\n identifier: `spec:${spec.meta.key}.category`,\n });\n continue;\n }\n\n if (!spec.supportedModes.includes(connection.ownershipMode)) {\n recordMissing({\n type: 'integrationSpec',\n identifier: `spec:${spec.meta.key}.mode:${connection.ownershipMode}`,\n });\n continue;\n }\n\n if (\n slot.allowedModes &&\n slot.allowedModes.length > 0 &&\n !slot.allowedModes.includes(connection.ownershipMode)\n ) {\n recordMissing({\n type: 'integrationConnection',\n identifier: `connection:${connection.meta.id}:mode`,\n });\n continue;\n }\n\n if (\n slot.requiredCapabilities &&\n !slot.requiredCapabilities.every((requirement) =>\n integrationProvidesCapability(spec, requirement)\n )\n ) {\n recordMissing({\n type: 'integrationSpec',\n identifier: `spec:${spec.meta.key}.capabilities`,\n });\n continue;\n }\n\n resolved.push({\n slot,\n binding,\n connection,\n spec,\n });\n slotResolved = true;\n break;\n }\n\n if (!slotResolved && slot.required) {\n recordMissing({\n type: 'integrationSlot',\n identifier: `slot:${slot.slotId}`,\n });\n }\n }\n\n return { resolved, missing };\n}\n\nfunction integrationProvidesCapability(\n spec: IntegrationSpec,\n required: CapabilityRef\n): boolean {\n return spec.capabilities.provides.some((capability) => {\n if (capability.key !== required.key) return false;\n if (required.version == null) return true;\n return capability.version === required.version;\n });\n}\n\nfunction resolveKnowledgeBindings(\n bindings: AppKnowledgeBinding[] | undefined,\n spaces: KnowledgeSpaceRegistry | undefined,\n sources: KnowledgeSourceConfig[] | undefined\n): ResolvedKnowledge[] {\n if (!bindings?.length || !spaces) return [];\n const sourceList = sources ?? [];\n return bindings\n .map((binding) => {\n const space = spaces.get(binding.spaceKey, binding.spaceVersion);\n if (!space) return null;\n const relevantSources = sourceList.filter((source) => {\n if (source.meta.spaceKey !== binding.spaceKey) return false;\n if (binding.spaceVersion != null) {\n return source.meta.spaceVersion === binding.spaceVersion;\n }\n return true;\n });\n return {\n binding,\n space,\n sources: relevantSources,\n };\n })\n .filter((entry): entry is ResolvedKnowledge => entry !== null);\n}\n\nfunction collectMissingKnowledge(\n bindings: AppKnowledgeBinding[],\n spaces: KnowledgeSpaceRegistry | undefined,\n sources: KnowledgeSourceConfig[] | undefined\n): MissingReference[] {\n if (!bindings.length || !spaces) return [];\n const missing: MissingReference[] = [];\n const sourceList = sources ?? [];\n\n for (const binding of bindings) {\n const space = spaces.get(binding.spaceKey, binding.spaceVersion);\n if (!space) {\n missing.push({\n type: 'knowledgeSpace',\n identifier: binding.spaceVersion\n ? `${binding.spaceKey}@${binding.spaceVersion}`\n : binding.spaceKey,\n });\n continue;\n }\n if (sources) {\n const relevantSources = sourceList.filter((source) => {\n if (source.meta.spaceKey !== binding.spaceKey) return false;\n if (binding.spaceVersion != null) {\n return source.meta.spaceVersion === binding.spaceVersion;\n }\n return true;\n });\n if (relevantSources.length === 0) {\n missing.push({\n type: 'knowledgeSource',\n identifier: binding.spaceVersion\n ? `${binding.spaceKey}@${binding.spaceVersion}`\n : binding.spaceKey,\n });\n }\n }\n }\n\n return missing;\n}\n\nfunction resolveCapabilityRefs(\n refs: CapabilityRef[],\n registry: CapabilityRegistry | undefined,\n missing: MissingReference[]\n): CapabilitySpec[] {\n if (!registry) {\n if (refs.length > 0) {\n for (const ref of refs) {\n missing.push({\n type: 'capability',\n identifier: capabilityKey(ref),\n });\n }\n }\n return [];\n }\n\n const resolved: CapabilitySpec[] = [];\n for (const ref of refs) {\n const spec = registry.get(ref.key, ref.version);\n if (!spec) {\n missing.push({\n type: 'capability',\n identifier: capabilityKey(ref),\n });\n continue;\n }\n resolved.push(spec);\n }\n return resolved;\n}\n\nfunction resolveFeatureRefs(\n refs: FeatureRef[],\n registry: FeatureRegistry | undefined,\n missing: MissingReference[]\n): FeatureModuleSpec[] {\n if (!registry) {\n if (refs.length > 0) {\n for (const ref of refs) {\n missing.push({ type: 'feature', identifier: ref.key });\n }\n }\n return [];\n }\n const resolved: FeatureModuleSpec[] = [];\n for (const ref of refs) {\n const spec = registry.get(ref.key);\n if (!spec) {\n missing.push({ type: 'feature', identifier: ref.key });\n continue;\n }\n resolved.push(spec);\n }\n return resolved;\n}\n\nfunction resolvePointerRecord<TSpec>(\n record: Record<string, SpecPointer>,\n registry:\n | { get(name: string, version?: number): TSpec | undefined }\n | undefined,\n type: 'dataView' | 'workflow',\n missing: MissingReference[]\n): Record<string, TSpec> {\n if (!registry) {\n if (Object.keys(record).length > 0) {\n for (const [slot, pointer] of Object.entries(record)) {\n missing.push({\n type,\n identifier: `${slot} -> ${specPointerKey(pointer)}`,\n });\n }\n }\n return {};\n }\n const resolved: Record<string, TSpec> = {};\n for (const [slot, pointer] of Object.entries(record)) {\n const spec = registry.get(pointer.name, pointer.version);\n if (!spec) {\n missing.push({\n type,\n identifier: `${slot} -> ${specPointerKey(pointer)}`,\n });\n continue;\n }\n resolved[slot] = spec;\n }\n return resolved;\n}\n\nfunction resolvePolicies(\n policies: PolicyRef[],\n registry: PolicyRegistry | undefined,\n missing: MissingReference[]\n): PolicySpec[] {\n if (!registry) {\n if (policies.length > 0) {\n for (const policy of policies) {\n missing.push({\n type: 'policy',\n identifier: policyKey(policy),\n });\n }\n }\n return [];\n }\n const resolved: PolicySpec[] = [];\n for (const policy of policies) {\n const spec = registry.get(policy.name, policy.version);\n if (!spec) {\n missing.push({\n type: 'policy',\n identifier: policyKey(policy),\n });\n continue;\n }\n resolved.push(spec);\n }\n return resolved;\n}\n\nfunction resolveThemeBinding(\n binding: AppThemeBinding | undefined,\n registry: ThemeRegistry | undefined\n): {\n theme?: ThemeSpec;\n fallbacks: ThemeSpec[];\n themeMissing: MissingReference[];\n} {\n const themeMissing: MissingReference[] = [];\n if (!binding) {\n return { theme: undefined, fallbacks: [], themeMissing };\n }\n if (!registry) {\n themeMissing.push({\n type: 'theme',\n identifier: `${binding.primary.name}.v${binding.primary.version}`,\n });\n for (const fallback of binding.fallbacks ?? []) {\n themeMissing.push({\n type: 'theme',\n identifier: `${fallback.name}.v${fallback.version}`,\n });\n }\n return { theme: undefined, fallbacks: [], themeMissing };\n }\n const theme = registry.get(binding.primary.name, binding.primary.version);\n if (!theme) {\n themeMissing.push({\n type: 'theme',\n identifier: `${binding.primary.name}.v${binding.primary.version}`,\n });\n }\n const fallbacks: ThemeSpec[] = [];\n for (const fallback of binding.fallbacks ?? []) {\n const spec = registry.get(fallback.name, fallback.version);\n if (!spec) {\n themeMissing.push({\n type: 'theme',\n identifier: `${fallback.name}.v${fallback.version}`,\n });\n continue;\n }\n fallbacks.push(spec);\n }\n return { theme: theme ?? undefined, fallbacks, themeMissing };\n}\n\nfunction resolveTelemetryBinding(\n binding: TelemetryBinding | undefined,\n registry: TelemetryRegistry | undefined\n): { telemetry?: TelemetrySpec; telemetryMissing: MissingReference[] } {\n const telemetryMissing: MissingReference[] = [];\n if (!binding?.spec) {\n return { telemetry: undefined, telemetryMissing };\n }\n if (!registry) {\n telemetryMissing.push({\n type: 'telemetry',\n identifier: specPointerKey(binding.spec),\n });\n return { telemetry: undefined, telemetryMissing };\n }\n const telemetry = registry.get(binding.spec.name, binding.spec.version);\n if (!telemetry) {\n telemetryMissing.push({\n type: 'telemetry',\n identifier: specPointerKey(binding.spec),\n });\n }\n return { telemetry: telemetry ?? undefined, telemetryMissing };\n}\n\nfunction resolveExperimentsSpecs(\n experiments: ResolvedAppConfig['experiments'],\n registry: ExperimentRegistry | undefined,\n missing: MissingReference[]\n): { active: ExperimentSpec[]; paused: ExperimentSpec[] } {\n const resolveList = (refs: ExperimentRef[]): ExperimentSpec[] => {\n if (refs.length === 0) return [];\n if (!registry) {\n for (const ref of refs) {\n missing.push({\n type: 'experiment',\n identifier: experimentKey(ref),\n });\n }\n return [];\n }\n const resolved: ExperimentSpec[] = [];\n for (const ref of refs) {\n const spec = registry.get(ref.name, ref.version);\n if (!spec) {\n missing.push({\n type: 'experiment',\n identifier: experimentKey(ref),\n });\n continue;\n }\n resolved.push(spec);\n }\n return resolved;\n };\n\n return {\n active: resolveList(experiments.active),\n paused: resolveList(experiments.paused),\n };\n}\n\nfunction capabilityKey(ref: CapabilityRef) {\n return `${ref.key}${ref.version ? `.v${ref.version}` : ''}`;\n}\n\nfunction featureKey(ref: FeatureRef) {\n return ref.key;\n}\n\nfunction specPointerKey(pointer: SpecPointer) {\n return `${pointer.name}${pointer.version ? `.v${pointer.version}` : ''}`;\n}\n\nfunction policyKey(ref: PolicyRef) {\n return `${ref.name}${ref.version ? `.v${ref.version}` : ''}`;\n}\n\nfunction experimentKey(ref: ExperimentRef) {\n return `${ref.name}${ref.version ? `.v${ref.version}` : ''}`;\n}\n\nfunction dedupeRefs<T>(refs: T[], keyFn: (value: T) => string): T[] {\n const map = new Map<string, T>();\n for (const ref of refs) {\n map.set(keyFn(ref), ref);\n }\n return [...map.values()];\n}\n\nfunction dedupeStrings(values: string[]): string[] {\n return [...new Set(values)];\n}\n"],"mappings":"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"}
|
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
import { BrandingDefaults, TenantBrandingConfig } from "./branding.js";
|
|
2
|
-
import { OwnerShipMeta } from "../ownership.js";
|
|
3
|
-
import { PolicyRef } from "../policy/spec.js";
|
|
4
|
-
import { CapabilityRef } from "../capabilities.js";
|
|
5
|
-
import { ExperimentRef } from "../experiments/spec.js";
|
|
6
|
-
import { FeatureRef } from "../features.js";
|
|
7
|
-
import { ThemeRef } from "../themes.js";
|
|
8
|
-
import { IntegrationCategory, IntegrationOwnershipMode } from "../integrations/spec.js";
|
|
9
|
-
import { AppIntegrationBinding } from "../integrations/binding.js";
|
|
10
|
-
import { AppKnowledgeBinding } from "../knowledge/binding.js";
|
|
11
|
-
import { Locale, TranslationEntry } from "../translations/catalog.js";
|
|
12
|
-
import { ConfigStatus } from "./lifecycle.js";
|
|
13
|
-
|
|
14
|
-
//#region src/app-config/spec.d.ts
|
|
15
|
-
interface SpecPointer {
|
|
16
|
-
name: string;
|
|
17
|
-
version?: number;
|
|
18
|
-
}
|
|
19
|
-
interface AppRouteConfig {
|
|
20
|
-
path: string;
|
|
21
|
-
label?: string;
|
|
22
|
-
dataView?: string;
|
|
23
|
-
workflow?: string;
|
|
24
|
-
guard?: PolicyRef;
|
|
25
|
-
featureFlag?: string;
|
|
26
|
-
experiment?: ExperimentRef;
|
|
27
|
-
}
|
|
28
|
-
interface TranslationCatalogPointer {
|
|
29
|
-
name: string;
|
|
30
|
-
version: number;
|
|
31
|
-
}
|
|
32
|
-
interface AppIntegrationSlot {
|
|
33
|
-
/** Slot identifier unique within the blueprint (e.g., "primaryPayments"). */
|
|
34
|
-
slotId: string;
|
|
35
|
-
/** Integration category required to satisfy this slot. */
|
|
36
|
-
requiredCategory: IntegrationCategory;
|
|
37
|
-
/** Ownership modes allowed for this slot (defaults to any supported mode). */
|
|
38
|
-
allowedModes?: IntegrationOwnershipMode[];
|
|
39
|
-
/** Capabilities that must be provided by the integration spec. */
|
|
40
|
-
requiredCapabilities?: CapabilityRef[];
|
|
41
|
-
/** Whether this slot must be satisfied for the app to function. */
|
|
42
|
-
required?: boolean;
|
|
43
|
-
/** Description for App Studio UX. */
|
|
44
|
-
description?: string;
|
|
45
|
-
}
|
|
46
|
-
interface FeatureFlagState {
|
|
47
|
-
key: string;
|
|
48
|
-
enabled: boolean;
|
|
49
|
-
variant?: string;
|
|
50
|
-
description?: string;
|
|
51
|
-
}
|
|
52
|
-
interface TelemetryBinding {
|
|
53
|
-
spec?: SpecPointer;
|
|
54
|
-
disabledEvents?: string[];
|
|
55
|
-
samplingOverrides?: Record<string, number>;
|
|
56
|
-
}
|
|
57
|
-
interface AppThemeBinding {
|
|
58
|
-
primary: ThemeRef;
|
|
59
|
-
fallbacks?: ThemeRef[];
|
|
60
|
-
}
|
|
61
|
-
interface AppBlueprintMeta extends OwnerShipMeta {
|
|
62
|
-
/** Fully qualified blueprint name (e.g. "artisan.app"). */
|
|
63
|
-
name: string;
|
|
64
|
-
/** Versioned definition of the blueprint. Increment on breaking changes. */
|
|
65
|
-
version: number;
|
|
66
|
-
/** Logical application id (e.g. "artisan"). */
|
|
67
|
-
appId: string;
|
|
68
|
-
}
|
|
69
|
-
interface AppBlueprintSpec {
|
|
70
|
-
meta: AppBlueprintMeta;
|
|
71
|
-
capabilities?: {
|
|
72
|
-
enabled?: CapabilityRef[];
|
|
73
|
-
disabled?: CapabilityRef[];
|
|
74
|
-
};
|
|
75
|
-
features?: {
|
|
76
|
-
include?: FeatureRef[];
|
|
77
|
-
exclude?: FeatureRef[];
|
|
78
|
-
};
|
|
79
|
-
integrationSlots?: AppIntegrationSlot[];
|
|
80
|
-
branding?: BrandingDefaults;
|
|
81
|
-
translationCatalog?: TranslationCatalogPointer;
|
|
82
|
-
dataViews?: Record<string, SpecPointer>;
|
|
83
|
-
workflows?: Record<string, SpecPointer>;
|
|
84
|
-
policies?: PolicyRef[];
|
|
85
|
-
theme?: AppThemeBinding;
|
|
86
|
-
telemetry?: TelemetryBinding;
|
|
87
|
-
experiments?: {
|
|
88
|
-
active?: ExperimentRef[];
|
|
89
|
-
paused?: ExperimentRef[];
|
|
90
|
-
};
|
|
91
|
-
featureFlags?: FeatureFlagState[];
|
|
92
|
-
routes?: AppRouteConfig[];
|
|
93
|
-
notes?: string;
|
|
94
|
-
}
|
|
95
|
-
declare class AppBlueprintRegistry {
|
|
96
|
-
private readonly items;
|
|
97
|
-
register(spec: AppBlueprintSpec): this;
|
|
98
|
-
list(): AppBlueprintSpec[];
|
|
99
|
-
get(name: string, version?: number): AppBlueprintSpec | undefined;
|
|
100
|
-
}
|
|
101
|
-
declare function makeAppBlueprintKey(meta: AppBlueprintMeta): string;
|
|
102
|
-
interface TenantAppConfigMeta {
|
|
103
|
-
id: string;
|
|
104
|
-
tenantId: string;
|
|
105
|
-
appId: string;
|
|
106
|
-
blueprintName: string;
|
|
107
|
-
blueprintVersion: number;
|
|
108
|
-
environment?: string;
|
|
109
|
-
/** Monotonic version for auditing changes to the tenant config. */
|
|
110
|
-
version: number;
|
|
111
|
-
status: ConfigStatus;
|
|
112
|
-
createdBy?: string;
|
|
113
|
-
publishedBy?: string;
|
|
114
|
-
publishedAt?: string | Date;
|
|
115
|
-
rolledBackFrom?: number;
|
|
116
|
-
rolledBackTo?: number;
|
|
117
|
-
changeSummary?: string;
|
|
118
|
-
createdAt?: string | Date;
|
|
119
|
-
updatedAt?: string | Date;
|
|
120
|
-
}
|
|
121
|
-
interface TenantSpecOverride {
|
|
122
|
-
slot: string;
|
|
123
|
-
pointer?: SpecPointer | null;
|
|
124
|
-
}
|
|
125
|
-
interface TenantRouteOverride {
|
|
126
|
-
path: string;
|
|
127
|
-
label?: string | null;
|
|
128
|
-
dataView?: string | null;
|
|
129
|
-
workflow?: string | null;
|
|
130
|
-
guard?: PolicyRef | null;
|
|
131
|
-
featureFlag?: string | null;
|
|
132
|
-
experiment?: ExperimentRef | null;
|
|
133
|
-
}
|
|
134
|
-
interface TenantAppConfig {
|
|
135
|
-
meta: TenantAppConfigMeta;
|
|
136
|
-
capabilities?: {
|
|
137
|
-
enable?: CapabilityRef[];
|
|
138
|
-
disable?: CapabilityRef[];
|
|
139
|
-
};
|
|
140
|
-
features?: {
|
|
141
|
-
include?: FeatureRef[];
|
|
142
|
-
exclude?: FeatureRef[];
|
|
143
|
-
};
|
|
144
|
-
dataViewOverrides?: TenantSpecOverride[];
|
|
145
|
-
workflowOverrides?: TenantSpecOverride[];
|
|
146
|
-
additionalPolicies?: PolicyRef[];
|
|
147
|
-
themeOverride?: {
|
|
148
|
-
primary?: ThemeRef | null;
|
|
149
|
-
fallbacks?: ThemeRef[];
|
|
150
|
-
};
|
|
151
|
-
telemetryOverride?: {
|
|
152
|
-
spec?: SpecPointer | null;
|
|
153
|
-
disabledEvents?: string[];
|
|
154
|
-
samplingOverrides?: Record<string, number>;
|
|
155
|
-
};
|
|
156
|
-
experiments?: {
|
|
157
|
-
active?: ExperimentRef[];
|
|
158
|
-
paused?: ExperimentRef[];
|
|
159
|
-
};
|
|
160
|
-
featureFlags?: FeatureFlagState[];
|
|
161
|
-
routeOverrides?: TenantRouteOverride[];
|
|
162
|
-
integrations?: AppIntegrationBinding[];
|
|
163
|
-
knowledge?: AppKnowledgeBinding[];
|
|
164
|
-
locales?: {
|
|
165
|
-
defaultLocale: Locale;
|
|
166
|
-
enabledLocales: Locale[];
|
|
167
|
-
};
|
|
168
|
-
translationOverrides?: {
|
|
169
|
-
entries?: TranslationEntry[];
|
|
170
|
-
};
|
|
171
|
-
branding?: TenantBrandingConfig;
|
|
172
|
-
notes?: string;
|
|
173
|
-
}
|
|
174
|
-
//#endregion
|
|
175
|
-
export { AppBlueprintMeta, AppBlueprintRegistry, AppBlueprintSpec, AppIntegrationSlot, AppRouteConfig, AppThemeBinding, FeatureFlagState, SpecPointer, TelemetryBinding, TenantAppConfig, TenantAppConfigMeta, TenantRouteOverride, TenantSpecOverride, TranslationCatalogPointer, makeAppBlueprintKey };
|
|
176
|
-
//# sourceMappingURL=spec.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"spec.d.ts","names":[],"sources":["../../src/app-config/spec.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;UAgBiB,WAAA;;EAAA,OAAA,CAAA,EAAA,MAAW;AAK5B;AAUiB,UAVA,cAAA,CAUyB;EAKzB,IAAA,EAAA,MAAA;EAIG,KAAA,CAAA,EAAA,MAAA;EAEH,QAAA,CAAA,EAAA,MAAA;EAEQ,QAAA,CAAA,EAAA,MAAA;EAAa,KAAA,CAAA,EAlB5B,SAkB4B;EAOrB,WAAA,CAAA,EAAA,MAAgB;EAOhB,UAAA,CAAA,EA9BF,aA8BkB;AAMjC;AAKiB,UAtCA,yBAAA,CAsCyB;EASzB,IAAA,EAAA,MAAA;EACT,OAAA,EAAA,MAAA;;AAGO,UA9CE,kBAAA,CA8CF;EAGD;EACA,MAAA,EAAA,MAAA;EAEO;EACR,gBAAA,EAjDO,mBAiDP;EACU;EACM,YAAA,CAAA,EAjDZ,wBAiDY,EAAA;EAAf;EACe,oBAAA,CAAA,EAhDJ,aAgDI,EAAA;EAAf;EACD,QAAA,CAAA,EAAA,OAAA;EACH;EACI,WAAA,CAAA,EAAA,MAAA;;AAGD,UA/CI,gBAAA,CA+CJ;EAEI,GAAA,EAAA,MAAA;EACN,OAAA,EAAA,OAAA;EAAc,OAAA,CAAA,EAAA,MAAA;EAOZ,WAAA,CAAA,EAAA,MAAA;;AAYH,UA9DO,gBAAA,CA8DP;EAI6B,IAAA,CAAA,EAjE9B,WAiE8B;EAAgB,cAAA,CAAA,EAAA,MAAA,EAAA;EAiBvC,iBAAA,CAAA,EAhFM,MAgFa,CAAA,MAAA,EAAO,MAAA,CAAA;AAI1C;AASU,UA1FO,eAAA,CA0FP;EAGe,OAAA,EA5Fd,QA4Fc;EAIF,SAAA,CAAA,EA/FT,QA+FS,EAAA;;AACI,UA7FV,gBAAA,SAAyB,aA6Ff,CAAA;EAGV;EAKA,IAAA,EAAA,MAAA;EAUA;EACT,OAAA,EAAA,MAAA;EAEK;EACC,KAAA,EAAA,MAAA;;AAIA,UA9GG,gBAAA,CA8GH;EAEQ,IAAA,EA/Gd,gBA+Gc;EACA,YAAA,CAAA,EAAA;IACC,OAAA,CAAA,EA/GT,aA+GS,EAAA;IAET,QAAA,CAAA,EAhHC,aAgHD,EAAA;EACE,CAAA;EAGL,QAAA,CAAA,EAAA;IAEa,OAAA,CAAA,EAnHV,UAmHU,EAAA;IAGX,OAAA,CAAA,EArHC,UAqHD,EAAA;EACA,CAAA;EAEI,gBAAA,CAAA,EAtHI,kBAsHJ,EAAA;EACE,QAAA,CAAA,EAtHN,gBAsHM;EACF,kBAAA,CAAA,EAtHM,yBAsHN;EACH,SAAA,CAAA,EAtHA,MAsHA,CAAA,MAAA,EAtHe,WAsHf,CAAA;EAEK,SAAA,CAAA,EAvHL,MAuHK,CAAA,MAAA,EAvHU,WAuHV,CAAA;EACC,QAAA,CAAA,EAvHP,SAuHO,EAAA;EAGN,KAAA,CAAA,EAzHJ,eAyHI;EAED,SAAA,CAAA,EA1HC,gBA0HD;EAAoB,WAAA,CAAA,EAAA;aAxHpB;aACA;;iBAEI;WACN;;;cAOE,oBAAA;;iBAGI;UASP;uCAI6B;;iBAiBvB,mBAAA,OAA0B;UAIzB,mBAAA;;;;;;;;;UASP;;;yBAGe;;;;uBAIF;uBACA;;UAGN,kBAAA;;YAEL;;UAGK,mBAAA;;;;;UAKP;;eAEK;;UAGE,eAAA;QACT;;aAEK;cACC;;;cAGA;cACA;;sBAEQ;sBACA;uBACC;;cAET;gBACE;;;WAGL;;wBAEa;;;aAGX;aACA;;iBAEI;mBACE;iBACF;cACH;;mBAEK;oBACC;;;cAGN;;aAED"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"spec.js","names":["latest: AppBlueprintSpec | undefined"],"sources":["../../src/app-config/spec.ts"],"sourcesContent":["import type { OwnerShipMeta } from '../ownership';\nimport type { CapabilityRef } from '../capabilities';\nimport type { FeatureRef } from '../features';\nimport type { PolicyRef } from '../policy/spec';\nimport type { ThemeRef } from '../themes';\nimport type { ExperimentRef } from '../experiments/spec';\nimport type {\n IntegrationCategory,\n IntegrationOwnershipMode,\n} from '../integrations/spec';\nimport type { AppIntegrationBinding } from '../integrations/binding';\nimport type { AppKnowledgeBinding } from '../knowledge/binding';\nimport type { BrandingDefaults, TenantBrandingConfig } from './branding';\nimport type { Locale, TranslationEntry } from '../translations/catalog';\nimport type { ConfigStatus } from './lifecycle';\n\nexport interface SpecPointer {\n name: string;\n version?: number;\n}\n\nexport interface AppRouteConfig {\n path: string;\n label?: string;\n dataView?: string;\n workflow?: string;\n guard?: PolicyRef;\n featureFlag?: string;\n experiment?: ExperimentRef;\n}\n\nexport interface TranslationCatalogPointer {\n name: string;\n version: number;\n}\n\nexport interface AppIntegrationSlot {\n /** Slot identifier unique within the blueprint (e.g., \"primaryPayments\"). */\n slotId: string;\n /** Integration category required to satisfy this slot. */\n requiredCategory: IntegrationCategory;\n /** Ownership modes allowed for this slot (defaults to any supported mode). */\n allowedModes?: IntegrationOwnershipMode[];\n /** Capabilities that must be provided by the integration spec. */\n requiredCapabilities?: CapabilityRef[];\n /** Whether this slot must be satisfied for the app to function. */\n required?: boolean;\n /** Description for App Studio UX. */\n description?: string;\n}\n\nexport interface FeatureFlagState {\n key: string;\n enabled: boolean;\n variant?: string;\n description?: string;\n}\n\nexport interface TelemetryBinding {\n spec?: SpecPointer;\n disabledEvents?: string[];\n samplingOverrides?: Record<string, number>;\n}\n\nexport interface AppThemeBinding {\n primary: ThemeRef;\n fallbacks?: ThemeRef[];\n}\n\nexport interface AppBlueprintMeta extends OwnerShipMeta {\n /** Fully qualified blueprint name (e.g. \"artisan.app\"). */\n name: string;\n /** Versioned definition of the blueprint. Increment on breaking changes. */\n version: number;\n /** Logical application id (e.g. \"artisan\"). */\n appId: string;\n}\n\nexport interface AppBlueprintSpec {\n meta: AppBlueprintMeta;\n capabilities?: {\n enabled?: CapabilityRef[];\n disabled?: CapabilityRef[];\n };\n features?: {\n include?: FeatureRef[];\n exclude?: FeatureRef[];\n };\n integrationSlots?: AppIntegrationSlot[];\n branding?: BrandingDefaults;\n translationCatalog?: TranslationCatalogPointer;\n dataViews?: Record<string, SpecPointer>;\n workflows?: Record<string, SpecPointer>;\n policies?: PolicyRef[];\n theme?: AppThemeBinding;\n telemetry?: TelemetryBinding;\n experiments?: {\n active?: ExperimentRef[];\n paused?: ExperimentRef[];\n };\n featureFlags?: FeatureFlagState[];\n routes?: AppRouteConfig[];\n notes?: string;\n}\n\nconst blueprintKey = (meta: Pick<AppBlueprintMeta, 'name' | 'version'>) =>\n `${meta.name}.v${meta.version}`;\n\nexport class AppBlueprintRegistry {\n private readonly items = new Map<string, AppBlueprintSpec>();\n\n register(spec: AppBlueprintSpec): this {\n const key = blueprintKey(spec.meta);\n if (this.items.has(key)) {\n throw new Error(`Duplicate AppBlueprint ${key}`);\n }\n this.items.set(key, spec);\n return this;\n }\n\n list(): AppBlueprintSpec[] {\n return [...this.items.values()];\n }\n\n get(name: string, version?: number): AppBlueprintSpec | undefined {\n if (version != null) {\n return this.items.get(blueprintKey({ name, version }));\n }\n let latest: AppBlueprintSpec | undefined;\n let maxVersion = -Infinity;\n for (const spec of this.items.values()) {\n if (spec.meta.name !== name) continue;\n if (spec.meta.version > maxVersion) {\n maxVersion = spec.meta.version;\n latest = spec;\n }\n }\n return latest;\n }\n}\n\nexport function makeAppBlueprintKey(meta: AppBlueprintMeta) {\n return blueprintKey(meta);\n}\n\nexport interface TenantAppConfigMeta {\n id: string;\n tenantId: string;\n appId: string;\n blueprintName: string;\n blueprintVersion: number;\n environment?: string;\n /** Monotonic version for auditing changes to the tenant config. */\n version: number;\n status: ConfigStatus;\n createdBy?: string;\n publishedBy?: string;\n publishedAt?: string | Date;\n rolledBackFrom?: number;\n rolledBackTo?: number;\n changeSummary?: string;\n createdAt?: string | Date;\n updatedAt?: string | Date;\n}\n\nexport interface TenantSpecOverride {\n slot: string;\n pointer?: SpecPointer | null;\n}\n\nexport interface TenantRouteOverride {\n path: string;\n label?: string | null;\n dataView?: string | null;\n workflow?: string | null;\n guard?: PolicyRef | null;\n featureFlag?: string | null;\n experiment?: ExperimentRef | null;\n}\n\nexport interface TenantAppConfig {\n meta: TenantAppConfigMeta;\n capabilities?: {\n enable?: CapabilityRef[];\n disable?: CapabilityRef[];\n };\n features?: {\n include?: FeatureRef[];\n exclude?: FeatureRef[];\n };\n dataViewOverrides?: TenantSpecOverride[];\n workflowOverrides?: TenantSpecOverride[];\n additionalPolicies?: PolicyRef[];\n themeOverride?: {\n primary?: ThemeRef | null;\n fallbacks?: ThemeRef[];\n };\n telemetryOverride?: {\n spec?: SpecPointer | null;\n disabledEvents?: string[];\n samplingOverrides?: Record<string, number>;\n };\n experiments?: {\n active?: ExperimentRef[];\n paused?: ExperimentRef[];\n };\n featureFlags?: FeatureFlagState[];\n routeOverrides?: TenantRouteOverride[];\n integrations?: AppIntegrationBinding[];\n knowledge?: AppKnowledgeBinding[];\n locales?: {\n defaultLocale: Locale;\n enabledLocales: Locale[];\n };\n translationOverrides?: {\n entries?: TranslationEntry[];\n };\n branding?: TenantBrandingConfig;\n notes?: string;\n}\n"],"mappings":"AAyGA,MAAM,EAAgB,GACpB,GAAG,EAAK,KAAK,IAAI,EAAK,UAExB,IAAa,EAAb,KAAkC,CAChC,MAAyB,IAAI,IAE7B,SAAS,EAA8B,CACrC,IAAM,EAAM,EAAa,EAAK,KAAK,CACnC,GAAI,KAAK,MAAM,IAAI,EAAI,CACrB,MAAU,MAAM,0BAA0B,IAAM,CAGlD,OADA,KAAK,MAAM,IAAI,EAAK,EAAK,CAClB,KAGT,MAA2B,CACzB,MAAO,CAAC,GAAG,KAAK,MAAM,QAAQ,CAAC,CAGjC,IAAI,EAAc,EAAgD,CAChE,GAAI,GAAW,KACb,OAAO,KAAK,MAAM,IAAI,EAAa,CAAE,OAAM,UAAS,CAAC,CAAC,CAExD,IAAIA,EACA,EAAa,KACjB,IAAK,IAAM,KAAQ,KAAK,MAAM,QAAQ,CAChC,EAAK,KAAK,OAAS,GACnB,EAAK,KAAK,QAAU,IACtB,EAAa,EAAK,KAAK,QACvB,EAAS,GAGb,OAAO,IAIX,SAAgB,EAAoB,EAAwB,CAC1D,OAAO,EAAa,EAAK"}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { CapabilityRegistry } from "../capabilities.js";
|
|
2
|
-
import { DataViewRegistry } from "../data-views.js";
|
|
3
|
-
import { WorkflowRegistry } from "../workflow/spec.js";
|
|
4
|
-
import { IntegrationSpecRegistry } from "../integrations/spec.js";
|
|
5
|
-
import { IntegrationConnection } from "../integrations/connection.js";
|
|
6
|
-
import { KnowledgeSpaceRegistry } from "../knowledge/spec.js";
|
|
7
|
-
import { KnowledgeSourceConfig } from "../knowledge/source.js";
|
|
8
|
-
import { BlueprintTranslationCatalog, PlatformTranslationCatalog } from "../translations/catalog.js";
|
|
9
|
-
import { AppBlueprintSpec, TenantAppConfig } from "./spec.js";
|
|
10
|
-
import { ResolvedAppConfig } from "./runtime.js";
|
|
11
|
-
|
|
12
|
-
//#region src/app-config/validation.d.ts
|
|
13
|
-
type ValidationSeverity = 'error' | 'warning' | 'info';
|
|
14
|
-
interface ValidationIssue {
|
|
15
|
-
code: string;
|
|
16
|
-
severity: ValidationSeverity;
|
|
17
|
-
path: string;
|
|
18
|
-
message: string;
|
|
19
|
-
suggestion?: string;
|
|
20
|
-
docsUrl?: string;
|
|
21
|
-
}
|
|
22
|
-
interface ValidationResult {
|
|
23
|
-
valid: boolean;
|
|
24
|
-
errors: ValidationIssue[];
|
|
25
|
-
warnings: ValidationIssue[];
|
|
26
|
-
info: ValidationIssue[];
|
|
27
|
-
}
|
|
28
|
-
interface ValidationContext {
|
|
29
|
-
integrationSpecs?: IntegrationSpecRegistry;
|
|
30
|
-
knowledgeSpaces?: KnowledgeSpaceRegistry;
|
|
31
|
-
knowledgeSources?: KnowledgeSourceConfig[];
|
|
32
|
-
capabilities?: CapabilityRegistry;
|
|
33
|
-
dataViews?: DataViewRegistry;
|
|
34
|
-
workflows?: WorkflowRegistry;
|
|
35
|
-
tenantConnections?: IntegrationConnection[];
|
|
36
|
-
existingConfigs?: TenantAppConfig[];
|
|
37
|
-
translationCatalogs?: {
|
|
38
|
-
platform?: PlatformTranslationCatalog | PlatformTranslationCatalog[] | undefined;
|
|
39
|
-
blueprint?: BlueprintTranslationCatalog | BlueprintTranslationCatalog[] | undefined;
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
declare function validateConfig(blueprint: AppBlueprintSpec, tenant: TenantAppConfig, context?: ValidationContext): ValidationResult;
|
|
43
|
-
declare function validateBlueprint(blueprint: AppBlueprintSpec, context?: ValidationContext): ValidationResult;
|
|
44
|
-
declare function validateTenantConfig(blueprint: AppBlueprintSpec, tenant: TenantAppConfig, context?: ValidationContext): ValidationResult;
|
|
45
|
-
declare function validateResolvedConfig(blueprint: AppBlueprintSpec, resolved: ResolvedAppConfig, context?: ValidationContext): ValidationResult;
|
|
46
|
-
//#endregion
|
|
47
|
-
export { ValidationContext, ValidationIssue, ValidationResult, ValidationSeverity, validateBlueprint, validateConfig, validateResolvedConfig, validateTenantConfig };
|
|
48
|
-
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","names":[],"sources":["../../src/app-config/validation.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;KAkBY,kBAAA;UAEK,eAAA;EAFL,IAAA,EAAA,MAAA;EAEK,QAAA,EAEL,kBAFoB;EASf,IAAA,EAAA,MAAA;EAEP,OAAA,EAAA,MAAA;EACE,UAAA,CAAA,EAAA,MAAA;EACJ,OAAA,CAAA,EAAA,MAAA;;AAGS,UAPA,gBAAA,CAOiB;EACb,KAAA,EAAA,OAAA;EACD,MAAA,EAPV,eAOU,EAAA;EACC,QAAA,EAPT,eAOS,EAAA;EACJ,IAAA,EAPT,eAOS,EAAA;;AAEH,UANG,iBAAA,CAMH;EACQ,gBAAA,CAAA,EAND,uBAMC;EACF,eAAA,CAAA,EANA,sBAMA;EAGZ,gBAAA,CAAA,EARa,qBAQb,EAAA;EACA,YAAA,CAAA,EARS,kBAQT;EAGA,SAAA,CAAA,EAVM,gBAUN;EACA,SAAA,CAAA,EAVM,gBAUN;EAA2B,iBAAA,CAAA,EATb,qBASa,EAAA;EAyHnB,eAAA,CAAA,EAjII,eAiIU,EAAA;EACjB,mBAAA,CAAA,EAAA;IACH,QAAA,CAAA,EAhIF,0BAgIE,GA/HF,0BA+HE,EAAA,GAAA,SAAA;IACC,SAAA,CAAA,EA7HH,2BA6HG,GA5HH,2BA4HG,EAAA,GAAA,SAAA;EACR,CAAA;;AAWa,iBAfA,cAAA,CAeiB,SAAA,EAdpB,gBAcoB,EAAA,MAAA,EAbvB,eAauB,EAAA,OAAA,CAAA,EAZtB,iBAYsB,CAAA,EAX9B,gBAW8B;AACpB,iBADG,iBAAA,CACH,SAAA,EAAA,gBAAA,EAAA,OAAA,CAAA,EACF,iBADE,CAAA,EAEV,gBAFU;AACF,iBAMK,oBAAA,CANL,SAAA,EAOE,gBAPF,EAAA,MAAA,EAQD,eARC,EAAA,OAAA,CAAA,EASA,iBATA,CAAA,EAUR,gBAVQ;AACR,iBAca,sBAAA,CAdb,SAAA,EAeU,gBAfV,EAAA,QAAA,EAgBS,iBAhBT,EAAA,OAAA,CAAA,EAiBQ,iBAjBR,CAAA,EAkBA,gBAlBA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","names":["ALLOWED_ASSET_EXTENSIONS: Record<string, string[]>","EMPTY_CONTEXT: ValidationContext","registryInstance: ValidationRuleRegistry | undefined","issue","blueprintIntegrationSlotRule: BlueprintRule","issues: ValidationIssue[]","blueprintCapabilityRegistryRule: BlueprintRule","tenantCapabilityRule: TenantRule","tenantIntegrationBindingRule: TenantRule","tenantKnowledgeRule: TenantRule","tenantBrandingRule: TenantRule","tenantTranslationRule: TenantRule","resolvedIntegrationRule: ResolvedRule","resolvedTranslationRule: ResolvedRule"],"sources":["../../src/app-config/validation.ts"],"sourcesContent":["import type { CapabilityRef, CapabilityRegistry } from '../capabilities';\nimport type { DataViewRegistry } from '../data-views';\nimport type { IntegrationConnection } from '../integrations/connection';\nimport type {\n IntegrationSpec,\n IntegrationSpecRegistry,\n} from '../integrations/spec';\nimport type { KnowledgeSourceConfig } from '../knowledge/source';\nimport type { KnowledgeSpaceRegistry } from '../knowledge/spec';\nimport type {\n BlueprintTranslationCatalog,\n PlatformTranslationCatalog,\n TranslationEntry,\n} from '../translations/catalog';\nimport type { WorkflowRegistry } from '../workflow/spec';\nimport type { ResolvedAppConfig } from './runtime';\nimport type { AppBlueprintSpec, TenantAppConfig } from './spec';\n\nexport type ValidationSeverity = 'error' | 'warning' | 'info';\n\nexport interface ValidationIssue {\n code: string;\n severity: ValidationSeverity;\n path: string;\n message: string;\n suggestion?: string;\n docsUrl?: string;\n}\n\nexport interface ValidationResult {\n valid: boolean;\n errors: ValidationIssue[];\n warnings: ValidationIssue[];\n info: ValidationIssue[];\n}\n\nexport interface ValidationContext {\n integrationSpecs?: IntegrationSpecRegistry;\n knowledgeSpaces?: KnowledgeSpaceRegistry;\n knowledgeSources?: KnowledgeSourceConfig[];\n capabilities?: CapabilityRegistry;\n dataViews?: DataViewRegistry;\n workflows?: WorkflowRegistry;\n tenantConnections?: IntegrationConnection[];\n existingConfigs?: TenantAppConfig[];\n translationCatalogs?: {\n platform?:\n | PlatformTranslationCatalog\n | PlatformTranslationCatalog[]\n | undefined;\n blueprint?:\n | BlueprintTranslationCatalog\n | BlueprintTranslationCatalog[]\n | undefined;\n };\n}\n\ntype ValidationCategory =\n | 'general'\n | 'capability'\n | 'integration'\n | 'knowledge'\n | 'branding'\n | 'translation'\n | 'policy'\n | 'experiment';\n\ninterface BlueprintRule {\n scope: 'blueprint';\n name: string;\n category: ValidationCategory;\n validate: (\n blueprint: AppBlueprintSpec,\n context: ValidationContext\n ) => ValidationIssue[];\n}\n\ninterface TenantRule {\n scope: 'tenant';\n name: string;\n category: ValidationCategory;\n validate: (\n blueprint: AppBlueprintSpec,\n tenant: TenantAppConfig,\n context: ValidationContext\n ) => ValidationIssue[];\n}\n\ninterface ResolvedRule {\n scope: 'resolved';\n name: string;\n category: ValidationCategory;\n validate: (\n blueprint: AppBlueprintSpec,\n resolved: ResolvedAppConfig,\n context: ValidationContext\n ) => ValidationIssue[];\n}\n\ntype ValidationRule = BlueprintRule | TenantRule | ResolvedRule;\n\nclass ValidationRuleRegistry {\n private readonly blueprintRules: BlueprintRule[] = [];\n private readonly tenantRules: TenantRule[] = [];\n private readonly resolvedRules: ResolvedRule[] = [];\n\n register(rule: ValidationRule): this {\n if (rule.scope === 'blueprint') {\n this.blueprintRules.push(rule);\n } else if (rule.scope === 'tenant') {\n this.tenantRules.push(rule);\n } else {\n this.resolvedRules.push(rule);\n }\n return this;\n }\n\n validateBlueprint(\n blueprint: AppBlueprintSpec,\n context: ValidationContext\n ): ValidationIssue[] {\n return dedupeIssues(\n this.blueprintRules.flatMap((rule) => rule.validate(blueprint, context))\n );\n }\n\n validateTenant(\n blueprint: AppBlueprintSpec,\n tenant: TenantAppConfig,\n context: ValidationContext\n ): ValidationIssue[] {\n return dedupeIssues(\n this.tenantRules.flatMap((rule) =>\n rule.validate(blueprint, tenant, context)\n )\n );\n }\n\n validateResolved(\n blueprint: AppBlueprintSpec,\n resolved: ResolvedAppConfig,\n context: ValidationContext\n ): ValidationIssue[] {\n return dedupeIssues(\n this.resolvedRules.flatMap((rule) =>\n rule.validate(blueprint, resolved, context)\n )\n );\n }\n}\n\nconst DOMAIN_REGEX = /^(?!:\\/\\/)([a-zA-Z0-9-]+\\.)*[a-zA-Z0-9-]+\\.[A-Za-z]{2,}$/;\n\nconst HTTPS_URL_REGEX = /^https:\\/\\//i;\n\nconst ALLOWED_ASSET_EXTENSIONS: Record<string, string[]> = {\n logo: ['png', 'svg', 'webp'],\n 'logo-dark': ['png', 'svg', 'webp'],\n favicon: ['ico', 'png', 'svg'],\n 'og-image': ['png', 'jpg', 'jpeg', 'webp'],\n};\n\nconst EMPTY_CONTEXT: ValidationContext = {};\n\nlet registryInstance: ValidationRuleRegistry | undefined;\n\nfunction getRegistry(): ValidationRuleRegistry {\n if (!registryInstance) {\n registryInstance = createDefaultRegistry();\n }\n return registryInstance;\n}\n\nexport function validateConfig(\n blueprint: AppBlueprintSpec,\n tenant: TenantAppConfig,\n context: ValidationContext = EMPTY_CONTEXT\n): ValidationResult {\n const registry = getRegistry();\n const blueprintResult = buildResult(\n registry.validateBlueprint(blueprint, context)\n );\n const tenantResult = buildResult(\n registry.validateTenant(blueprint, tenant, context)\n );\n return mergeResults(blueprintResult, tenantResult);\n}\n\nexport function validateBlueprint(\n blueprint: AppBlueprintSpec,\n context: ValidationContext = EMPTY_CONTEXT\n): ValidationResult {\n const issues = getRegistry().validateBlueprint(blueprint, context);\n return buildResult(issues);\n}\n\nexport function validateTenantConfig(\n blueprint: AppBlueprintSpec,\n tenant: TenantAppConfig,\n context: ValidationContext = EMPTY_CONTEXT\n): ValidationResult {\n const issues = getRegistry().validateTenant(blueprint, tenant, context);\n return buildResult(issues);\n}\n\nexport function validateResolvedConfig(\n blueprint: AppBlueprintSpec,\n resolved: ResolvedAppConfig,\n context: ValidationContext = EMPTY_CONTEXT\n): ValidationResult {\n const issues = getRegistry().validateResolved(blueprint, resolved, context);\n return buildResult(issues);\n}\n\nfunction buildResult(issues: ValidationIssue[]): ValidationResult {\n const errors = issues.filter((issue) => issue.severity === 'error');\n const warnings = issues.filter((issue) => issue.severity === 'warning');\n const info = issues.filter((issue) => issue.severity === 'info');\n return {\n valid: errors.length === 0,\n errors,\n warnings,\n info,\n };\n}\n\nfunction mergeResults(...results: ValidationResult[]): ValidationResult {\n const errors = results.flatMap((result) => result.errors);\n const warnings = results.flatMap((result) => result.warnings);\n const info = results.flatMap((result) => result.info);\n return {\n valid: errors.length === 0,\n errors,\n warnings,\n info,\n };\n}\n\nfunction createDefaultRegistry(): ValidationRuleRegistry {\n return new ValidationRuleRegistry()\n .register(blueprintIntegrationSlotRule)\n .register(blueprintCapabilityRegistryRule)\n .register(tenantCapabilityRule)\n .register(tenantIntegrationBindingRule)\n .register(tenantKnowledgeRule)\n .register(tenantBrandingRule)\n .register(tenantTranslationRule)\n .register(resolvedIntegrationRule)\n .register(resolvedTranslationRule);\n}\n\nconst blueprintIntegrationSlotRule: BlueprintRule = {\n scope: 'blueprint',\n name: 'integration.duplicate-slots',\n category: 'integration',\n validate(blueprint) {\n const issues: ValidationIssue[] = [];\n const seen = new Set<string>();\n for (const slot of blueprint.integrationSlots ?? []) {\n if (seen.has(slot.slotId)) {\n issues.push(\n issue({\n code: 'DUPLICATE_SLOT',\n severity: 'error',\n path: `integrationSlots.${slot.slotId}`,\n message: `Duplicate integration slot id \"${slot.slotId}\".`,\n })\n );\n } else {\n seen.add(slot.slotId);\n }\n if (slot.allowedModes && slot.allowedModes.length === 0) {\n issues.push(\n issue({\n code: 'EMPTY_ALLOWED_MODES',\n severity: 'warning',\n path: `integrationSlots.${slot.slotId}.allowedModes`,\n message:\n 'allowedModes is empty; the slot will accept any supported mode.',\n })\n );\n }\n }\n if (blueprint.branding && !blueprint.branding.appNameKey.trim()) {\n issues.push(\n issue({\n code: 'MISSING_APP_NAME_KEY',\n severity: 'warning',\n path: 'branding.appNameKey',\n message:\n 'branding.appNameKey should reference a translation catalog key.',\n })\n );\n }\n return issues;\n },\n};\n\nconst blueprintCapabilityRegistryRule: BlueprintRule = {\n scope: 'blueprint',\n name: 'capability.registry-check',\n category: 'capability',\n validate(blueprint, context) {\n const issues: ValidationIssue[] = [];\n const registry = context.capabilities;\n if (!registry) return issues;\n\n const required = blueprint.capabilities?.enabled ?? [];\n required.forEach((ref, index) => {\n if (!registry.get(ref.key, ref.version)) {\n issues.push(\n issue({\n code: 'MISSING_CAPABILITY',\n severity: 'error',\n path: `capabilities.enabled[${index}]`,\n message: `Capability \"${ref.key}@${ref.version}\" is not registered.`,\n })\n );\n }\n });\n return issues;\n },\n};\n\nconst tenantCapabilityRule: TenantRule = {\n scope: 'tenant',\n name: 'capability.required-enabled',\n category: 'capability',\n validate(blueprint, tenant, context) {\n const issues: ValidationIssue[] = [];\n const registry = context.capabilities;\n const requiredKeys = new Set(\n (blueprint.capabilities?.enabled ?? []).map(capabilityRefKey)\n );\n\n const disabled = tenant.capabilities?.disable ?? [];\n disabled.forEach((ref, index) => {\n if (requiredKeys.has(capabilityRefKey(ref))) {\n issues.push(\n issue({\n code: 'DISABLED_REQUIRED_CAPABILITY',\n severity: 'error',\n path: `capabilities.disable[${index}]`,\n message: `Capability \"${ref.key}@${ref.version}\" is required by the blueprint and cannot be disabled.`,\n })\n );\n }\n });\n\n if (registry) {\n (tenant.capabilities?.enable ?? []).forEach((ref, index) => {\n if (!registry.get(ref.key, ref.version)) {\n issues.push(\n issue({\n code: 'UNKNOWN_CAPABILITY_ENABLE',\n severity: 'error',\n path: `capabilities.enable[${index}]`,\n message: `Capability \"${ref.key}@${ref.version}\" is not registered.`,\n })\n );\n }\n });\n disabled.forEach((ref, index) => {\n if (!registry.get(ref.key, ref.version)) {\n issues.push(\n issue({\n code: 'UNKNOWN_CAPABILITY_DISABLE',\n severity: 'warning',\n path: `capabilities.disable[${index}]`,\n message: `Capability \"${ref.key}@${ref.version}\" is not registered.`,\n })\n );\n }\n });\n }\n\n return issues;\n },\n};\n\nconst tenantIntegrationBindingRule: TenantRule = {\n scope: 'tenant',\n name: 'integration.slot-binding',\n category: 'integration',\n validate(blueprint, tenant, context) {\n const issues: ValidationIssue[] = [];\n const slots = new Map(\n (blueprint.integrationSlots ?? []).map((slot) => [slot.slotId, slot])\n );\n const bindings = tenant.integrations ?? [];\n const connections =\n context.tenantConnections?.reduce<Map<string, IntegrationConnection>>(\n (map, connection) => map.set(connection.meta.id, connection),\n new Map()\n ) ?? new Map();\n const satisfiedSlots = new Set<string>();\n\n bindings.forEach((binding) => {\n const path = `integrations.${binding.slotId}`;\n const slot = slots.get(binding.slotId);\n if (!slot) {\n issues.push(\n issue({\n code: 'UNKNOWN_SLOT_BINDING',\n severity: 'error',\n path,\n message: `Integration slot \"${binding.slotId}\" is not defined in the blueprint.`,\n })\n );\n return;\n }\n\n let slotValid = true;\n const connection = connections.get(binding.connectionId);\n if (!connection) {\n issues.push(\n issue({\n code: 'MISSING_INTEGRATION_CONNECTION',\n severity: 'error',\n path,\n message: `Integration connection \"${binding.connectionId}\" was not found for tenant \"${tenant.meta.tenantId}\".`,\n })\n );\n slotValid = false;\n return;\n }\n\n if (connection.meta.tenantId !== tenant.meta.tenantId) {\n issues.push(\n issue({\n code: 'FOREIGN_CONNECTION',\n severity: 'error',\n path,\n message: `Connection \"${binding.connectionId}\" belongs to tenant \"${connection.meta.tenantId}\", not \"${tenant.meta.tenantId}\".`,\n })\n );\n slotValid = false;\n }\n\n if (slot.allowedModes && slot.allowedModes.length > 0) {\n if (!slot.allowedModes.includes(connection.ownershipMode)) {\n issues.push(\n issue({\n code: 'MODE_MISMATCH',\n severity: 'error',\n path,\n message: `Slot \"${slot.slotId}\" only allows modes [${slot.allowedModes.join(\n ', '\n )}] but connection is \"${connection.ownershipMode}\".`,\n })\n );\n slotValid = false;\n }\n }\n\n if (\n connection.status === 'disconnected' ||\n connection.status === 'error'\n ) {\n issues.push(\n issue({\n code: 'CONNECTION_NOT_READY',\n severity: 'error',\n path,\n message: `Connection \"${connection.meta.label}\" is in status \"${connection.status}\".`,\n })\n );\n slotValid = false;\n } else if (connection.status === 'unknown') {\n issues.push(\n issue({\n code: 'CONNECTION_STATUS_UNKNOWN',\n severity: 'warning',\n path,\n message: `Connection \"${connection.meta.label}\" has unknown health status.`,\n })\n );\n }\n\n const spec = lookupIntegrationSpec(context.integrationSpecs, connection);\n if (!spec) {\n issues.push(\n issue({\n code: 'INTEGRATION_SPEC_NOT_FOUND',\n severity: 'warning',\n path,\n message: `Integration spec \"${connection.meta.integrationKey}@${connection.meta.integrationVersion}\" is not registered.`,\n })\n );\n slotValid = false;\n return;\n }\n\n if (spec.meta.category !== slot.requiredCategory) {\n issues.push(\n issue({\n code: 'CATEGORY_MISMATCH',\n severity: 'error',\n path,\n message: `Slot \"${slot.slotId}\" requires category \"${slot.requiredCategory}\" but connection provides \"${spec.meta.category}\".`,\n })\n );\n slotValid = false;\n }\n\n if (!spec.supportedModes.includes(connection.ownershipMode)) {\n issues.push(\n issue({\n code: 'UNSUPPORTED_OWNERSHIP_MODE',\n severity: 'error',\n path,\n message: `Integration spec \"${spec.meta.key}\" does not support ownership mode \"${connection.ownershipMode}\".`,\n })\n );\n slotValid = false;\n }\n\n for (const required of slot.requiredCapabilities ?? []) {\n if (!integrationProvidesCapability(spec, required)) {\n issues.push(\n issue({\n code: 'CAPABILITY_NOT_PROVIDED',\n severity: 'error',\n path,\n message: `Integration \"${spec.meta.key}\" does not provide required capability \"${required.key}@${required.version}\".`,\n })\n );\n slotValid = false;\n }\n }\n\n if (slotValid) {\n satisfiedSlots.add(slot.slotId);\n }\n });\n\n for (const slot of slots.values()) {\n if (slot.required && !satisfiedSlots.has(slot.slotId)) {\n issues.push(\n issue({\n code: 'MISSING_REQUIRED_SLOT',\n severity: 'error',\n path: `integrations.${slot.slotId}`,\n message: `Required integration slot \"${slot.slotId}\" is not bound.`,\n })\n );\n }\n }\n\n return issues;\n },\n};\n\nconst tenantKnowledgeRule: TenantRule = {\n scope: 'tenant',\n name: 'knowledge.bindings',\n category: 'knowledge',\n validate(_blueprint, tenant, context) {\n const issues: ValidationIssue[] = [];\n const registry = context.knowledgeSpaces;\n if (!registry) return issues;\n const sources = context.knowledgeSources ?? [];\n\n (tenant.knowledge ?? []).forEach((binding, index) => {\n const path = `knowledge[${index}]`;\n const space = registry.get(binding.spaceKey, binding.spaceVersion);\n if (!space) {\n issues.push(\n issue({\n code: 'UNKNOWN_KNOWLEDGE_SPACE',\n severity: 'error',\n path: `${path}.spaceKey`,\n message: `Knowledge space \"${binding.spaceKey}\" is not registered.`,\n })\n );\n return;\n }\n\n const hasSources = sources.some((source) => {\n if (source.meta.spaceKey !== binding.spaceKey) return false;\n if (binding.spaceVersion != null) {\n return source.meta.spaceVersion === binding.spaceVersion;\n }\n return true;\n });\n\n if (!hasSources) {\n issues.push(\n issue({\n code: 'MISSING_KNOWLEDGE_SOURCES',\n severity: 'error',\n path,\n message: `Knowledge space \"${binding.spaceKey}\" has no configured sources for tenant \"${tenant.meta.tenantId}\".`,\n })\n );\n }\n\n if (\n space.meta.category === 'external' ||\n space.meta.category === 'ephemeral'\n ) {\n issues.push(\n issue({\n code: 'LOW_TRUST_KNOWLEDGE',\n severity: 'warning',\n path,\n message: `Knowledge space \"${binding.spaceKey}\" has category \"${space.meta.category}\". Avoid using it for irreversible or policy decisions.`,\n })\n );\n }\n });\n\n return issues;\n },\n};\n\nconst tenantBrandingRule: TenantRule = {\n scope: 'tenant',\n name: 'branding.constraints',\n category: 'branding',\n validate(_blueprint, tenant, context) {\n const issues: ValidationIssue[] = [];\n const branding = tenant.branding;\n if (!branding) return issues;\n\n const domain = branding.customDomain?.trim();\n if (domain) {\n if (!DOMAIN_REGEX.test(domain)) {\n issues.push(\n issue({\n code: 'INVALID_DOMAIN',\n severity: 'error',\n path: 'branding.customDomain',\n message: `Custom domain \"${domain}\" is not a valid hostname.`,\n })\n );\n }\n\n const conflict = (context.existingConfigs ?? []).find((config) => {\n if (config.meta.id === tenant.meta.id) return false;\n const otherDomain = config.branding?.customDomain?.trim();\n if (!otherDomain) return false;\n return otherDomain.toLowerCase() === domain.toLowerCase();\n });\n\n if (conflict) {\n issues.push(\n issue({\n code: 'DUPLICATE_DOMAIN',\n severity: 'error',\n path: 'branding.customDomain',\n message: `Custom domain \"${domain}\" is already used by tenant \"${conflict.meta.tenantId}\".`,\n })\n );\n }\n }\n\n (branding.assets ?? []).forEach((asset, index) => {\n const assetPath = `branding.assets[${index}]`;\n if (!HTTPS_URL_REGEX.test(asset.url)) {\n issues.push(\n issue({\n code: 'INSECURE_ASSET_URL',\n severity: 'error',\n path: `${assetPath}.url`,\n message: `Branding asset \"${asset.type}\" must use an HTTPS URL.`,\n })\n );\n }\n\n const allowed =\n ALLOWED_ASSET_EXTENSIONS[asset.type] ?? ALLOWED_ASSET_EXTENSIONS.logo;\n const extension = extractExtension(asset.url);\n if (extension && allowed && !allowed.includes(extension)) {\n issues.push(\n issue({\n code: 'UNEXPECTED_ASSET_TYPE',\n severity: 'warning',\n path: `${assetPath}.url`,\n message: `Asset \"${asset.type}\" should use one of: ${(\n allowed ?? []\n ).join(', ')}. Detected \"${extension}\".`,\n })\n );\n }\n });\n\n return issues;\n },\n};\n\nconst tenantTranslationRule: TenantRule = {\n scope: 'tenant',\n name: 'translation.consistency',\n category: 'translation',\n validate(blueprint, tenant, context) {\n const issues: ValidationIssue[] = [];\n const pointer = blueprint.translationCatalog;\n const catalogs = normalizeCatalogs(context.translationCatalogs);\n const blueprintCatalog = pointer\n ? catalogs.blueprint.find(\n (catalog) =>\n catalog.meta.name === pointer.name &&\n catalog.meta.version === pointer.version\n )\n : undefined;\n\n if (pointer && !blueprintCatalog) {\n issues.push(\n issue({\n code: 'MISSING_BLUEPRINT_CATALOG',\n severity: 'error',\n path: 'translationCatalog',\n message: `Blueprint translation catalog \"${pointer.name}@${pointer.version}\" is not loaded in context.`,\n })\n );\n }\n\n const requiredKeys = new Set<string>();\n if (blueprint.branding?.appNameKey) {\n requiredKeys.add(blueprint.branding.appNameKey);\n if (\n blueprintCatalog &&\n !hasTranslationEntry(\n blueprintCatalog.entries,\n blueprint.branding.appNameKey,\n blueprintCatalog.defaultLocale\n )\n ) {\n issues.push(\n issue({\n code: 'MISSING_TRANSLATION_KEY',\n severity: 'error',\n path: 'branding.appNameKey',\n message: `Translation key \"${blueprint.branding.appNameKey}\" is missing for locale \"${blueprintCatalog.defaultLocale}\".`,\n })\n );\n }\n }\n\n const tenantLocales = tenant.locales;\n if (tenantLocales) {\n const { defaultLocale, enabledLocales } = tenantLocales;\n if (!enabledLocales.includes(defaultLocale)) {\n issues.push(\n issue({\n code: 'LOCALE_NOT_ENABLED',\n severity: 'warning',\n path: 'locales.enabledLocales',\n message: `enabledLocales does not include defaultLocale \"${defaultLocale}\".`,\n })\n );\n }\n if (blueprintCatalog) {\n const supported = new Set(blueprintCatalog.supportedLocales);\n for (const locale of [defaultLocale, ...enabledLocales]) {\n if (!supported.has(locale)) {\n issues.push(\n issue({\n code: 'UNSUPPORTED_LOCALE',\n severity: 'error',\n path: 'locales.enabledLocales',\n message: `Locale \"${locale}\" is not supported by blueprint catalog \"${blueprintCatalog.meta.name}\".`,\n })\n );\n }\n }\n }\n }\n\n const allowedKeys = new Set<string>();\n for (const catalog of catalogs.blueprint) {\n for (const entry of catalog.entries) {\n allowedKeys.add(entry.key);\n }\n }\n for (const catalog of catalogs.platform) {\n for (const entry of catalog.entries) {\n allowedKeys.add(entry.key);\n }\n }\n\n const overrides = tenant.translationOverrides?.entries ?? [];\n overrides.forEach((entry, index) => {\n const path = `translationOverrides.entries[${index}]`;\n if (!allowedKeys.has(entry.key)) {\n issues.push(\n issue({\n code: 'UNKNOWN_TRANSLATION_KEY',\n severity: 'error',\n path,\n message: `Override references unknown key \"${entry.key}\".`,\n })\n );\n }\n if (blueprintCatalog) {\n const supportedLocales = new Set([\n ...blueprintCatalog.supportedLocales,\n ...(tenant.locales?.enabledLocales ?? []),\n tenant.locales?.defaultLocale ?? blueprintCatalog.defaultLocale,\n ]);\n if (!supportedLocales.has(entry.locale)) {\n issues.push(\n issue({\n code: 'UNSUPPORTED_LOCALE_OVERRIDE',\n severity: 'error',\n path,\n message: `Locale \"${entry.locale}\" is not enabled for tenant overrides.`,\n })\n );\n }\n }\n });\n\n return issues;\n },\n};\n\nconst resolvedIntegrationRule: ResolvedRule = {\n scope: 'resolved',\n name: 'integration.required-slots',\n category: 'integration',\n validate(blueprint, resolved) {\n const issues: ValidationIssue[] = [];\n const requiredSlots = (blueprint.integrationSlots ?? []).filter(\n (slot) => slot.required\n );\n for (const slot of requiredSlots) {\n const satisfied = resolved.integrations.some(\n (integration) => integration.slot.slotId === slot.slotId\n );\n if (!satisfied) {\n issues.push(\n issue({\n code: 'MISSING_REQUIRED_SLOT',\n severity: 'error',\n path: `integrations.${slot.slotId}`,\n message: `Resolved config is missing integration slot \"${slot.slotId}\".`,\n })\n );\n }\n }\n for (const integration of resolved.integrations) {\n if (\n integration.connection.status === 'disconnected' ||\n integration.connection.status === 'error'\n ) {\n issues.push(\n issue({\n code: 'CONNECTION_NOT_READY',\n severity: 'error',\n path: `integrations.${integration.slot.slotId}`,\n message: `Resolved integration \"${integration.slot.slotId}\" uses a connection in status \"${integration.connection.status}\".`,\n })\n );\n }\n }\n return issues;\n },\n};\n\nconst resolvedTranslationRule: ResolvedRule = {\n scope: 'resolved',\n name: 'translation.default-locale',\n category: 'translation',\n validate(_blueprint, resolved) {\n const issues: ValidationIssue[] = [];\n const translation = resolved.translation;\n if (\n translation &&\n !translation.supportedLocales.includes(translation.defaultLocale)\n ) {\n issues.push(\n issue({\n code: 'DEFAULT_LOCALE_NOT_SUPPORTED',\n severity: 'warning',\n path: 'translation.defaultLocale',\n message:\n 'supportedLocales should include defaultLocale for consistent fallback behaviour.',\n })\n );\n }\n return issues;\n },\n};\n\nfunction issue(input: ValidationIssue): ValidationIssue {\n return input;\n}\n\nfunction dedupeIssues(issues: ValidationIssue[]): ValidationIssue[] {\n const map = new Map<string, ValidationIssue>();\n for (const current of issues) {\n const key = `${current.code}|${current.path}|${current.severity}`;\n if (!map.has(key)) {\n map.set(key, current);\n }\n }\n return [...map.values()];\n}\n\nfunction capabilityRefKey(ref: CapabilityRef): string {\n return `${ref.key}@${ref.version}`;\n}\n\nfunction integrationProvidesCapability(\n spec: IntegrationSpec,\n required: CapabilityRef\n): boolean {\n return spec.capabilities.provides.some(\n (provided) =>\n provided.key === required.key && provided.version === required.version\n );\n}\n\nfunction lookupIntegrationSpec(\n registry: IntegrationSpecRegistry | undefined,\n connection: IntegrationConnection\n): IntegrationSpec | undefined {\n if (!registry) return undefined;\n return registry.get(\n connection.meta.integrationKey,\n connection.meta.integrationVersion\n );\n}\n\nfunction extractExtension(url: string): string | undefined {\n const [raw] = url.split('?');\n if (!raw) return undefined;\n const lastDot = raw.lastIndexOf('.');\n if (lastDot === -1) return undefined;\n return raw.slice(lastDot + 1).toLowerCase();\n}\n\nfunction normalizeCatalogs(\n catalogs: ValidationContext['translationCatalogs']\n): {\n platform: PlatformTranslationCatalog[];\n blueprint: BlueprintTranslationCatalog[];\n} {\n if (!catalogs) return { platform: [], blueprint: [] };\n const platform = catalogs.platform\n ? Array.isArray(catalogs.platform)\n ? catalogs.platform\n : [catalogs.platform]\n : [];\n const blueprint = catalogs.blueprint\n ? Array.isArray(catalogs.blueprint)\n ? catalogs.blueprint\n : [catalogs.blueprint]\n : [];\n return { platform, blueprint };\n}\n\nfunction hasTranslationEntry(\n entries: TranslationEntry[],\n key: string,\n locale: string\n): boolean {\n return entries.some((entry) => entry.key === key && entry.locale === locale);\n}\n"],"mappings":"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"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { CapabilityRegistry, CapabilitySpec } from "../capabilities.js";
|
|
2
|
-
|
|
3
|
-
//#region src/capabilities/openbanking.d.ts
|
|
4
|
-
declare const openBankingAccountsReadCapability: CapabilitySpec;
|
|
5
|
-
declare const openBankingTransactionsReadCapability: CapabilitySpec;
|
|
6
|
-
declare const openBankingBalancesReadCapability: CapabilitySpec;
|
|
7
|
-
declare function registerOpenBankingCapabilities(registry: CapabilityRegistry): CapabilityRegistry;
|
|
8
|
-
//#endregion
|
|
9
|
-
export { openBankingAccountsReadCapability, openBankingBalancesReadCapability, openBankingTransactionsReadCapability, registerOpenBankingCapabilities };
|
|
10
|
-
//# sourceMappingURL=openbanking.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openbanking.d.ts","names":[],"sources":["../../src/capabilities/openbanking.ts"],"sourcesContent":[],"mappings":";;;cAMa,mCAAmC;cAsCnC,uCAAuC;AAtCvC,cAqEA,iCArEmC,EAqEA,cAjC/C;AAEY,iBA6DG,+BAAA,CAhCf,QA7BmD,EA8DxC,kBAjCX,CAAA,EAkCE,kBAlCF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openbanking.js","names":["openBankingAccountsReadCapability: CapabilitySpec","openBankingTransactionsReadCapability: CapabilitySpec","openBankingBalancesReadCapability: CapabilitySpec"],"sources":["../../src/capabilities/openbanking.ts"],"sourcesContent":["import type { CapabilityRegistry, CapabilitySpec } from '../capabilities';\nimport { StabilityEnum } from '../ownership';\n\nconst OWNERS = ['platform.finance'] as const;\nconst TAGS = ['open-banking', 'finance'] as const;\n\nexport const openBankingAccountsReadCapability: CapabilitySpec = {\n meta: {\n key: 'openbanking.accounts.read',\n version: 1,\n kind: 'integration',\n title: 'Open Banking Accounts (Read)',\n description:\n 'Provides read-only access to linked bank accounts, including account summaries and metadata.',\n domain: 'finance',\n owners: [...OWNERS],\n tags: [...TAGS],\n stability: StabilityEnum.Experimental,\n },\n provides: [\n {\n surface: 'operation',\n name: 'openbanking.accounts.list',\n version: 1,\n description:\n 'List bank accounts linked to a Powens open banking connection.',\n },\n {\n surface: 'operation',\n name: 'openbanking.accounts.get',\n version: 1,\n description:\n 'Retrieve the canonical bank account record for a specific account.',\n },\n {\n surface: 'operation',\n name: 'openbanking.accounts.sync',\n version: 1,\n description:\n 'Trigger a refresh of bank account metadata from the open banking provider.',\n },\n ],\n};\n\nexport const openBankingTransactionsReadCapability: CapabilitySpec = {\n meta: {\n key: 'openbanking.transactions.read',\n version: 1,\n kind: 'integration',\n title: 'Open Banking Transactions (Read)',\n description:\n 'Enables retrieval of transaction history for linked bank accounts via open banking providers.',\n domain: 'finance',\n owners: [...OWNERS],\n tags: [...TAGS, 'transactions'],\n stability: StabilityEnum.Experimental,\n },\n provides: [\n {\n surface: 'operation',\n name: 'openbanking.transactions.list',\n version: 1,\n description:\n 'List transactions for a given bank account with optional date filtering.',\n },\n {\n surface: 'operation',\n name: 'openbanking.transactions.sync',\n version: 1,\n description:\n 'Synchronise transactions from the open banking provider into the canonical ledger.',\n },\n ],\n};\n\nexport const openBankingBalancesReadCapability: CapabilitySpec = {\n meta: {\n key: 'openbanking.balances.read',\n version: 1,\n kind: 'integration',\n title: 'Open Banking Balances (Read)',\n description:\n 'Allows querying of current and available balances for linked bank accounts via open banking providers.',\n domain: 'finance',\n owners: [...OWNERS],\n tags: [...TAGS, 'balances'],\n stability: StabilityEnum.Experimental,\n },\n provides: [\n {\n surface: 'operation',\n name: 'openbanking.balances.get',\n version: 1,\n description:\n 'Retrieve the latest known balances for a specified bank account.',\n },\n {\n surface: 'operation',\n name: 'openbanking.balances.refresh',\n version: 1,\n description: 'Force a balance refresh from the open banking provider.',\n },\n ],\n};\n\nexport function registerOpenBankingCapabilities(\n registry: CapabilityRegistry\n): CapabilityRegistry {\n return registry\n .register(openBankingAccountsReadCapability)\n .register(openBankingTransactionsReadCapability)\n .register(openBankingBalancesReadCapability);\n}\n"],"mappings":"gDAGA,MAAM,EAAS,CAAC,mBAAmB,CAC7B,EAAO,CAAC,eAAgB,UAAU,CAE3BA,EAAoD,CAC/D,KAAM,CACJ,IAAK,4BACL,QAAS,EACT,KAAM,cACN,MAAO,+BACP,YACE,+FACF,OAAQ,UACR,OAAQ,CAAC,GAAG,EAAO,CACnB,KAAM,CAAC,GAAG,EAAK,CACf,UAAW,EAAc,aAC1B,CACD,SAAU,CACR,CACE,QAAS,YACT,KAAM,4BACN,QAAS,EACT,YACE,iEACH,CACD,CACE,QAAS,YACT,KAAM,2BACN,QAAS,EACT,YACE,qEACH,CACD,CACE,QAAS,YACT,KAAM,4BACN,QAAS,EACT,YACE,6EACH,CACF,CACF,CAEYC,EAAwD,CACnE,KAAM,CACJ,IAAK,gCACL,QAAS,EACT,KAAM,cACN,MAAO,mCACP,YACE,gGACF,OAAQ,UACR,OAAQ,CAAC,GAAG,EAAO,CACnB,KAAM,CAAC,GAAG,EAAM,eAAe,CAC/B,UAAW,EAAc,aAC1B,CACD,SAAU,CACR,CACE,QAAS,YACT,KAAM,gCACN,QAAS,EACT,YACE,2EACH,CACD,CACE,QAAS,YACT,KAAM,gCACN,QAAS,EACT,YACE,qFACH,CACF,CACF,CAEYC,EAAoD,CAC/D,KAAM,CACJ,IAAK,4BACL,QAAS,EACT,KAAM,cACN,MAAO,+BACP,YACE,yGACF,OAAQ,UACR,OAAQ,CAAC,GAAG,EAAO,CACnB,KAAM,CAAC,GAAG,EAAM,WAAW,CAC3B,UAAW,EAAc,aAC1B,CACD,SAAU,CACR,CACE,QAAS,YACT,KAAM,2BACN,QAAS,EACT,YACE,mEACH,CACD,CACE,QAAS,YACT,KAAM,+BACN,QAAS,EACT,YAAa,0DACd,CACF,CACF,CAED,SAAgB,EACd,EACoB,CACpB,OAAO,EACJ,SAAS,EAAkC,CAC3C,SAAS,EAAsC,CAC/C,SAAS,EAAkC"}
|
package/dist/capabilities.d.ts
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { OwnerShipMeta } from "./ownership.js";
|
|
2
|
-
|
|
3
|
-
//#region src/capabilities.d.ts
|
|
4
|
-
type CapabilityKind = 'api' | 'event' | 'data' | 'ui' | 'integration';
|
|
5
|
-
type CapabilitySurface = 'operation' | 'event' | 'workflow' | 'presentation' | 'resource';
|
|
6
|
-
interface CapabilitySurfaceRef {
|
|
7
|
-
surface: CapabilitySurface;
|
|
8
|
-
name: string;
|
|
9
|
-
version: number;
|
|
10
|
-
description?: string;
|
|
11
|
-
}
|
|
12
|
-
interface CapabilityMeta extends OwnerShipMeta {
|
|
13
|
-
/** Stable capability slug (e.g., "payments.stripe"). */
|
|
14
|
-
key: string;
|
|
15
|
-
/** Increment when the capability shape changes. */
|
|
16
|
-
version: number;
|
|
17
|
-
kind: CapabilityKind;
|
|
18
|
-
}
|
|
19
|
-
interface CapabilityRequirement {
|
|
20
|
-
key: string;
|
|
21
|
-
version?: number;
|
|
22
|
-
kind?: CapabilityKind;
|
|
23
|
-
optional?: boolean;
|
|
24
|
-
reason?: string;
|
|
25
|
-
}
|
|
26
|
-
interface CapabilityRef {
|
|
27
|
-
key: string;
|
|
28
|
-
version: number;
|
|
29
|
-
}
|
|
30
|
-
interface CapabilitySpec {
|
|
31
|
-
meta: CapabilityMeta;
|
|
32
|
-
provides?: CapabilitySurfaceRef[];
|
|
33
|
-
requires?: CapabilityRequirement[];
|
|
34
|
-
}
|
|
35
|
-
declare class CapabilityRegistry {
|
|
36
|
-
private readonly items;
|
|
37
|
-
register(spec: CapabilitySpec): this;
|
|
38
|
-
list(): CapabilitySpec[];
|
|
39
|
-
get(key: string, version?: number): CapabilitySpec | undefined;
|
|
40
|
-
satisfies(requirement: CapabilityRequirement, additional?: CapabilityRef[] | undefined): boolean;
|
|
41
|
-
}
|
|
42
|
-
declare function capabilityKey(spec: CapabilitySpec): string;
|
|
43
|
-
declare function defineCapability(spec: CapabilitySpec): CapabilitySpec;
|
|
44
|
-
//#endregion
|
|
45
|
-
export { CapabilityKind, CapabilityMeta, CapabilityRef, CapabilityRegistry, CapabilityRequirement, CapabilitySpec, CapabilitySurface, CapabilitySurfaceRef, capabilityKey, defineCapability };
|
|
46
|
-
//# sourceMappingURL=capabilities.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities.d.ts","names":[],"sources":["../src/capabilities.ts"],"sourcesContent":[],"mappings":";;;KAEY,cAAA;KAEA,iBAAA;AAFA,UASK,oBAAA,CATS;EAEd,OAAA,EAQD,iBARkB;EAOZ,IAAA,EAAA,MAAA;EAOA,OAAA,EAAA,MAAA;EAQA,WAAA,CAAA,EAAA,MAAA;AAQjB;AAKiB,UArBA,cAAA,SAAuB,aAqBT,CAAA;EACvB;EACK,GAAA,EAAA,MAAA;EACA;EAAqB,OAAA,EAAA,MAAA;EAKrB,IAAA,EAxBL,cAwBK;;AAUH,UA/BO,qBAAA,CA+BP;EAI4B,GAAA,EAAA,MAAA;EAerB,OAAA,CAAA,EAAA,MAAA;EACA,IAAA,CAAA,EAhDR,cAgDQ;EAAa,QAAA,CAAA,EAAA,OAAA;EA6Bd,MAAA,CAAA,EAAA,MAAA;AAIhB;UA5EiB,aAAA;;;;UAKA,cAAA;QACT;aACK;aACA;;cAKA,kBAAA;;iBAGI;UAOP;sCAI4B;yBAerB,oCACA;;iBA6BD,aAAA,OAAoB;iBAIpB,gBAAA,OAAuB,iBAAiB"}
|
package/dist/capabilities.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities.js","names":["candidate: CapabilitySpec | undefined"],"sources":["../src/capabilities.ts"],"sourcesContent":["import type { OwnerShipMeta } from './ownership';\n\nexport type CapabilityKind = 'api' | 'event' | 'data' | 'ui' | 'integration';\n\nexport type CapabilitySurface =\n | 'operation'\n | 'event'\n | 'workflow'\n | 'presentation'\n | 'resource';\n\nexport interface CapabilitySurfaceRef {\n surface: CapabilitySurface;\n name: string;\n version: number;\n description?: string;\n}\n\nexport interface CapabilityMeta extends OwnerShipMeta {\n /** Stable capability slug (e.g., \"payments.stripe\"). */\n key: string;\n /** Increment when the capability shape changes. */\n version: number;\n kind: CapabilityKind;\n}\n\nexport interface CapabilityRequirement {\n key: string;\n version?: number;\n kind?: CapabilityKind;\n optional?: boolean;\n reason?: string;\n}\n\nexport interface CapabilityRef {\n key: string;\n version: number;\n}\n\nexport interface CapabilitySpec {\n meta: CapabilityMeta;\n provides?: CapabilitySurfaceRef[];\n requires?: CapabilityRequirement[];\n}\n\nconst capKey = (key: string, version: number) => `${key}.v${version}`;\n\nexport class CapabilityRegistry {\n private readonly items = new Map<string, CapabilitySpec>();\n\n register(spec: CapabilitySpec): this {\n const key = capKey(spec.meta.key, spec.meta.version);\n if (this.items.has(key)) throw new Error(`Duplicate capability ${key}`);\n this.items.set(key, spec);\n return this;\n }\n\n list(): CapabilitySpec[] {\n return [...this.items.values()];\n }\n\n get(key: string, version?: number): CapabilitySpec | undefined {\n if (version != null) return this.items.get(capKey(key, version));\n let candidate: CapabilitySpec | undefined;\n let max = -Infinity;\n for (const spec of this.items.values()) {\n if (spec.meta.key !== key) continue;\n if (spec.meta.version > max) {\n max = spec.meta.version;\n candidate = spec;\n }\n }\n return candidate;\n }\n\n satisfies(\n requirement: CapabilityRequirement,\n additional?: CapabilityRef[] | undefined\n ): boolean {\n if (requirement.optional) return true;\n if (additional?.some((ref) => matchesRequirement(ref, requirement)))\n return true;\n const spec = requirement.version\n ? this.get(requirement.key, requirement.version)\n : this.get(requirement.key);\n if (!spec) return false;\n if (requirement.kind && spec.meta.kind !== requirement.kind) return false;\n if (\n requirement.version != null &&\n spec.meta.version !== requirement.version\n )\n return false;\n return true;\n }\n}\n\nfunction matchesRequirement(\n ref: CapabilityRef,\n requirement: CapabilityRequirement\n) {\n if (ref.key !== requirement.key) return false;\n if (requirement.version != null && ref.version !== requirement.version)\n return false;\n return true;\n}\n\nexport function capabilityKey(spec: CapabilitySpec) {\n return capKey(spec.meta.key, spec.meta.version);\n}\n\nexport function defineCapability(spec: CapabilitySpec): CapabilitySpec {\n return spec;\n}\n"],"mappings":"AA6CA,MAAM,GAAU,EAAa,IAAoB,GAAG,EAAI,IAAI,IAE5D,IAAa,EAAb,KAAgC,CAC9B,MAAyB,IAAI,IAE7B,SAAS,EAA4B,CACnC,IAAM,EAAM,EAAO,EAAK,KAAK,IAAK,EAAK,KAAK,QAAQ,CACpD,GAAI,KAAK,MAAM,IAAI,EAAI,CAAE,MAAU,MAAM,wBAAwB,IAAM,CAEvE,OADA,KAAK,MAAM,IAAI,EAAK,EAAK,CAClB,KAGT,MAAyB,CACvB,MAAO,CAAC,GAAG,KAAK,MAAM,QAAQ,CAAC,CAGjC,IAAI,EAAa,EAA8C,CAC7D,GAAI,GAAW,KAAM,OAAO,KAAK,MAAM,IAAI,EAAO,EAAK,EAAQ,CAAC,CAChE,IAAIA,EACA,EAAM,KACV,IAAK,IAAM,KAAQ,KAAK,MAAM,QAAQ,CAChC,EAAK,KAAK,MAAQ,GAClB,EAAK,KAAK,QAAU,IACtB,EAAM,EAAK,KAAK,QAChB,EAAY,GAGhB,OAAO,EAGT,UACE,EACA,EACS,CAET,GADI,EAAY,UACZ,GAAY,KAAM,GAAQ,EAAmB,EAAK,EAAY,CAAC,CACjE,MAAO,GACT,IAAM,EAAO,EAAY,QACrB,KAAK,IAAI,EAAY,IAAK,EAAY,QAAQ,CAC9C,KAAK,IAAI,EAAY,IAAI,CAQ7B,MALA,EAFI,CAAC,GACD,EAAY,MAAQ,EAAK,KAAK,OAAS,EAAY,MAErD,EAAY,SAAW,MACvB,EAAK,KAAK,UAAY,EAAY,WAOxC,SAAS,EACP,EACA,EACA,CAIA,MAFA,EADI,EAAI,MAAQ,EAAY,KACxB,EAAY,SAAW,MAAQ,EAAI,UAAY,EAAY,SAKjE,SAAgB,EAAc,EAAsB,CAClD,OAAO,EAAO,EAAK,KAAK,IAAK,EAAK,KAAK,QAAQ,CAGjD,SAAgB,EAAiB,EAAsC,CACrE,OAAO"}
|
package/dist/client/index.d.ts
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { ComponentMap, createEngineWithDefaults, createFeatureModule, registerFeature, renderFeaturePresentation } from "./react/feature-render.js";
|
|
2
|
-
import { ComputationMap, CreateRendererOptions, DriverSlots, RenderOptions, ResolverMap, createFormRenderer } from "./react/form-render.js";
|
|
3
|
-
import { ShadcnDriver, shadcnDriver } from "./react/drivers/shadcn.js";
|
|
4
|
-
import { RnReusablesDriver, rnReusablesDriver } from "./react/drivers/rn-reusables.js";
|
|
5
|
-
import "./react/index.js";
|
|
6
|
-
export { ComponentMap, ComputationMap, CreateRendererOptions, DriverSlots, RenderOptions, ResolverMap, RnReusablesDriver, ShadcnDriver, createEngineWithDefaults, createFeatureModule, createFormRenderer, registerFeature, renderFeaturePresentation, rnReusablesDriver, shadcnDriver };
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { DriverSlots } from "../form-render.js";
|
|
2
|
-
|
|
3
|
-
//#region src/client/react/drivers/rn-reusables.d.ts
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Create a React Native UI-kit driver by mapping required slots to components.
|
|
7
|
-
* Host apps should import their UI-kit primitives and pass them here.
|
|
8
|
-
*
|
|
9
|
-
* Example usage:
|
|
10
|
-
* ```tsx
|
|
11
|
-
* import { rnReusablesDriver } from '@lssm/lib.contracts/client/react/drivers/rn-reusables';
|
|
12
|
-
* import { Input, Textarea, Button } from '@lssm/lib.ui-kit/ui';
|
|
13
|
-
*
|
|
14
|
-
* const driver = rnReusablesDriver({
|
|
15
|
-
* Input, Textarea, Button, // ... other components
|
|
16
|
-
* });
|
|
17
|
-
* ```
|
|
18
|
-
*/
|
|
19
|
-
declare function rnReusablesDriver(slots: DriverSlots): DriverSlots;
|
|
20
|
-
type RnReusablesDriver = ReturnType<typeof rnReusablesDriver>;
|
|
21
|
-
//#endregion
|
|
22
|
-
export { RnReusablesDriver, rnReusablesDriver };
|
|
23
|
-
//# sourceMappingURL=rn-reusables.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rn-reusables.d.ts","names":[],"sources":["../../../../src/client/react/drivers/rn-reusables.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;;;;;iBAoBgB,iBAAA,QAAyB,cAAc;KAI3C,iBAAA,GAAoB,kBAAkB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rn-reusables.js","names":[],"sources":["../../../../src/client/react/drivers/rn-reusables.ts"],"sourcesContent":["/**\n * React Native driver for FormSpec using @lssm/lib.ui-kit components.\n * Maps contract form slots to mobile UI-kit primitives.\n */\nimport type { DriverSlots } from '../form-render';\n\n/**\n * Create a React Native UI-kit driver by mapping required slots to components.\n * Host apps should import their UI-kit primitives and pass them here.\n *\n * Example usage:\n * ```tsx\n * import { rnReusablesDriver } from '@lssm/lib.contracts/client/react/drivers/rn-reusables';\n * import { Input, Textarea, Button } from '@lssm/lib.ui-kit/ui';\n *\n * const driver = rnReusablesDriver({\n * Input, Textarea, Button, // ... other components\n * });\n * ```\n */\nexport function rnReusablesDriver(slots: DriverSlots): DriverSlots {\n return slots;\n}\n\nexport type RnReusablesDriver = ReturnType<typeof rnReusablesDriver>;\n"],"mappings":"AAoBA,SAAgB,EAAkB,EAAiC,CACjE,OAAO"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { DriverSlots } from "../form-render.js";
|
|
2
|
-
|
|
3
|
-
//#region src/client/react/drivers/shadcn.d.ts
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Create a shadcn/ui driver by mapping required slots to components.
|
|
7
|
-
* Host apps should import their shadcn primitives and pass them here.
|
|
8
|
-
*/
|
|
9
|
-
declare function shadcnDriver(slots: DriverSlots): DriverSlots;
|
|
10
|
-
type ShadcnDriver = ReturnType<typeof shadcnDriver>;
|
|
11
|
-
//#endregion
|
|
12
|
-
export { ShadcnDriver, shadcnDriver };
|
|
13
|
-
//# sourceMappingURL=shadcn.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shadcn.d.ts","names":[],"sources":["../../../../src/client/react/drivers/shadcn.ts"],"sourcesContent":[],"mappings":";;;;;;AAMA;AAIA;iBAJgB,YAAA,QAAoB,cAAc;KAItC,YAAA,GAAe,kBAAkB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shadcn.js","names":[],"sources":["../../../../src/client/react/drivers/shadcn.ts"],"sourcesContent":["import type { DriverSlots } from '../form-render';\n\n/**\n * Create a shadcn/ui driver by mapping required slots to components.\n * Host apps should import their shadcn primitives and pass them here.\n */\nexport function shadcnDriver(slots: DriverSlots): DriverSlots {\n return slots;\n}\n\nexport type ShadcnDriver = ReturnType<typeof shadcnDriver>;\n"],"mappings":"AAMA,SAAgB,EAAa,EAAiC,CAC5D,OAAO"}
|