@lssm/lib.contracts 1.2.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 +361 -0
- package/dist/app-config/branding.d.ts +56 -0
- package/dist/app-config/branding.d.ts.map +1 -0
- package/dist/app-config/branding.js +0 -0
- package/dist/app-config/contracts.d.ts +243 -0
- package/dist/app-config/contracts.d.ts.map +1 -0
- package/dist/app-config/contracts.js +2 -0
- package/dist/app-config/contracts.js.map +1 -0
- package/dist/app-config/events.d.ts +121 -0
- package/dist/app-config/events.d.ts.map +1 -0
- package/dist/app-config/events.js +2 -0
- package/dist/app-config/events.js.map +1 -0
- package/dist/app-config/index.d.ts +8 -0
- package/dist/app-config/index.js +1 -0
- package/dist/app-config/lifecycle-contracts.d.ts +381 -0
- package/dist/app-config/lifecycle-contracts.d.ts.map +1 -0
- package/dist/app-config/lifecycle-contracts.js +2 -0
- package/dist/app-config/lifecycle-contracts.js.map +1 -0
- package/dist/app-config/lifecycle.d.ts +28 -0
- package/dist/app-config/lifecycle.d.ts.map +1 -0
- package/dist/app-config/lifecycle.js +0 -0
- package/dist/app-config/runtime.d.ts +115 -0
- package/dist/app-config/runtime.d.ts.map +1 -0
- package/dist/app-config/runtime.js +2 -0
- package/dist/app-config/runtime.js.map +1 -0
- package/dist/app-config/spec.d.ts +176 -0
- package/dist/app-config/spec.d.ts.map +1 -0
- package/dist/app-config/spec.js +2 -0
- package/dist/app-config/spec.js.map +1 -0
- package/dist/app-config/validation.d.ts +48 -0
- package/dist/app-config/validation.d.ts.map +1 -0
- package/dist/app-config/validation.js +2 -0
- package/dist/app-config/validation.js.map +1 -0
- package/dist/capabilities/openbanking.d.ts +10 -0
- package/dist/capabilities/openbanking.d.ts.map +1 -0
- package/dist/capabilities/openbanking.js +2 -0
- package/dist/capabilities/openbanking.js.map +1 -0
- package/dist/capabilities.d.ts +45 -0
- package/dist/capabilities.d.ts.map +1 -0
- package/dist/capabilities.js +2 -0
- package/dist/capabilities.js.map +1 -0
- package/dist/client/index.d.ts +6 -0
- package/dist/client/index.js +1 -0
- package/dist/client/react/drivers/rn-reusables.d.ts +23 -0
- package/dist/client/react/drivers/rn-reusables.d.ts.map +1 -0
- package/dist/client/react/drivers/rn-reusables.js +2 -0
- package/dist/client/react/drivers/rn-reusables.js.map +1 -0
- package/dist/client/react/drivers/shadcn.d.ts +13 -0
- package/dist/client/react/drivers/shadcn.d.ts.map +1 -0
- package/dist/client/react/drivers/shadcn.js +2 -0
- package/dist/client/react/drivers/shadcn.js.map +1 -0
- package/dist/client/react/feature-render.d.ts +21 -0
- package/dist/client/react/feature-render.d.ts.map +1 -0
- package/dist/client/react/feature-render.js +2 -0
- package/dist/client/react/feature-render.js.map +1 -0
- package/dist/client/react/form-render.d.ts +91 -0
- package/dist/client/react/form-render.d.ts.map +1 -0
- package/dist/client/react/form-render.js +2 -0
- package/dist/client/react/form-render.js.map +1 -0
- package/dist/client/react/index.d.ts +5 -0
- package/dist/client/react/index.js +1 -0
- package/dist/contracts-adapter-hydration.d.ts +16 -0
- package/dist/contracts-adapter-hydration.d.ts.map +1 -0
- package/dist/contracts-adapter-hydration.js +2 -0
- package/dist/contracts-adapter-hydration.js.map +1 -0
- package/dist/contracts-adapter-input.d.ts +10 -0
- package/dist/contracts-adapter-input.d.ts.map +1 -0
- package/dist/contracts-adapter-input.js +2 -0
- package/dist/contracts-adapter-input.js.map +1 -0
- package/dist/data-views.d.ts +132 -0
- package/dist/data-views.d.ts.map +1 -0
- package/dist/data-views.js +2 -0
- package/dist/data-views.js.map +1 -0
- package/dist/events.d.ts +44 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +2 -0
- package/dist/events.js.map +1 -0
- package/dist/experiments/evaluator.d.ts +38 -0
- package/dist/experiments/evaluator.d.ts.map +1 -0
- package/dist/experiments/evaluator.js +2 -0
- package/dist/experiments/evaluator.js.map +1 -0
- package/dist/experiments/spec.d.ts +90 -0
- package/dist/experiments/spec.d.ts.map +1 -0
- package/dist/experiments/spec.js +2 -0
- package/dist/experiments/spec.js.map +1 -0
- package/dist/features.d.ts +88 -0
- package/dist/features.d.ts.map +1 -0
- package/dist/features.js +2 -0
- package/dist/features.js.map +1 -0
- package/dist/forms.d.ts +258 -0
- package/dist/forms.d.ts.map +1 -0
- package/dist/forms.js +2 -0
- package/dist/forms.js.map +1 -0
- package/dist/graphql-federation/src/index.js +2 -0
- package/dist/graphql-federation/src/index.js.map +1 -0
- package/dist/index.d.ts +129 -0
- package/dist/index.js +1 -0
- package/dist/install.d.ts +76 -0
- package/dist/install.d.ts.map +1 -0
- package/dist/install.js +2 -0
- package/dist/install.js.map +1 -0
- package/dist/integrations/binding.d.ts +18 -0
- package/dist/integrations/binding.d.ts.map +1 -0
- package/dist/integrations/binding.js +0 -0
- package/dist/integrations/connection.d.ts +52 -0
- package/dist/integrations/connection.d.ts.map +1 -0
- package/dist/integrations/connection.js +0 -0
- package/dist/integrations/contracts.d.ts +434 -0
- package/dist/integrations/contracts.d.ts.map +1 -0
- package/dist/integrations/contracts.js +2 -0
- package/dist/integrations/contracts.js.map +1 -0
- package/dist/integrations/health.d.ts +22 -0
- package/dist/integrations/health.d.ts.map +1 -0
- package/dist/integrations/health.js +2 -0
- package/dist/integrations/health.js.map +1 -0
- package/dist/integrations/index.d.ts +53 -0
- package/dist/integrations/index.js +1 -0
- package/dist/integrations/openbanking/contracts/accounts.d.ts +286 -0
- package/dist/integrations/openbanking/contracts/accounts.d.ts.map +1 -0
- package/dist/integrations/openbanking/contracts/accounts.js +2 -0
- package/dist/integrations/openbanking/contracts/accounts.js.map +1 -0
- package/dist/integrations/openbanking/contracts/balances.d.ts +162 -0
- package/dist/integrations/openbanking/contracts/balances.d.ts.map +1 -0
- package/dist/integrations/openbanking/contracts/balances.js +2 -0
- package/dist/integrations/openbanking/contracts/balances.js.map +1 -0
- package/dist/integrations/openbanking/contracts/index.d.ts +10 -0
- package/dist/integrations/openbanking/contracts/index.d.ts.map +1 -0
- package/dist/integrations/openbanking/contracts/index.js +2 -0
- package/dist/integrations/openbanking/contracts/index.js.map +1 -0
- package/dist/integrations/openbanking/contracts/transactions.d.ts +210 -0
- package/dist/integrations/openbanking/contracts/transactions.d.ts.map +1 -0
- package/dist/integrations/openbanking/contracts/transactions.js +2 -0
- package/dist/integrations/openbanking/contracts/transactions.js.map +1 -0
- package/dist/integrations/openbanking/guards.d.ts +13 -0
- package/dist/integrations/openbanking/guards.d.ts.map +1 -0
- package/dist/integrations/openbanking/guards.js +2 -0
- package/dist/integrations/openbanking/guards.js.map +1 -0
- package/dist/integrations/openbanking/models.d.ts +226 -0
- package/dist/integrations/openbanking/models.d.ts.map +1 -0
- package/dist/integrations/openbanking/models.js +2 -0
- package/dist/integrations/openbanking/models.js.map +1 -0
- package/dist/integrations/openbanking/telemetry.d.ts +16 -0
- package/dist/integrations/openbanking/telemetry.d.ts.map +1 -0
- package/dist/integrations/openbanking/telemetry.js +2 -0
- package/dist/integrations/openbanking/telemetry.js.map +1 -0
- package/dist/integrations/providers/calendar.d.ts +79 -0
- package/dist/integrations/providers/calendar.d.ts.map +1 -0
- package/dist/integrations/providers/calendar.js +0 -0
- package/dist/integrations/providers/elevenlabs.d.ts +8 -0
- package/dist/integrations/providers/elevenlabs.d.ts.map +1 -0
- package/dist/integrations/providers/elevenlabs.js +2 -0
- package/dist/integrations/providers/elevenlabs.js.map +1 -0
- package/dist/integrations/providers/email.d.ts +87 -0
- package/dist/integrations/providers/email.d.ts.map +1 -0
- package/dist/integrations/providers/email.js +0 -0
- package/dist/integrations/providers/embedding.d.ts +25 -0
- package/dist/integrations/providers/embedding.d.ts.map +1 -0
- package/dist/integrations/providers/embedding.js +0 -0
- package/dist/integrations/providers/gcs-storage.d.ts +8 -0
- package/dist/integrations/providers/gcs-storage.d.ts.map +1 -0
- package/dist/integrations/providers/gcs-storage.js +2 -0
- package/dist/integrations/providers/gcs-storage.js.map +1 -0
- package/dist/integrations/providers/gmail.d.ts +8 -0
- package/dist/integrations/providers/gmail.d.ts.map +1 -0
- package/dist/integrations/providers/gmail.js +2 -0
- package/dist/integrations/providers/gmail.js.map +1 -0
- package/dist/integrations/providers/google-calendar.d.ts +8 -0
- package/dist/integrations/providers/google-calendar.d.ts.map +1 -0
- package/dist/integrations/providers/google-calendar.js +2 -0
- package/dist/integrations/providers/google-calendar.js.map +1 -0
- package/dist/integrations/providers/impls/elevenlabs-voice.d.ts +21 -0
- package/dist/integrations/providers/impls/elevenlabs-voice.d.ts.map +1 -0
- package/dist/integrations/providers/impls/elevenlabs-voice.js +2 -0
- package/dist/integrations/providers/impls/elevenlabs-voice.js.map +1 -0
- package/dist/integrations/providers/impls/gcs-storage.d.ts +25 -0
- package/dist/integrations/providers/impls/gcs-storage.d.ts.map +1 -0
- package/dist/integrations/providers/impls/gcs-storage.js +2 -0
- package/dist/integrations/providers/impls/gcs-storage.js.map +1 -0
- package/dist/integrations/providers/impls/gmail-inbound.d.ts +27 -0
- package/dist/integrations/providers/impls/gmail-inbound.d.ts.map +1 -0
- package/dist/integrations/providers/impls/gmail-inbound.js +2 -0
- package/dist/integrations/providers/impls/gmail-inbound.js.map +1 -0
- package/dist/integrations/providers/impls/gmail-outbound.d.ts +19 -0
- package/dist/integrations/providers/impls/gmail-outbound.d.ts.map +1 -0
- package/dist/integrations/providers/impls/gmail-outbound.js +7 -0
- package/dist/integrations/providers/impls/gmail-outbound.js.map +1 -0
- package/dist/integrations/providers/impls/google-calendar.d.ts +24 -0
- package/dist/integrations/providers/impls/google-calendar.d.ts.map +1 -0
- package/dist/integrations/providers/impls/google-calendar.js +2 -0
- package/dist/integrations/providers/impls/google-calendar.js.map +1 -0
- package/dist/integrations/providers/impls/index.d.ts +15 -0
- package/dist/integrations/providers/impls/index.js +1 -0
- package/dist/integrations/providers/impls/mistral-embedding.d.ts +24 -0
- package/dist/integrations/providers/impls/mistral-embedding.d.ts.map +1 -0
- package/dist/integrations/providers/impls/mistral-embedding.js +2 -0
- package/dist/integrations/providers/impls/mistral-embedding.js.map +1 -0
- package/dist/integrations/providers/impls/mistral-llm.d.ts +32 -0
- package/dist/integrations/providers/impls/mistral-llm.d.ts.map +1 -0
- package/dist/integrations/providers/impls/mistral-llm.js +2 -0
- package/dist/integrations/providers/impls/mistral-llm.js.map +1 -0
- package/dist/integrations/providers/impls/postmark-email.d.ts +20 -0
- package/dist/integrations/providers/impls/postmark-email.d.ts.map +1 -0
- package/dist/integrations/providers/impls/postmark-email.js +2 -0
- package/dist/integrations/providers/impls/postmark-email.js.map +1 -0
- package/dist/integrations/providers/impls/powens-client.d.ts +125 -0
- package/dist/integrations/providers/impls/powens-client.d.ts.map +1 -0
- package/dist/integrations/providers/impls/powens-client.js +2 -0
- package/dist/integrations/providers/impls/powens-client.js.map +1 -0
- package/dist/integrations/providers/impls/powens-openbanking.d.ts +28 -0
- package/dist/integrations/providers/impls/powens-openbanking.d.ts.map +1 -0
- package/dist/integrations/providers/impls/powens-openbanking.js +2 -0
- package/dist/integrations/providers/impls/powens-openbanking.js.map +1 -0
- package/dist/integrations/providers/impls/provider-factory.d.ts +27 -0
- package/dist/integrations/providers/impls/provider-factory.d.ts.map +1 -0
- package/dist/integrations/providers/impls/provider-factory.js +2 -0
- package/dist/integrations/providers/impls/provider-factory.js.map +1 -0
- package/dist/integrations/providers/impls/qdrant-vector.d.ts +25 -0
- package/dist/integrations/providers/impls/qdrant-vector.d.ts.map +1 -0
- package/dist/integrations/providers/impls/qdrant-vector.js +2 -0
- package/dist/integrations/providers/impls/qdrant-vector.js.map +1 -0
- package/dist/integrations/providers/impls/stripe-payments.d.ts +29 -0
- package/dist/integrations/providers/impls/stripe-payments.d.ts.map +1 -0
- package/dist/integrations/providers/impls/stripe-payments.js +2 -0
- package/dist/integrations/providers/impls/stripe-payments.js.map +1 -0
- package/dist/integrations/providers/impls/twilio-sms.d.ts +21 -0
- package/dist/integrations/providers/impls/twilio-sms.d.ts.map +1 -0
- package/dist/integrations/providers/impls/twilio-sms.js +2 -0
- package/dist/integrations/providers/impls/twilio-sms.js.map +1 -0
- package/dist/integrations/providers/index.d.ts +36 -0
- package/dist/integrations/providers/index.js +1 -0
- package/dist/integrations/providers/llm.d.ts +83 -0
- package/dist/integrations/providers/llm.d.ts.map +1 -0
- package/dist/integrations/providers/llm.js +0 -0
- package/dist/integrations/providers/mistral.d.ts +8 -0
- package/dist/integrations/providers/mistral.d.ts.map +1 -0
- package/dist/integrations/providers/mistral.js +2 -0
- package/dist/integrations/providers/mistral.js.map +1 -0
- package/dist/integrations/providers/openbanking.d.ts +129 -0
- package/dist/integrations/providers/openbanking.d.ts.map +1 -0
- package/dist/integrations/providers/openbanking.js +0 -0
- package/dist/integrations/providers/payments.d.ts +110 -0
- package/dist/integrations/providers/payments.d.ts.map +1 -0
- package/dist/integrations/providers/payments.js +0 -0
- package/dist/integrations/providers/postmark.d.ts +8 -0
- package/dist/integrations/providers/postmark.d.ts.map +1 -0
- package/dist/integrations/providers/postmark.js +2 -0
- package/dist/integrations/providers/postmark.js.map +1 -0
- package/dist/integrations/providers/powens.d.ts +8 -0
- package/dist/integrations/providers/powens.d.ts.map +1 -0
- package/dist/integrations/providers/powens.js +2 -0
- package/dist/integrations/providers/powens.js.map +1 -0
- package/dist/integrations/providers/qdrant.d.ts +8 -0
- package/dist/integrations/providers/qdrant.d.ts.map +1 -0
- package/dist/integrations/providers/qdrant.js +2 -0
- package/dist/integrations/providers/qdrant.js.map +1 -0
- package/dist/integrations/providers/sms.d.ts +35 -0
- package/dist/integrations/providers/sms.d.ts.map +1 -0
- package/dist/integrations/providers/sms.js +0 -0
- package/dist/integrations/providers/storage.d.ts +61 -0
- package/dist/integrations/providers/storage.d.ts.map +1 -0
- package/dist/integrations/providers/storage.js +0 -0
- package/dist/integrations/providers/stripe.d.ts +8 -0
- package/dist/integrations/providers/stripe.d.ts.map +1 -0
- package/dist/integrations/providers/stripe.js +2 -0
- package/dist/integrations/providers/stripe.js.map +1 -0
- package/dist/integrations/providers/twilio-sms.d.ts +8 -0
- package/dist/integrations/providers/twilio-sms.d.ts.map +1 -0
- package/dist/integrations/providers/twilio-sms.js +2 -0
- package/dist/integrations/providers/twilio-sms.js.map +1 -0
- package/dist/integrations/providers/vector-store.d.ts +44 -0
- package/dist/integrations/providers/vector-store.d.ts.map +1 -0
- package/dist/integrations/providers/vector-store.js +0 -0
- package/dist/integrations/providers/voice.d.ts +35 -0
- package/dist/integrations/providers/voice.d.ts.map +1 -0
- package/dist/integrations/providers/voice.js +0 -0
- package/dist/integrations/runtime.d.ts +100 -0
- package/dist/integrations/runtime.d.ts.map +1 -0
- package/dist/integrations/runtime.js +2 -0
- package/dist/integrations/runtime.js.map +1 -0
- package/dist/integrations/secrets/env-secret-provider.d.ts +32 -0
- package/dist/integrations/secrets/env-secret-provider.d.ts.map +1 -0
- package/dist/integrations/secrets/env-secret-provider.js +2 -0
- package/dist/integrations/secrets/env-secret-provider.js.map +1 -0
- package/dist/integrations/secrets/gcp-secret-manager.d.ts +33 -0
- package/dist/integrations/secrets/gcp-secret-manager.d.ts.map +1 -0
- package/dist/integrations/secrets/gcp-secret-manager.js +2 -0
- package/dist/integrations/secrets/gcp-secret-manager.js.map +1 -0
- package/dist/integrations/secrets/index.d.ts +5 -0
- package/dist/integrations/secrets/index.js +1 -0
- package/dist/integrations/secrets/manager.d.ts +48 -0
- package/dist/integrations/secrets/manager.d.ts.map +1 -0
- package/dist/integrations/secrets/manager.js +2 -0
- package/dist/integrations/secrets/manager.js.map +1 -0
- package/dist/integrations/secrets/provider.d.ts +53 -0
- package/dist/integrations/secrets/provider.d.ts.map +1 -0
- package/dist/integrations/secrets/provider.js +2 -0
- package/dist/integrations/secrets/provider.js.map +1 -0
- package/dist/integrations/spec.d.ts +80 -0
- package/dist/integrations/spec.d.ts.map +1 -0
- package/dist/integrations/spec.js +2 -0
- package/dist/integrations/spec.js.map +1 -0
- package/dist/jobs/gcp-cloud-tasks.d.ts +42 -0
- package/dist/jobs/gcp-cloud-tasks.d.ts.map +1 -0
- package/dist/jobs/gcp-cloud-tasks.js +2 -0
- package/dist/jobs/gcp-cloud-tasks.js.map +1 -0
- package/dist/jobs/gcp-pubsub.d.ts +26 -0
- package/dist/jobs/gcp-pubsub.d.ts.map +1 -0
- package/dist/jobs/gcp-pubsub.js +2 -0
- package/dist/jobs/gcp-pubsub.js.map +1 -0
- package/dist/jobs/handlers/gmail-sync-handler.d.ts +10 -0
- package/dist/jobs/handlers/gmail-sync-handler.d.ts.map +1 -0
- package/dist/jobs/handlers/gmail-sync-handler.js +2 -0
- package/dist/jobs/handlers/gmail-sync-handler.js.map +1 -0
- package/dist/jobs/handlers/index.d.ts +3 -0
- package/dist/jobs/handlers/index.js +1 -0
- package/dist/jobs/handlers/storage-document-handler.d.ts +13 -0
- package/dist/jobs/handlers/storage-document-handler.d.ts.map +1 -0
- package/dist/jobs/handlers/storage-document-handler.js +2 -0
- package/dist/jobs/handlers/storage-document-handler.js.map +1 -0
- package/dist/jobs/index.d.ts +7 -0
- package/dist/jobs/index.js +1 -0
- package/dist/jobs/memory-queue.d.ts +19 -0
- package/dist/jobs/memory-queue.d.ts.map +1 -0
- package/dist/jobs/memory-queue.js +2 -0
- package/dist/jobs/memory-queue.js.map +1 -0
- package/dist/jobs/queue.d.ts +27 -0
- package/dist/jobs/queue.d.ts.map +1 -0
- package/dist/jobs/queue.js +0 -0
- package/dist/jsonschema.d.ts +27 -0
- package/dist/jsonschema.d.ts.map +1 -0
- package/dist/jsonschema.js +2 -0
- package/dist/jsonschema.js.map +1 -0
- package/dist/knowledge/binding.d.ts +26 -0
- package/dist/knowledge/binding.d.ts.map +1 -0
- package/dist/knowledge/binding.js +0 -0
- package/dist/knowledge/contracts.d.ts +315 -0
- package/dist/knowledge/contracts.d.ts.map +1 -0
- package/dist/knowledge/contracts.js +2 -0
- package/dist/knowledge/contracts.js.map +1 -0
- package/dist/knowledge/index.d.ts +10 -0
- package/dist/knowledge/index.js +1 -0
- package/dist/knowledge/ingestion/document-processor.d.ts +25 -0
- package/dist/knowledge/ingestion/document-processor.d.ts.map +1 -0
- package/dist/knowledge/ingestion/document-processor.js +2 -0
- package/dist/knowledge/ingestion/document-processor.js.map +1 -0
- package/dist/knowledge/ingestion/embedding-service.d.ts +13 -0
- package/dist/knowledge/ingestion/embedding-service.d.ts.map +1 -0
- package/dist/knowledge/ingestion/embedding-service.js +2 -0
- package/dist/knowledge/ingestion/embedding-service.js.map +1 -0
- package/dist/knowledge/ingestion/gmail-adapter.d.ts +19 -0
- package/dist/knowledge/ingestion/gmail-adapter.d.ts.map +1 -0
- package/dist/knowledge/ingestion/gmail-adapter.js +7 -0
- package/dist/knowledge/ingestion/gmail-adapter.js.map +1 -0
- package/dist/knowledge/ingestion/index.d.ts +6 -0
- package/dist/knowledge/ingestion/index.js +1 -0
- package/dist/knowledge/ingestion/storage-adapter.d.ts +16 -0
- package/dist/knowledge/ingestion/storage-adapter.d.ts.map +1 -0
- package/dist/knowledge/ingestion/storage-adapter.js +2 -0
- package/dist/knowledge/ingestion/storage-adapter.js.map +1 -0
- package/dist/knowledge/ingestion/vector-indexer.d.ts +19 -0
- package/dist/knowledge/ingestion/vector-indexer.d.ts.map +1 -0
- package/dist/knowledge/ingestion/vector-indexer.js +2 -0
- package/dist/knowledge/ingestion/vector-indexer.js.map +1 -0
- package/dist/knowledge/query/index.d.ts +2 -0
- package/dist/knowledge/query/index.js +1 -0
- package/dist/knowledge/query/service.d.ts +30 -0
- package/dist/knowledge/query/service.d.ts.map +1 -0
- package/dist/knowledge/query/service.js +4 -0
- package/dist/knowledge/query/service.js.map +1 -0
- package/dist/knowledge/runtime.d.ts +33 -0
- package/dist/knowledge/runtime.d.ts.map +1 -0
- package/dist/knowledge/runtime.js +2 -0
- package/dist/knowledge/runtime.js.map +1 -0
- package/dist/knowledge/source.d.ts +33 -0
- package/dist/knowledge/source.d.ts.map +1 -0
- package/dist/knowledge/source.js +0 -0
- package/dist/knowledge/spaces/email-threads.d.ts +8 -0
- package/dist/knowledge/spaces/email-threads.d.ts.map +1 -0
- package/dist/knowledge/spaces/email-threads.js +2 -0
- package/dist/knowledge/spaces/email-threads.js.map +1 -0
- package/dist/knowledge/spaces/financial-docs.d.ts +8 -0
- package/dist/knowledge/spaces/financial-docs.d.ts.map +1 -0
- package/dist/knowledge/spaces/financial-docs.js +2 -0
- package/dist/knowledge/spaces/financial-docs.js.map +1 -0
- package/dist/knowledge/spaces/financial-overview.d.ts +8 -0
- package/dist/knowledge/spaces/financial-overview.d.ts.map +1 -0
- package/dist/knowledge/spaces/financial-overview.js +2 -0
- package/dist/knowledge/spaces/financial-overview.js.map +1 -0
- package/dist/knowledge/spaces/index.d.ts +7 -0
- package/dist/knowledge/spaces/index.js +1 -0
- package/dist/knowledge/spaces/product-canon.d.ts +8 -0
- package/dist/knowledge/spaces/product-canon.d.ts.map +1 -0
- package/dist/knowledge/spaces/product-canon.js +2 -0
- package/dist/knowledge/spaces/product-canon.js.map +1 -0
- package/dist/knowledge/spaces/support-faq.d.ts +8 -0
- package/dist/knowledge/spaces/support-faq.d.ts.map +1 -0
- package/dist/knowledge/spaces/support-faq.js +2 -0
- package/dist/knowledge/spaces/support-faq.js.map +1 -0
- package/dist/knowledge/spaces/uploaded-docs.d.ts +8 -0
- package/dist/knowledge/spaces/uploaded-docs.d.ts.map +1 -0
- package/dist/knowledge/spaces/uploaded-docs.js +2 -0
- package/dist/knowledge/spaces/uploaded-docs.js.map +1 -0
- package/dist/knowledge/spec.d.ts +53 -0
- package/dist/knowledge/spec.d.ts.map +1 -0
- package/dist/knowledge/spec.js +2 -0
- package/dist/knowledge/spec.js.map +1 -0
- package/dist/markdown.d.ts +22 -0
- package/dist/markdown.d.ts.map +1 -0
- package/dist/markdown.js +4 -0
- package/dist/markdown.js.map +1 -0
- package/dist/migrations.d.ts +53 -0
- package/dist/migrations.d.ts.map +1 -0
- package/dist/migrations.js +2 -0
- package/dist/migrations.js.map +1 -0
- package/dist/onboarding-base.d.ts +136 -0
- package/dist/onboarding-base.d.ts.map +1 -0
- package/dist/onboarding-base.js +2 -0
- package/dist/onboarding-base.js.map +1 -0
- package/dist/ownership.d.ts +76 -0
- package/dist/ownership.d.ts.map +1 -0
- package/dist/ownership.js +2 -0
- package/dist/ownership.js.map +1 -0
- package/dist/policy/engine.d.ts +40 -0
- package/dist/policy/engine.d.ts.map +1 -0
- package/dist/policy/engine.js +2 -0
- package/dist/policy/engine.js.map +1 -0
- package/dist/policy/opa-adapter.d.ts +46 -0
- package/dist/policy/opa-adapter.d.ts.map +1 -0
- package/dist/policy/opa-adapter.js +2 -0
- package/dist/policy/opa-adapter.js.map +1 -0
- package/dist/policy/spec.d.ts +115 -0
- package/dist/policy/spec.d.ts.map +1 -0
- package/dist/policy/spec.js +2 -0
- package/dist/policy/spec.js.map +1 -0
- package/dist/presentations.backcompat.d.ts +8 -0
- package/dist/presentations.backcompat.d.ts.map +1 -0
- package/dist/presentations.backcompat.js +2 -0
- package/dist/presentations.backcompat.js.map +1 -0
- package/dist/presentations.d.ts +96 -0
- package/dist/presentations.d.ts.map +1 -0
- package/dist/presentations.js +2 -0
- package/dist/presentations.js.map +1 -0
- package/dist/presentations.v2.d.ts +95 -0
- package/dist/presentations.v2.d.ts.map +1 -0
- package/dist/presentations.v2.js +2 -0
- package/dist/presentations.v2.js.map +1 -0
- package/dist/prompt.d.ts +61 -0
- package/dist/prompt.d.ts.map +1 -0
- package/dist/prompt.js +2 -0
- package/dist/prompt.js.map +1 -0
- package/dist/promptRegistry.d.ts +16 -0
- package/dist/promptRegistry.d.ts.map +1 -0
- package/dist/promptRegistry.js +2 -0
- package/dist/promptRegistry.js.map +1 -0
- package/dist/regenerator/adapters.d.ts +20 -0
- package/dist/regenerator/adapters.d.ts.map +1 -0
- package/dist/regenerator/adapters.js +0 -0
- package/dist/regenerator/executor.d.ts +71 -0
- package/dist/regenerator/executor.d.ts.map +1 -0
- package/dist/regenerator/executor.js +2 -0
- package/dist/regenerator/executor.js.map +1 -0
- package/dist/regenerator/index.d.ts +7 -0
- package/dist/regenerator/index.js +1 -0
- package/dist/regenerator/service.d.ts +34 -0
- package/dist/regenerator/service.d.ts.map +1 -0
- package/dist/regenerator/service.js +2 -0
- package/dist/regenerator/service.js.map +1 -0
- package/dist/regenerator/sinks.d.ts +27 -0
- package/dist/regenerator/sinks.d.ts.map +1 -0
- package/dist/regenerator/sinks.js +2 -0
- package/dist/regenerator/sinks.js.map +1 -0
- package/dist/regenerator/types.d.ts +108 -0
- package/dist/regenerator/types.d.ts.map +1 -0
- package/dist/regenerator/types.js +0 -0
- package/dist/regenerator/utils.d.ts +10 -0
- package/dist/regenerator/utils.d.ts.map +1 -0
- package/dist/regenerator/utils.js +2 -0
- package/dist/regenerator/utils.js.map +1 -0
- package/dist/registry.d.ts +45 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +2 -0
- package/dist/registry.js.map +1 -0
- package/dist/resources.d.ts +65 -0
- package/dist/resources.d.ts.map +1 -0
- package/dist/resources.js +2 -0
- package/dist/resources.js.map +1 -0
- package/dist/schema/src/EnumType.js +1 -0
- package/dist/schema/src/FieldType.js +2 -0
- package/dist/schema/src/FieldType.js.map +1 -0
- package/dist/schema/src/ScalarTypeEnum.js +2 -0
- package/dist/schema/src/ScalarTypeEnum.js.map +1 -0
- package/dist/schema/src/SchemaModel.js +2 -0
- package/dist/schema/src/SchemaModel.js.map +1 -0
- package/dist/schema/src/index.js +1 -0
- package/dist/server/graphql-pothos.d.ts +19 -0
- package/dist/server/graphql-pothos.d.ts.map +1 -0
- package/dist/server/graphql-pothos.js +2 -0
- package/dist/server/graphql-pothos.js.map +1 -0
- package/dist/server/graphql-schema-export.d.ts +7 -0
- package/dist/server/graphql-schema-export.d.ts.map +1 -0
- package/dist/server/graphql-schema-export.js +2 -0
- package/dist/server/graphql-schema-export.js.map +1 -0
- package/dist/server/index.d.ts +9 -0
- package/dist/server/index.js +1 -0
- package/dist/server/provider-mcp.d.ts +34 -0
- package/dist/server/provider-mcp.d.ts.map +1 -0
- package/dist/server/provider-mcp.js +2 -0
- package/dist/server/provider-mcp.js.map +1 -0
- package/dist/server/rest-elysia.d.ts +41 -0
- package/dist/server/rest-elysia.d.ts.map +1 -0
- package/dist/server/rest-elysia.js +2 -0
- package/dist/server/rest-elysia.js.map +1 -0
- package/dist/server/rest-express.d.ts +17 -0
- package/dist/server/rest-express.d.ts.map +1 -0
- package/dist/server/rest-express.js +2 -0
- package/dist/server/rest-express.js.map +1 -0
- package/dist/server/rest-generic.d.ts +33 -0
- package/dist/server/rest-generic.d.ts.map +1 -0
- package/dist/server/rest-generic.js +2 -0
- package/dist/server/rest-generic.js.map +1 -0
- package/dist/server/rest-next-app.d.ts +16 -0
- package/dist/server/rest-next-app.d.ts.map +1 -0
- package/dist/server/rest-next-app.js +2 -0
- package/dist/server/rest-next-app.js.map +1 -0
- package/dist/server/rest-next-mcp.d.ts +12 -0
- package/dist/server/rest-next-mcp.d.ts.map +1 -0
- package/dist/server/rest-next-mcp.js +2 -0
- package/dist/server/rest-next-mcp.js.map +1 -0
- package/dist/server/rest-next-pages.d.ts +10 -0
- package/dist/server/rest-next-pages.d.ts.map +1 -0
- package/dist/server/rest-next-pages.js +2 -0
- package/dist/server/rest-next-pages.js.map +1 -0
- package/dist/spec.d.ts +149 -0
- package/dist/spec.d.ts.map +1 -0
- package/dist/spec.js +2 -0
- package/dist/spec.js.map +1 -0
- package/dist/telemetry/anomaly.d.ts +28 -0
- package/dist/telemetry/anomaly.d.ts.map +1 -0
- package/dist/telemetry/anomaly.js +2 -0
- package/dist/telemetry/anomaly.js.map +1 -0
- package/dist/telemetry/index.d.ts +4 -0
- package/dist/telemetry/index.js +1 -0
- package/dist/telemetry/spec.d.ts +99 -0
- package/dist/telemetry/spec.d.ts.map +1 -0
- package/dist/telemetry/spec.js +2 -0
- package/dist/telemetry/spec.js.map +1 -0
- package/dist/telemetry/tracker.d.ts +52 -0
- package/dist/telemetry/tracker.d.ts.map +1 -0
- package/dist/telemetry/tracker.js +2 -0
- package/dist/telemetry/tracker.js.map +1 -0
- package/dist/tests/index.d.ts +3 -0
- package/dist/tests/index.js +1 -0
- package/dist/tests/runner.d.ts +44 -0
- package/dist/tests/runner.d.ts.map +1 -0
- package/dist/tests/runner.js +2 -0
- package/dist/tests/runner.js.map +1 -0
- package/dist/tests/spec.d.ts +90 -0
- package/dist/tests/spec.d.ts.map +1 -0
- package/dist/tests/spec.js +2 -0
- package/dist/tests/spec.js.map +1 -0
- package/dist/themes.d.ts +56 -0
- package/dist/themes.d.ts.map +1 -0
- package/dist/themes.js +2 -0
- package/dist/themes.js.map +1 -0
- package/dist/translations/catalog.d.ts +29 -0
- package/dist/translations/catalog.d.ts.map +1 -0
- package/dist/translations/catalog.js +0 -0
- package/dist/translations/tenant.d.ts +16 -0
- package/dist/translations/tenant.d.ts.map +1 -0
- package/dist/translations/tenant.js +0 -0
- package/dist/types/all.d.ts +60 -0
- package/dist/types/all.js +0 -0
- package/dist/types.d.ts +86 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +0 -0
- package/dist/workflow/adapters/db-adapter.d.ts +15 -0
- package/dist/workflow/adapters/db-adapter.d.ts.map +1 -0
- package/dist/workflow/adapters/db-adapter.js +2 -0
- package/dist/workflow/adapters/db-adapter.js.map +1 -0
- package/dist/workflow/adapters/file-adapter.d.ts +15 -0
- package/dist/workflow/adapters/file-adapter.d.ts.map +1 -0
- package/dist/workflow/adapters/file-adapter.js +2 -0
- package/dist/workflow/adapters/file-adapter.js.map +1 -0
- package/dist/workflow/adapters/index.d.ts +4 -0
- package/dist/workflow/adapters/index.js +1 -0
- package/dist/workflow/adapters/memory-store.d.ts +19 -0
- package/dist/workflow/adapters/memory-store.d.ts.map +1 -0
- package/dist/workflow/adapters/memory-store.js +2 -0
- package/dist/workflow/adapters/memory-store.js.map +1 -0
- package/dist/workflow/expression.d.ts +10 -0
- package/dist/workflow/expression.d.ts.map +1 -0
- package/dist/workflow/expression.js +2 -0
- package/dist/workflow/expression.js.map +1 -0
- package/dist/workflow/index.d.ts +10 -0
- package/dist/workflow/index.js +1 -0
- package/dist/workflow/runner.d.ts +74 -0
- package/dist/workflow/runner.d.ts.map +1 -0
- package/dist/workflow/runner.js +2 -0
- package/dist/workflow/runner.js.map +1 -0
- package/dist/workflow/spec.d.ts +100 -0
- package/dist/workflow/spec.d.ts.map +1 -0
- package/dist/workflow/spec.js +2 -0
- package/dist/workflow/spec.js.map +1 -0
- package/dist/workflow/state.d.ts +35 -0
- package/dist/workflow/state.d.ts.map +1 -0
- package/dist/workflow/state.js +0 -0
- package/dist/workflow/validation.d.ts +29 -0
- package/dist/workflow/validation.d.ts.map +1 -0
- package/dist/workflow/validation.js +2 -0
- package/dist/workflow/validation.js.map +1 -0
- package/package.json +401 -0
package/README.md
ADDED
|
@@ -0,0 +1,361 @@
|
|
|
1
|
+
## @lssm/lib.contracts — Unified Specs for Ops, Events, Presentations, and Features
|
|
2
|
+
|
|
3
|
+
Purpose: Provide a single, typed source of truth for backend operations, events, prompts/resources, and UI/data presentations. This enables consistent adapters (REST/GraphQL/MCP/UI), high‑quality docs, and agent-friendly automation across apps.
|
|
4
|
+
|
|
5
|
+
### Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @lssm/lib.contracts @lssm/lib.schema
|
|
9
|
+
# or
|
|
10
|
+
bun add @lssm/lib.contracts @lssm/lib.schema
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Import from the scoped entry points for leaner bundles:
|
|
14
|
+
|
|
15
|
+
- `@lssm/lib.contracts/client` – browser-safe helpers (`client/react`, render drivers, SDK).
|
|
16
|
+
- `@lssm/lib.contracts/server` – Node adapters (REST, GraphQL, MCP).
|
|
17
|
+
- `@lssm/lib.contracts/types` – runtime context types (`HandlerCtx`, `PolicyDecision`, etc.).
|
|
18
|
+
- `@lssm/lib.contracts/types/all` – type-only re-exports across the package (compiles to an empty JS module).
|
|
19
|
+
|
|
20
|
+
### Today (already implemented)
|
|
21
|
+
|
|
22
|
+
- **Operations (ContractSpec)**: versioned `command`/`query` definitions with `meta`, `io` (zod-backed via `@lssm/lib.schema`), `policy`, `sideEffects` (declared events), `transport` hints, and `acceptance` examples. See `src/spec.ts` and `src/registry.ts`.
|
|
23
|
+
- **Events (EventSpec)**: versioned event payloads validated at publish time and guarded from undeclared emission. See `src/events.ts` and runtime guard in `SpecRegistry.execute()`.
|
|
24
|
+
- **Adapters**:
|
|
25
|
+
- REST: `server/rest-generic`, `server/rest-next-app`, `server/rest-next-pages`, `server/rest-elysia`.
|
|
26
|
+
- MCP: `server/provider-mcp` (tools, resources, prompts), `server/rest-next-mcp` (MCP via Next route).
|
|
27
|
+
- GraphQL: `server/graphql-pothos` to mount contract operations into a Pothos schema.
|
|
28
|
+
- Docs: `markdown.specsToMarkdown(reg)` and `markdown.docsToMarkdown(reg, { presentations, features })` to render human docs.
|
|
29
|
+
|
|
30
|
+
### Next (this document proposes)
|
|
31
|
+
|
|
32
|
+
Add a first-class, typed presentation layer (V2 descriptors available today) and feature grouping so one module can declare:
|
|
33
|
+
|
|
34
|
+
- What it DOES (operations/queries),
|
|
35
|
+
- What it EMITS (events),
|
|
36
|
+
- How it is SHOWN or EXPORTED (presentations),
|
|
37
|
+
- How to INSTALL/REGISTER it as a coherent feature.
|
|
38
|
+
|
|
39
|
+
This improves reuse, observability, and AI agent operability across web apps, docs, and integrations.
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Presentation Categories
|
|
44
|
+
|
|
45
|
+
Three complementary presentation types can be declared and exported from the contracts library. They are transport-agnostic and do not bind to a specific app; host apps mount them using adapters. A normalized V2 descriptor exists in `presentations.v2.ts` with a transform engine and validators.
|
|
46
|
+
|
|
47
|
+
### 1) Web components (React first)
|
|
48
|
+
|
|
49
|
+
- **Goal**: Render real user stories with clean, simple, Atomic Design components. Mobile-friendly by default.
|
|
50
|
+
- **Adapter**: Host app provides a `componentMap` that resolves a `componentKey` to a concrete React component. This avoids cross-package JSX coupling.
|
|
51
|
+
- **Use cases**: Feature previews, onboarding stories, guided flows.
|
|
52
|
+
|
|
53
|
+
Shape (proposed):
|
|
54
|
+
|
|
55
|
+
```ts
|
|
56
|
+
type PresentationKind = 'web_component' | 'markdown' | 'data';
|
|
57
|
+
|
|
58
|
+
interface PresentationMeta {
|
|
59
|
+
name: string; // e.g. "hcircle.weekly_pulse.quick_vote"
|
|
60
|
+
version: number; // bump on breaking changes
|
|
61
|
+
stability?: 'experimental' | 'beta' | 'stable' | 'deprecated';
|
|
62
|
+
owners?: string[];
|
|
63
|
+
tags?: string[]; // search, grouping
|
|
64
|
+
description?: string;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
interface WebComponentPresentation {
|
|
68
|
+
kind: 'web_component';
|
|
69
|
+
framework: 'react';
|
|
70
|
+
/** Symbolic key resolved by host via componentMap */
|
|
71
|
+
componentKey: string; // e.g. "userStory.weekly_pulse.quick_vote"
|
|
72
|
+
/** zod-backed props schema from @lssm/lib.schema */
|
|
73
|
+
props: import('@lssm/lib.schema').AnySchemaModel;
|
|
74
|
+
/** Optional interaction analytics intents */
|
|
75
|
+
analytics?: string[];
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Host-side rendering contract (example):
|
|
80
|
+
|
|
81
|
+
```ts
|
|
82
|
+
// In the host app
|
|
83
|
+
const componentMap: Record<string, React.ComponentType<any>> = {
|
|
84
|
+
'userStory.weekly_pulse.quick_vote': QuickVote,
|
|
85
|
+
'userStory.weekly_pulse.happiness': HappinessLife,
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
function renderWebPresentation(p: WebComponentPresentation, data: any) {
|
|
89
|
+
const C = componentMap[p.componentKey];
|
|
90
|
+
if (!C) return <Fallback componentKey={p.componentKey} />;
|
|
91
|
+
const parsed = p.props.getZod().parse(data);
|
|
92
|
+
return <C {...parsed} />;
|
|
93
|
+
}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Guidelines:
|
|
97
|
+
|
|
98
|
+
- Use Atomic Design; keep components stateless where feasible.
|
|
99
|
+
- Ensure a11y (labels, roles, keyboard traversal) and small-screen ergonomics.
|
|
100
|
+
- Gate feature-flagged experiences in the host, aligning with `policy.flags` when relevant.
|
|
101
|
+
|
|
102
|
+
### 2) Markdown/MDX
|
|
103
|
+
|
|
104
|
+
- **Goal**: Make the platform and its features easily digestible by LLMs and human readers.
|
|
105
|
+
- **Adapter**: Expose as static strings (Markdown) or MDX sources. Optionally resolve via `ResourceRegistry` URIs so MCP clients can fetch them.
|
|
106
|
+
- **Use cases**: Feature guides, acceptance narratives, inline help.
|
|
107
|
+
|
|
108
|
+
Shape (proposed):
|
|
109
|
+
|
|
110
|
+
```ts
|
|
111
|
+
interface MarkdownPresentation {
|
|
112
|
+
kind: 'markdown';
|
|
113
|
+
/** Either inline content or a resource URI template */
|
|
114
|
+
content?: string; // Markdown/MDX source
|
|
115
|
+
resourceUri?: string; // e.g. "feature://{featureKey}/story/{storyKey}.md"
|
|
116
|
+
}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### 3) Structured raw data (JSON/XML)
|
|
120
|
+
|
|
121
|
+
- **Goal**: Enable external integrations, partial adoption, and customized setups without lock-in.
|
|
122
|
+
- **Adapter**: Expose via `ResourceRegistry` with stable URIs and MIME types; MCP resources map 1:1.
|
|
123
|
+
- **Use cases**: CSV/JSON/XML export, analytics snapshots, reference dictionaries.
|
|
124
|
+
|
|
125
|
+
Shape (proposed):
|
|
126
|
+
|
|
127
|
+
```ts
|
|
128
|
+
interface DataPresentation {
|
|
129
|
+
kind: 'data';
|
|
130
|
+
mimeType: 'application/json' | 'application/xml' | string;
|
|
131
|
+
/** zod-backed schema for the payload structure */
|
|
132
|
+
model: import('@lssm/lib.schema').AnySchemaModel;
|
|
133
|
+
}
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Union and registry (proposed):
|
|
137
|
+
|
|
138
|
+
```ts
|
|
139
|
+
type PresentationSpec = {
|
|
140
|
+
meta: PresentationMeta;
|
|
141
|
+
policy?: { flags?: string[]; pii?: string[] };
|
|
142
|
+
content: WebComponentPresentation | MarkdownPresentation | DataPresentation;
|
|
143
|
+
};
|
|
144
|
+
|
|
145
|
+
class PresentationRegistry {
|
|
146
|
+
register(p: PresentationSpec): this {
|
|
147
|
+
/* ... */ return this;
|
|
148
|
+
}
|
|
149
|
+
list(): PresentationSpec[] {
|
|
150
|
+
/* ... */ return [];
|
|
151
|
+
}
|
|
152
|
+
get(name: string, version?: number): PresentationSpec | undefined {
|
|
153
|
+
/* ... */ return undefined;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## Feature Grouping
|
|
161
|
+
|
|
162
|
+
Group operations, events, and presentations into a feature/module spec that can be installed in one go.
|
|
163
|
+
|
|
164
|
+
Shape (proposed):
|
|
165
|
+
|
|
166
|
+
```ts
|
|
167
|
+
interface FeatureModuleMeta {
|
|
168
|
+
key: string; // stable slug, e.g. "weekly_pulse"
|
|
169
|
+
title: string;
|
|
170
|
+
description?: string;
|
|
171
|
+
domain?: string; // bounded context, e.g. "hcircle.harmony"
|
|
172
|
+
owners?: string[];
|
|
173
|
+
tags?: string[]; // e.g. ["connect", "save_time"]
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
interface FeatureModuleSpec {
|
|
177
|
+
meta: FeatureModuleMeta;
|
|
178
|
+
operations?: Array<{ name: string; version: number }>; // ContractSpec
|
|
179
|
+
events?: Array<{ name: string; version: number }>; // EventSpec
|
|
180
|
+
presentations?: Array<{ name: string; version: number }>; // PresentationSpec
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
class FeatureRegistry {
|
|
184
|
+
register(f: FeatureModuleSpec): this {
|
|
185
|
+
/* ... */ return this;
|
|
186
|
+
}
|
|
187
|
+
list(): FeatureModuleSpec[] {
|
|
188
|
+
/* ... */ return [];
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
// Optional installer to wire everything in one call
|
|
193
|
+
function installFeature(
|
|
194
|
+
feature: FeatureModuleSpec,
|
|
195
|
+
deps: {
|
|
196
|
+
ops: import('./src/registry').SpecRegistry;
|
|
197
|
+
presentations: PresentationRegistry;
|
|
198
|
+
resources: import('./src/resources').ResourceRegistry;
|
|
199
|
+
}
|
|
200
|
+
) {
|
|
201
|
+
/* register ops/events/presentations/resources */
|
|
202
|
+
}
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
Why group?
|
|
206
|
+
|
|
207
|
+
- Single place to discover/enable a capability
|
|
208
|
+
- Consistent docs generation and MCP exposure
|
|
209
|
+
- Better alignment with product modules (see `hcircle` module registry)
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## Mapping coliving modules → Presentations
|
|
214
|
+
|
|
215
|
+
Reference: `packages/hcircle/apps/web-coliving/src/components/modules/{types.ts,registry.ts}` defines modules like `weekly_pulse`, `incident_hygiene`, `groceries`, with user stories and preview components.
|
|
216
|
+
|
|
217
|
+
Examples (conceptual):
|
|
218
|
+
|
|
219
|
+
```ts
|
|
220
|
+
// Web component presentations (user stories)
|
|
221
|
+
const WeeklyPulseQuickVote: PresentationSpec = {
|
|
222
|
+
meta: {
|
|
223
|
+
name: 'hcircle.weekly_pulse.quick_vote',
|
|
224
|
+
version: 1,
|
|
225
|
+
tags: ['connect', 'harmony'],
|
|
226
|
+
description: '3-tap check-in for house alignment',
|
|
227
|
+
},
|
|
228
|
+
content: {
|
|
229
|
+
kind: 'web_component',
|
|
230
|
+
framework: 'react',
|
|
231
|
+
componentKey: 'userStory.weekly_pulse.quick_vote',
|
|
232
|
+
props: /* SchemaModel for props */ undefined as any,
|
|
233
|
+
},
|
|
234
|
+
};
|
|
235
|
+
|
|
236
|
+
// Markdown/MDX guide
|
|
237
|
+
const WeeklyPulseGuide: PresentationSpec = {
|
|
238
|
+
meta: { name: 'hcircle.weekly_pulse.guide', version: 1 },
|
|
239
|
+
content: {
|
|
240
|
+
kind: 'markdown',
|
|
241
|
+
resourceUri: 'feature://weekly_pulse/story/guide.md',
|
|
242
|
+
},
|
|
243
|
+
};
|
|
244
|
+
|
|
245
|
+
// Data export (JSON)
|
|
246
|
+
const GroceriesBudgetExport: PresentationSpec = {
|
|
247
|
+
meta: { name: 'hcircle.groceries.budget_export', version: 1 },
|
|
248
|
+
content: {
|
|
249
|
+
kind: 'data',
|
|
250
|
+
mimeType: 'application/json',
|
|
251
|
+
model: /* SchemaModel for export shape */ undefined as any,
|
|
252
|
+
},
|
|
253
|
+
};
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
In the feature group:
|
|
257
|
+
|
|
258
|
+
```ts
|
|
259
|
+
const WeeklyPulseFeature: FeatureModuleSpec = {
|
|
260
|
+
meta: {
|
|
261
|
+
key: 'weekly_pulse',
|
|
262
|
+
title: 'Weekly Pulse',
|
|
263
|
+
tags: ['harmony', 'connect'],
|
|
264
|
+
},
|
|
265
|
+
operations: [{ name: 'pulse.submitQuickVote', version: 1 }],
|
|
266
|
+
events: [{ name: 'pulse.vote_recorded', version: 1 }],
|
|
267
|
+
presentations: [
|
|
268
|
+
{ name: 'hcircle.weekly_pulse.quick_vote', version: 1 },
|
|
269
|
+
{ name: 'hcircle.weekly_pulse.guide', version: 1 },
|
|
270
|
+
],
|
|
271
|
+
};
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
---
|
|
275
|
+
|
|
276
|
+
## Adapters and Exposure
|
|
277
|
+
|
|
278
|
+
- **REST**: already provided; driven by `SpecRegistry`. Presentations are not REST endpoints directly, but their data forms can be exposed as `ResourceRegistry` entries.
|
|
279
|
+
- **GraphQL (Pothos)**: provided in `src/server/graphql-pothos.ts`. Auto-maps operations into Query/Mutation fields. Presentations are better exposed as resources (URIs) consumed by prompts/LLMs.
|
|
280
|
+
- **MCP**: `createMcpServer` exposes commands (tools), resources, and prompts. Presentations map naturally:
|
|
281
|
+
- `web_component` → discoverable metadata (name, tags) for UI agents.
|
|
282
|
+
- `markdown` → resources (URIs) returned by prompts.
|
|
283
|
+
- `data` → resources with explicit MIME types.
|
|
284
|
+
- **Docs**: extend `specsToMarkdown` to include presentations and feature groups so dev portals stay in sync. See `docs/tech/contracts/presentations-v2.md` for the unified V2 model and engine.
|
|
285
|
+
|
|
286
|
+
---
|
|
287
|
+
|
|
288
|
+
## Versioning & Stability (recommended)
|
|
289
|
+
|
|
290
|
+
- Bump `version` on any breaking change to shape or behavior of the spec.
|
|
291
|
+
- Mark `stability` to guide adopters: `experimental` → `beta` → `stable` → `deprecated`.
|
|
292
|
+
- Keep event payloads and data exports backward compatible where feasible. For UI, prefer additive props; otherwise, bump version and keep both entries during transition.
|
|
293
|
+
|
|
294
|
+
---
|
|
295
|
+
|
|
296
|
+
## Adapters Planning (next steps)
|
|
297
|
+
|
|
298
|
+
- React adapter: resolve `componentKey` → component map in host, validate props with SchemaModel, capture analytics intents.
|
|
299
|
+
- Markdown adapter: expose `markdown` presentations via `ResourceRegistry` + MCP resources; optionally render in app help.
|
|
300
|
+
- Data adapter: expose `data` presentations via `ResourceRegistry` with explicit MIME types (JSON/XML) and stable URIs.
|
|
301
|
+
|
|
302
|
+
---
|
|
303
|
+
|
|
304
|
+
## Authoring Guidelines
|
|
305
|
+
|
|
306
|
+
- **Atomic Design** for web components; keep complexity low and interactions obvious.
|
|
307
|
+
- **Accessibility**: labels, roles, focus order, and reduced motion options.
|
|
308
|
+
- **i18n**: UI strings belong in app i18n namespaces; contracts carry keys and defaults, not hard-coded text.
|
|
309
|
+
- **Feature flags**: gate risky or staged presentations via `policy.flags` + host checks.
|
|
310
|
+
- **Docs as source**: when specs change, update `docs/` in the same change.
|
|
311
|
+
|
|
312
|
+
---
|
|
313
|
+
|
|
314
|
+
## How to Add a New Feature
|
|
315
|
+
|
|
316
|
+
1. Define operations/events in code using `defineCommand`, `defineQuery`, and `defineEvent`.
|
|
317
|
+
2. Declare presentations (at least one) in a `PresentationRegistry` and link to the feature.
|
|
318
|
+
3. Register a `FeatureModuleSpec` that references ops/events/presentations.
|
|
319
|
+
4. Mount adapters in the host app(s): REST/GraphQL/MCP/UI.
|
|
320
|
+
5. Update docs via the markdown generator and/or bespoke docs in `docs/`.
|
|
321
|
+
|
|
322
|
+
### Quick start
|
|
323
|
+
|
|
324
|
+
```ts
|
|
325
|
+
import { SpecRegistry, installOp } from '@lssm/lib.contracts';
|
|
326
|
+
import { makeNextAppHandler } from '@lssm/lib.contracts/server/rest-next-app';
|
|
327
|
+
|
|
328
|
+
const reg = new SpecRegistry();
|
|
329
|
+
installOp(reg, BeginSignupSpec, beginSignupHandler);
|
|
330
|
+
|
|
331
|
+
export const { GET, POST } = {
|
|
332
|
+
GET: (req: Request) =>
|
|
333
|
+
makeNextAppHandler(reg, () => ({ actor: 'anonymous' }))(req),
|
|
334
|
+
POST: (req: Request) =>
|
|
335
|
+
makeNextAppHandler(reg, () => ({ actor: 'anonymous' }))(req),
|
|
336
|
+
};
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
---
|
|
340
|
+
|
|
341
|
+
## Exports (current)
|
|
342
|
+
|
|
343
|
+
See `src/index.ts` for public exports:
|
|
344
|
+
|
|
345
|
+
- Ops/events/specs/registries
|
|
346
|
+
- REST/Next/Elysia/MCP adapters
|
|
347
|
+
- Markdown generator, prompt registry, resources
|
|
348
|
+
|
|
349
|
+
Planned additions:
|
|
350
|
+
|
|
351
|
+
- `PresentationSpec`, `PresentationRegistry`
|
|
352
|
+
- `FeatureModuleSpec`, `FeatureRegistry`, `installFeature`
|
|
353
|
+
- Extended docs generator to include presentations/features
|
|
354
|
+
|
|
355
|
+
---
|
|
356
|
+
|
|
357
|
+
## Notes
|
|
358
|
+
|
|
359
|
+
- Keep adapters and registries modular and swappable (hexagonal). Domain logic must remain testable in isolation.
|
|
360
|
+
- Prefer `@lssm/lib.schema` models to avoid zod schema drift across adapters.
|
|
361
|
+
- When multiple apps consume the same presentation, rely on the `componentKey` indirection rather than importing components across packages.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
//#region src/app-config/branding.d.ts
|
|
2
|
+
interface BrandingAssetRef {
|
|
3
|
+
type: 'logo' | 'logo-dark' | 'favicon' | 'og-image';
|
|
4
|
+
url?: string;
|
|
5
|
+
dimensions?: {
|
|
6
|
+
width: number;
|
|
7
|
+
height: number;
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
interface BrandingDefaults {
|
|
11
|
+
appNameKey: string;
|
|
12
|
+
assets?: BrandingAssetRef[];
|
|
13
|
+
colorTokens?: {
|
|
14
|
+
primary?: string;
|
|
15
|
+
secondary?: string;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
interface TenantBrandingAsset {
|
|
19
|
+
type: 'logo' | 'logo-dark' | 'favicon' | 'og-image';
|
|
20
|
+
url: string;
|
|
21
|
+
metadata?: {
|
|
22
|
+
mimeType?: string;
|
|
23
|
+
sizeBytes?: number;
|
|
24
|
+
dimensions?: {
|
|
25
|
+
width: number;
|
|
26
|
+
height: number;
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
interface TenantBrandingConfig {
|
|
31
|
+
appName?: Record<string, string>;
|
|
32
|
+
assets?: TenantBrandingAsset[];
|
|
33
|
+
colors?: {
|
|
34
|
+
primary?: string;
|
|
35
|
+
secondary?: string;
|
|
36
|
+
};
|
|
37
|
+
customDomain?: string;
|
|
38
|
+
subdomain?: string;
|
|
39
|
+
}
|
|
40
|
+
interface ResolvedBranding {
|
|
41
|
+
appName: string;
|
|
42
|
+
assets: {
|
|
43
|
+
logo?: string;
|
|
44
|
+
logoDark?: string;
|
|
45
|
+
favicon?: string;
|
|
46
|
+
ogImage?: string;
|
|
47
|
+
};
|
|
48
|
+
colors: {
|
|
49
|
+
primary: string;
|
|
50
|
+
secondary: string;
|
|
51
|
+
};
|
|
52
|
+
domain: string;
|
|
53
|
+
}
|
|
54
|
+
//#endregion
|
|
55
|
+
export { BrandingAssetRef, BrandingDefaults, ResolvedBranding, TenantBrandingAsset, TenantBrandingConfig };
|
|
56
|
+
//# sourceMappingURL=branding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"branding.d.ts","names":[],"sources":["../../src/app-config/branding.ts"],"sourcesContent":[],"mappings":";UAAiB,gBAAA;EAAA,IAAA,EAAA,MAAA,GAAA,WAAgB,GAAA,SAAA,GAAA,UAAA;EAMhB,GAAA,CAAA,EAAA,MAAA;EASA,UAAA,CAAA,EAAA;IAUA,KAAA,EAAA,MAAA;IAWA,MAAA,EAAA,MAAA;;;UA9BA,gBAAA;;WAEN;;;;;;UAOM,mBAAA;;;;;;;;;;;;UAUA,oBAAA;YACL;WACD;;;;;;;;UASM,gBAAA"}
|
|
File without changes
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
import { ContractSpec } from "../spec.js";
|
|
2
|
+
import { SpecRegistry } from "../registry.js";
|
|
3
|
+
|
|
4
|
+
//#region src/app-config/contracts.d.ts
|
|
5
|
+
declare const UpdateTenantBrandingCommand: ContractSpec<SchemaModel<{
|
|
6
|
+
tenantId: {
|
|
7
|
+
type: void 0<string, string>;
|
|
8
|
+
isOptional: false;
|
|
9
|
+
};
|
|
10
|
+
appId: {
|
|
11
|
+
type: void 0<string, string>;
|
|
12
|
+
isOptional: false;
|
|
13
|
+
};
|
|
14
|
+
environment: {
|
|
15
|
+
type: void 0<string, string>;
|
|
16
|
+
isOptional: true;
|
|
17
|
+
};
|
|
18
|
+
appName: {
|
|
19
|
+
type: void 0<Record<string, unknown>, Record<string, unknown>>;
|
|
20
|
+
isOptional: true;
|
|
21
|
+
};
|
|
22
|
+
assets: {
|
|
23
|
+
type: SchemaModel<{
|
|
24
|
+
type: {
|
|
25
|
+
type: void 0<string, string>;
|
|
26
|
+
isOptional: false;
|
|
27
|
+
};
|
|
28
|
+
url: {
|
|
29
|
+
type: void 0<string, string>;
|
|
30
|
+
isOptional: false;
|
|
31
|
+
};
|
|
32
|
+
mimeType: {
|
|
33
|
+
type: void 0<string, string>;
|
|
34
|
+
isOptional: true;
|
|
35
|
+
};
|
|
36
|
+
}>;
|
|
37
|
+
isOptional: true;
|
|
38
|
+
isArray: true;
|
|
39
|
+
};
|
|
40
|
+
colors: {
|
|
41
|
+
type: void 0<Record<string, unknown>, Record<string, unknown>>;
|
|
42
|
+
isOptional: true;
|
|
43
|
+
};
|
|
44
|
+
customDomain: {
|
|
45
|
+
type: void 0<string, string>;
|
|
46
|
+
isOptional: true;
|
|
47
|
+
};
|
|
48
|
+
subdomain: {
|
|
49
|
+
type: void 0<string, string>;
|
|
50
|
+
isOptional: true;
|
|
51
|
+
};
|
|
52
|
+
}>, SchemaModel<{
|
|
53
|
+
success: {
|
|
54
|
+
type: void 0<boolean, boolean>;
|
|
55
|
+
isOptional: false;
|
|
56
|
+
};
|
|
57
|
+
updatedAt: {
|
|
58
|
+
type: void 0<Date, string>;
|
|
59
|
+
isOptional: false;
|
|
60
|
+
};
|
|
61
|
+
}>, undefined>;
|
|
62
|
+
declare const VerifyCustomDomainCommand: ContractSpec<SchemaModel<{
|
|
63
|
+
tenantId: {
|
|
64
|
+
type: void 0<string, string>;
|
|
65
|
+
isOptional: false;
|
|
66
|
+
};
|
|
67
|
+
appId: {
|
|
68
|
+
type: void 0<string, string>;
|
|
69
|
+
isOptional: false;
|
|
70
|
+
};
|
|
71
|
+
domain: {
|
|
72
|
+
type: void 0<string, string>;
|
|
73
|
+
isOptional: false;
|
|
74
|
+
};
|
|
75
|
+
}>, SchemaModel<{
|
|
76
|
+
status: {
|
|
77
|
+
type: void 0<string, string>;
|
|
78
|
+
isOptional: false;
|
|
79
|
+
};
|
|
80
|
+
message: {
|
|
81
|
+
type: void 0<string, string>;
|
|
82
|
+
isOptional: true;
|
|
83
|
+
};
|
|
84
|
+
}>, undefined>;
|
|
85
|
+
declare const UpdateBlueprintTranslationCatalogCommand: ContractSpec<SchemaModel<{
|
|
86
|
+
blueprintName: {
|
|
87
|
+
type: void 0<string, string>;
|
|
88
|
+
isOptional: false;
|
|
89
|
+
};
|
|
90
|
+
blueprintVersion: {
|
|
91
|
+
type: void 0<number, number>;
|
|
92
|
+
isOptional: false;
|
|
93
|
+
};
|
|
94
|
+
catalogName: {
|
|
95
|
+
type: void 0<string, string>;
|
|
96
|
+
isOptional: false;
|
|
97
|
+
};
|
|
98
|
+
catalogVersion: {
|
|
99
|
+
type: void 0<number, number>;
|
|
100
|
+
isOptional: false;
|
|
101
|
+
};
|
|
102
|
+
defaultLocale: {
|
|
103
|
+
type: void 0<string, string>;
|
|
104
|
+
isOptional: false;
|
|
105
|
+
};
|
|
106
|
+
supportedLocales: {
|
|
107
|
+
type: void 0<string, string>;
|
|
108
|
+
isOptional: false;
|
|
109
|
+
isArray: true;
|
|
110
|
+
};
|
|
111
|
+
entries: {
|
|
112
|
+
type: SchemaModel<{
|
|
113
|
+
key: {
|
|
114
|
+
type: void 0<string, string>;
|
|
115
|
+
isOptional: false;
|
|
116
|
+
};
|
|
117
|
+
locale: {
|
|
118
|
+
type: void 0<string, string>;
|
|
119
|
+
isOptional: false;
|
|
120
|
+
};
|
|
121
|
+
value: {
|
|
122
|
+
type: void 0<string, string>;
|
|
123
|
+
isOptional: false;
|
|
124
|
+
};
|
|
125
|
+
context: {
|
|
126
|
+
type: void 0<string, string>;
|
|
127
|
+
isOptional: true;
|
|
128
|
+
};
|
|
129
|
+
}>;
|
|
130
|
+
isOptional: false;
|
|
131
|
+
isArray: true;
|
|
132
|
+
};
|
|
133
|
+
}>, SchemaModel<{
|
|
134
|
+
success: {
|
|
135
|
+
type: void 0<boolean, boolean>;
|
|
136
|
+
isOptional: false;
|
|
137
|
+
};
|
|
138
|
+
updatedAt: {
|
|
139
|
+
type: void 0<Date, string>;
|
|
140
|
+
isOptional: false;
|
|
141
|
+
};
|
|
142
|
+
}>, undefined>;
|
|
143
|
+
declare const UpdateTenantTranslationOverridesCommand: ContractSpec<SchemaModel<{
|
|
144
|
+
tenantId: {
|
|
145
|
+
type: void 0<string, string>;
|
|
146
|
+
isOptional: false;
|
|
147
|
+
};
|
|
148
|
+
appId: {
|
|
149
|
+
type: void 0<string, string>;
|
|
150
|
+
isOptional: false;
|
|
151
|
+
};
|
|
152
|
+
entries: {
|
|
153
|
+
type: SchemaModel<{
|
|
154
|
+
key: {
|
|
155
|
+
type: void 0<string, string>;
|
|
156
|
+
isOptional: false;
|
|
157
|
+
};
|
|
158
|
+
locale: {
|
|
159
|
+
type: void 0<string, string>;
|
|
160
|
+
isOptional: false;
|
|
161
|
+
};
|
|
162
|
+
value: {
|
|
163
|
+
type: void 0<string, string>;
|
|
164
|
+
isOptional: false;
|
|
165
|
+
};
|
|
166
|
+
context: {
|
|
167
|
+
type: void 0<string, string>;
|
|
168
|
+
isOptional: true;
|
|
169
|
+
};
|
|
170
|
+
}>;
|
|
171
|
+
isOptional: false;
|
|
172
|
+
isArray: true;
|
|
173
|
+
};
|
|
174
|
+
defaultLocale: {
|
|
175
|
+
type: void 0<string, string>;
|
|
176
|
+
isOptional: true;
|
|
177
|
+
};
|
|
178
|
+
enabledLocales: {
|
|
179
|
+
type: void 0<string, string>;
|
|
180
|
+
isOptional: true;
|
|
181
|
+
isArray: true;
|
|
182
|
+
};
|
|
183
|
+
}>, SchemaModel<{
|
|
184
|
+
success: {
|
|
185
|
+
type: void 0<boolean, boolean>;
|
|
186
|
+
isOptional: false;
|
|
187
|
+
};
|
|
188
|
+
updatedAt: {
|
|
189
|
+
type: void 0<Date, string>;
|
|
190
|
+
isOptional: false;
|
|
191
|
+
};
|
|
192
|
+
}>, undefined>;
|
|
193
|
+
declare const GetResolvedBrandingQuery: ContractSpec<SchemaModel<{
|
|
194
|
+
tenantId: {
|
|
195
|
+
type: void 0<string, string>;
|
|
196
|
+
isOptional: false;
|
|
197
|
+
};
|
|
198
|
+
appId: {
|
|
199
|
+
type: void 0<string, string>;
|
|
200
|
+
isOptional: false;
|
|
201
|
+
};
|
|
202
|
+
environment: {
|
|
203
|
+
type: void 0<string, string>;
|
|
204
|
+
isOptional: true;
|
|
205
|
+
};
|
|
206
|
+
}>, SchemaModel<{
|
|
207
|
+
branding: {
|
|
208
|
+
type: void 0<Record<string, unknown>, Record<string, unknown>>;
|
|
209
|
+
isOptional: false;
|
|
210
|
+
};
|
|
211
|
+
}>, undefined>;
|
|
212
|
+
declare const ResolveMessageQuery: ContractSpec<SchemaModel<{
|
|
213
|
+
tenantId: {
|
|
214
|
+
type: void 0<string, string>;
|
|
215
|
+
isOptional: false;
|
|
216
|
+
};
|
|
217
|
+
appId: {
|
|
218
|
+
type: void 0<string, string>;
|
|
219
|
+
isOptional: false;
|
|
220
|
+
};
|
|
221
|
+
locale: {
|
|
222
|
+
type: void 0<string, string>;
|
|
223
|
+
isOptional: false;
|
|
224
|
+
};
|
|
225
|
+
key: {
|
|
226
|
+
type: void 0<string, string>;
|
|
227
|
+
isOptional: false;
|
|
228
|
+
};
|
|
229
|
+
}>, SchemaModel<{
|
|
230
|
+
value: {
|
|
231
|
+
type: void 0<string, string>;
|
|
232
|
+
isOptional: true;
|
|
233
|
+
};
|
|
234
|
+
source: {
|
|
235
|
+
type: void 0<string, string>;
|
|
236
|
+
isOptional: true;
|
|
237
|
+
};
|
|
238
|
+
}>, undefined>;
|
|
239
|
+
declare const appConfigContracts: Record<string, ContractSpec<any, any>>;
|
|
240
|
+
declare function registerAppConfigContracts(registry: SpecRegistry): SpecRegistry;
|
|
241
|
+
//#endregion
|
|
242
|
+
export { GetResolvedBrandingQuery, ResolveMessageQuery, UpdateBlueprintTranslationCatalogCommand, UpdateTenantBrandingCommand, UpdateTenantTranslationOverridesCommand, VerifyCustomDomainCommand, appConfigContracts, registerAppConfigContracts };
|
|
243
|
+
//# sourceMappingURL=contracts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contracts.d.ts","names":[],"sources":["../../src/app-config/contracts.ts"],"sourcesContent":[],"mappings":";;;;cAgIa,6BAA2B,aAAA;EAA3B,QAAA,EAAA;IAoBX,IAAA,EAAA,KAAA,CAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;;;;;;;;;;;;EApBsC,MAAA,EAAA;IAAA,IAAA,aAAA,CAAA;;;;MAAA,CAAA;MAAA,GAAA,EAAA;QAsB3B,IAAA,QAoBX,CAAA,MAAA,EAAA,MAAA,CAAA;QAAA,UAAA,EAAA,KAAA;;;QApBoC,IAAA,QAAA,CAAA,MAAA,EAAA,MAAA,CAAA;QAAA,UAAA,EAAA,IAAA;;;IAAA,UAAA,EAAA,IAAA;IAAA,OAAA,EAAA,IAAA;EAsBzB,CAAA;EAoBX,MAAA,EAAA;;;;;;;;;;;EApBmD,CAAA;CAAA,CAAA,aAAA,CAAA;;UA5Cb,KAAA;;EA4Ca,CAAA;EAAA,SAAA,EAAA;IAsBxC,IAAA,QAoBX,KAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,KAAA;;;cAhEW,2BAAyB,aAAA;;UAoBpC,KAAA;;;;IAwBkD,IAAA,QAAA,CAAA,MAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,KAAA;;;;IAAA,UAAA,EAAA,KAAA;EAAA,CAAA;AAsBpD,CAAA,CAAA,aAAa,CAAA;EAgCX,MAAA,EAAA;UAlGoC,KAAA;;EAkED,CAAA;;;;;CAAA,CAAA,EAAA,SAAA,CAAA;AAAA,cA5CxB,wCA4CwB,EA5CgB,YA4ChB,CA5CgB,WA4ChB,CAAA;EAkCxB,aAAA,EAAA;IAqBX,IAAA,EA/EA,KAAA,CA+EA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;IArB8B,IAAA,QAAA,CAAA,MAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,KAAA;;;IAAA,IAAA,QAAA,CAAA,MAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,KAAA;EAuBnB,CAAA;EASG,cAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UA9GqC,KAAA;;;;;;;;cAsBxC,yCAAuC,aAAA;;UAoBlD,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UApBkD,KAAA;;;;;;;;cAsBvC,0BAAwB,aAAA;;UAgCnC,KAAA;;;;;;;;;;;;;;;;;cAEW,qBAAmB,aAAA;;UAqB9B,KAAA;;;;;;;;;;;;;;;;;UArB8B,KAAA;;;;;;;;cAuBnB,oBAAoB,eAAe;iBAShC,0BAAA,WAAqC,eAAY"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{ScalarTypeEnum as e}from"../schema/src/ScalarTypeEnum.js";import{SchemaModel as t}from"../schema/src/SchemaModel.js";import"../schema/src/index.js";import{defineCommand as n,defineQuery as r}from"../spec.js";import{OwnersEnum as i,StabilityEnum as a,TagsEnum as o}from"../ownership.js";const s=new t({name:`BrandingAssetInput`,fields:{type:{type:e.String_unsecure(),isOptional:!1},url:{type:e.URL(),isOptional:!1},mimeType:{type:e.String_unsecure(),isOptional:!0}}}),c=new t({name:`UpdateTenantBrandingInput`,fields:{tenantId:{type:e.ID(),isOptional:!1},appId:{type:e.ID(),isOptional:!1},environment:{type:e.String_unsecure(),isOptional:!0},appName:{type:e.JSONObject(),isOptional:!0},assets:{type:s,isOptional:!0,isArray:!0},colors:{type:e.JSONObject(),isOptional:!0},customDomain:{type:e.String_unsecure(),isOptional:!0},subdomain:{type:e.String_unsecure(),isOptional:!0}}}),l=new t({name:`UpdateTenantBrandingOutput`,fields:{success:{type:e.Boolean(),isOptional:!1},updatedAt:{type:e.DateTime(),isOptional:!1}}}),u=new t({name:`VerifyCustomDomainInput`,fields:{tenantId:{type:e.ID(),isOptional:!1},appId:{type:e.ID(),isOptional:!1},domain:{type:e.String_unsecure(),isOptional:!1}}}),d=new t({name:`VerifyCustomDomainOutput`,fields:{status:{type:e.String_unsecure(),isOptional:!1},message:{type:e.String_unsecure(),isOptional:!0}}}),f=new t({name:`TranslationEntryInput`,fields:{key:{type:e.String_unsecure(),isOptional:!1},locale:{type:e.String_unsecure(),isOptional:!1},value:{type:e.String_unsecure(),isOptional:!1},context:{type:e.String_unsecure(),isOptional:!0}}}),p=new t({name:`UpdateBlueprintTranslationInput`,fields:{blueprintName:{type:e.String_unsecure(),isOptional:!1},blueprintVersion:{type:e.Int_unsecure(),isOptional:!1},catalogName:{type:e.String_unsecure(),isOptional:!1},catalogVersion:{type:e.Int_unsecure(),isOptional:!1},defaultLocale:{type:e.String_unsecure(),isOptional:!1},supportedLocales:{type:e.String_unsecure(),isOptional:!1,isArray:!0},entries:{type:f,isOptional:!1,isArray:!0}}}),m=new t({name:`UpdateTenantTranslationInput`,fields:{tenantId:{type:e.ID(),isOptional:!1},appId:{type:e.ID(),isOptional:!1},entries:{type:f,isOptional:!1,isArray:!0},defaultLocale:{type:e.String_unsecure(),isOptional:!0},enabledLocales:{type:e.String_unsecure(),isOptional:!0,isArray:!0}}}),h=new t({name:`MessageResolutionInput`,fields:{tenantId:{type:e.ID(),isOptional:!1},appId:{type:e.ID(),isOptional:!1},locale:{type:e.String_unsecure(),isOptional:!1},key:{type:e.String_unsecure(),isOptional:!1}}}),g=new t({name:`MessageResolutionOutput`,fields:{value:{type:e.String_unsecure(),isOptional:!0},source:{type:e.String_unsecure(),isOptional:!0}}}),_=n({meta:{name:`appConfig.updateTenantBranding`,version:1,description:`Applies tenant branding overrides (names, assets, domains).`,owners:[i.PlatformSigil],tags:[`branding`],stability:a.Beta,goal:`Maintain tenant-specific branding assets and domains.`,context:`Invoked by the Studio or automation when a tenant updates branding settings.`},io:{input:c,output:l},policy:{auth:`admin`,policies:[{name:`platform.app-config.manage`,version:1}]}}),v=n({meta:{name:`appConfig.verifyCustomDomain`,version:1,description:`Validates DNS ownership for tenant custom domains.`,owners:[i.PlatformSigil],tags:[`branding`],stability:a.Experimental,goal:`Confirm tenant-provided domains before activation.`,context:`Triggered after the tenant adds DNS records to verify domain ownership.`},io:{input:u,output:d},policy:{auth:`admin`,policies:[{name:`platform.app-config.manage`,version:1}]}}),y=n({meta:{name:`appConfig.updateBlueprintTranslationCatalog`,version:1,description:`Registers or updates translation entries for a blueprint.`,owners:[i.PlatformSigil],tags:[o.I18n],stability:a.Beta,goal:`Keep blueprint translation catalogs in sync with shipped copy.`,context:`Executed by platform automation or CI when committing updated translation catalogs.`},io:{input:p,output:l},policy:{auth:`admin`,policies:[{name:`platform.app-config.manage`,version:1}]}}),b=n({meta:{name:`appConfig.updateTenantTranslations`,version:1,description:`Applies tenant-specific translation entries.`,owners:[i.PlatformSigil],tags:[o.I18n],stability:a.Beta,goal:`Allow tenants to override selected message keys.`,context:`Called by the Studio when a tenant customizes labels or copy for their locale.`},io:{input:m,output:l},policy:{auth:`admin`,policies:[{name:`platform.app-config.manage`,version:1}]}}),x=r({meta:{name:`appConfig.getResolvedBranding`,version:1,description:`Returns the resolved branding for a tenant/app/environment.`,owners:[i.PlatformSigil],tags:[`branding`],stability:a.Beta,goal:`Expose hydrated branding assets for rendering UI/email experiences.`,context:`Used by runtime surfaces to fetch brand assets prior to rendering tenant-specific experiences.`},io:{input:new t({name:`GetResolvedBrandingInput`,fields:{tenantId:{type:e.ID(),isOptional:!1},appId:{type:e.ID(),isOptional:!1},environment:{type:e.String_unsecure(),isOptional:!0}}}),output:new t({name:`GetResolvedBrandingOutput`,fields:{branding:{type:e.JSONObject(),isOptional:!1}}})},policy:{auth:`admin`,policies:[{name:`platform.app-config.read`,version:1}]}}),S=r({meta:{name:`appConfig.resolveMessage`,version:1,description:`Resolves a translation key for a tenant in the requested locale.`,owners:[i.PlatformSigil],tags:[o.I18n],stability:a.Experimental,goal:`Expose a server-side API for resolving message keys on demand.`,context:`Used by backend services or scripts that need translated copy outside the front-end runtime.`},io:{input:h,output:g},policy:{auth:`admin`,policies:[{name:`platform.app-config.read`,version:1}]}}),C={UpdateTenantBrandingCommand:_,VerifyCustomDomainCommand:v,UpdateBlueprintTranslationCatalogCommand:y,UpdateTenantTranslationOverridesCommand:b,GetResolvedBrandingQuery:x,ResolveMessageQuery:S};function w(e){return e.register(_).register(v).register(y).register(b).register(x).register(S)}export{x as GetResolvedBrandingQuery,S as ResolveMessageQuery,y as UpdateBlueprintTranslationCatalogCommand,_ as UpdateTenantBrandingCommand,b as UpdateTenantTranslationOverridesCommand,v as VerifyCustomDomainCommand,C as appConfigContracts,w as registerAppConfigContracts};
|
|
2
|
+
//# sourceMappingURL=contracts.js.map
|