@lssm/lib.bus 1.7.2 → 1.7.4

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.
Files changed (198) hide show
  1. package/dist/contracts/dist/capabilities/openbanking.js +2 -0
  2. package/dist/contracts/dist/capabilities/openbanking.js.map +1 -0
  3. package/dist/contracts/dist/client/index.js +1 -0
  4. package/dist/contracts/dist/events.js +2 -0
  5. package/dist/contracts/dist/events.js.map +1 -0
  6. package/dist/contracts/dist/graphql-federation/dist/index.js +1 -0
  7. package/dist/contracts/dist/index.js +1 -0
  8. package/dist/contracts/dist/integrations/contracts.js +2 -0
  9. package/dist/contracts/dist/integrations/contracts.js.map +1 -0
  10. package/dist/contracts/dist/integrations/index.js +1 -0
  11. package/dist/contracts/dist/integrations/openbanking/contracts/accounts.js +2 -0
  12. package/dist/contracts/dist/integrations/openbanking/contracts/accounts.js.map +1 -0
  13. package/dist/contracts/dist/integrations/openbanking/contracts/balances.js +2 -0
  14. package/dist/contracts/dist/integrations/openbanking/contracts/balances.js.map +1 -0
  15. package/dist/contracts/dist/integrations/openbanking/contracts/index.js +1 -0
  16. package/dist/contracts/dist/integrations/openbanking/contracts/transactions.js +2 -0
  17. package/dist/contracts/dist/integrations/openbanking/contracts/transactions.js.map +1 -0
  18. package/dist/contracts/dist/integrations/openbanking/models.js +2 -0
  19. package/dist/contracts/dist/integrations/openbanking/models.js.map +1 -0
  20. package/dist/contracts/{src → dist}/integrations/openbanking/telemetry.js +1 -1
  21. package/dist/contracts/dist/integrations/openbanking/telemetry.js.map +1 -0
  22. package/dist/contracts/dist/integrations/providers/elevenlabs.js +2 -0
  23. package/dist/contracts/dist/integrations/providers/elevenlabs.js.map +1 -0
  24. package/dist/contracts/dist/integrations/providers/gcs-storage.js +2 -0
  25. package/dist/contracts/dist/integrations/providers/gcs-storage.js.map +1 -0
  26. package/dist/contracts/dist/integrations/providers/gmail.js +2 -0
  27. package/dist/contracts/dist/integrations/providers/gmail.js.map +1 -0
  28. package/dist/contracts/dist/integrations/providers/google-calendar.js +2 -0
  29. package/dist/contracts/dist/integrations/providers/google-calendar.js.map +1 -0
  30. package/dist/contracts/dist/integrations/providers/index.js +1 -0
  31. package/dist/contracts/dist/integrations/providers/mistral.js +2 -0
  32. package/dist/contracts/dist/integrations/providers/mistral.js.map +1 -0
  33. package/dist/contracts/dist/integrations/providers/postmark.js +2 -0
  34. package/dist/contracts/dist/integrations/providers/postmark.js.map +1 -0
  35. package/dist/contracts/dist/integrations/providers/powens.js +2 -0
  36. package/dist/contracts/dist/integrations/providers/powens.js.map +1 -0
  37. package/dist/contracts/dist/integrations/providers/qdrant.js +2 -0
  38. package/dist/contracts/dist/integrations/providers/qdrant.js.map +1 -0
  39. package/dist/contracts/dist/integrations/providers/stripe.js +2 -0
  40. package/dist/contracts/dist/integrations/providers/stripe.js.map +1 -0
  41. package/dist/contracts/dist/integrations/providers/twilio-sms.js +2 -0
  42. package/dist/contracts/dist/integrations/providers/twilio-sms.js.map +1 -0
  43. package/dist/contracts/dist/knowledge/contracts.js +2 -0
  44. package/dist/contracts/dist/knowledge/contracts.js.map +1 -0
  45. package/dist/contracts/dist/knowledge/index.js +1 -0
  46. package/dist/contracts/dist/knowledge/spaces/email-threads.js +2 -0
  47. package/dist/contracts/dist/knowledge/spaces/email-threads.js.map +1 -0
  48. package/dist/contracts/dist/knowledge/spaces/financial-docs.js +2 -0
  49. package/dist/contracts/dist/knowledge/spaces/financial-docs.js.map +1 -0
  50. package/dist/contracts/dist/knowledge/spaces/financial-overview.js +2 -0
  51. package/dist/contracts/dist/knowledge/spaces/financial-overview.js.map +1 -0
  52. package/dist/contracts/dist/knowledge/spaces/product-canon.js +2 -0
  53. package/dist/contracts/dist/knowledge/spaces/product-canon.js.map +1 -0
  54. package/dist/contracts/dist/knowledge/spaces/support-faq.js +2 -0
  55. package/dist/contracts/dist/knowledge/spaces/support-faq.js.map +1 -0
  56. package/dist/contracts/dist/knowledge/spaces/uploaded-docs.js +2 -0
  57. package/dist/contracts/dist/knowledge/spaces/uploaded-docs.js.map +1 -0
  58. package/dist/contracts/dist/onboarding-base.js +2 -0
  59. package/dist/contracts/dist/onboarding-base.js.map +1 -0
  60. package/dist/contracts/{src → dist}/ownership.js +1 -1
  61. package/dist/contracts/dist/ownership.js.map +1 -0
  62. package/dist/contracts/dist/regenerator/service.js +1 -0
  63. package/dist/{schema/src → contracts/dist/schema/dist}/FieldType.js +1 -1
  64. package/dist/contracts/dist/schema/dist/FieldType.js.map +1 -0
  65. package/dist/contracts/dist/schema/dist/ScalarTypeEnum.js +2 -0
  66. package/dist/contracts/dist/schema/dist/ScalarTypeEnum.js.map +1 -0
  67. package/dist/{schema/src → contracts/dist/schema/dist}/SchemaModel.js +1 -1
  68. package/dist/contracts/dist/schema/dist/SchemaModel.js.map +1 -0
  69. package/dist/contracts/dist/schema/dist/index.js +1 -0
  70. package/dist/contracts/dist/server/graphql-schema-export.js +1 -0
  71. package/dist/contracts/{src → dist}/spec.js +1 -1
  72. package/dist/contracts/dist/spec.js.map +1 -0
  73. package/dist/eventBus.d.ts +3 -1
  74. package/dist/eventBus.d.ts.map +1 -1
  75. package/dist/eventBus.js +1 -1
  76. package/dist/eventBus.js.map +1 -1
  77. package/dist/inMemoryBus.d.ts +1 -0
  78. package/dist/inMemoryBus.d.ts.map +1 -1
  79. package/dist/subscriber.d.ts +2 -1
  80. package/dist/subscriber.d.ts.map +1 -1
  81. package/package.json +12 -3
  82. package/dist/contracts/src/capabilities/openbanking.js +0 -2
  83. package/dist/contracts/src/capabilities/openbanking.js.map +0 -1
  84. package/dist/contracts/src/client/index.js +0 -1
  85. package/dist/contracts/src/events.js +0 -2
  86. package/dist/contracts/src/events.js.map +0 -1
  87. package/dist/contracts/src/index.js +0 -1
  88. package/dist/contracts/src/integrations/contracts.js +0 -2
  89. package/dist/contracts/src/integrations/contracts.js.map +0 -1
  90. package/dist/contracts/src/integrations/index.js +0 -1
  91. package/dist/contracts/src/integrations/openbanking/contracts/accounts.js +0 -2
  92. package/dist/contracts/src/integrations/openbanking/contracts/accounts.js.map +0 -1
  93. package/dist/contracts/src/integrations/openbanking/contracts/balances.js +0 -2
  94. package/dist/contracts/src/integrations/openbanking/contracts/balances.js.map +0 -1
  95. package/dist/contracts/src/integrations/openbanking/contracts/index.js +0 -1
  96. package/dist/contracts/src/integrations/openbanking/contracts/transactions.js +0 -2
  97. package/dist/contracts/src/integrations/openbanking/contracts/transactions.js.map +0 -1
  98. package/dist/contracts/src/integrations/openbanking/models.js +0 -2
  99. package/dist/contracts/src/integrations/openbanking/models.js.map +0 -1
  100. package/dist/contracts/src/integrations/openbanking/telemetry.js.map +0 -1
  101. package/dist/contracts/src/integrations/providers/elevenlabs.js +0 -2
  102. package/dist/contracts/src/integrations/providers/elevenlabs.js.map +0 -1
  103. package/dist/contracts/src/integrations/providers/gcs-storage.js +0 -2
  104. package/dist/contracts/src/integrations/providers/gcs-storage.js.map +0 -1
  105. package/dist/contracts/src/integrations/providers/gmail.js +0 -2
  106. package/dist/contracts/src/integrations/providers/gmail.js.map +0 -1
  107. package/dist/contracts/src/integrations/providers/google-calendar.js +0 -2
  108. package/dist/contracts/src/integrations/providers/google-calendar.js.map +0 -1
  109. package/dist/contracts/src/integrations/providers/index.js +0 -1
  110. package/dist/contracts/src/integrations/providers/mistral.js +0 -2
  111. package/dist/contracts/src/integrations/providers/mistral.js.map +0 -1
  112. package/dist/contracts/src/integrations/providers/postmark.js +0 -2
  113. package/dist/contracts/src/integrations/providers/postmark.js.map +0 -1
  114. package/dist/contracts/src/integrations/providers/powens.js +0 -2
  115. package/dist/contracts/src/integrations/providers/powens.js.map +0 -1
  116. package/dist/contracts/src/integrations/providers/qdrant.js +0 -2
  117. package/dist/contracts/src/integrations/providers/qdrant.js.map +0 -1
  118. package/dist/contracts/src/integrations/providers/stripe.js +0 -2
  119. package/dist/contracts/src/integrations/providers/stripe.js.map +0 -1
  120. package/dist/contracts/src/integrations/providers/twilio-sms.js +0 -2
  121. package/dist/contracts/src/integrations/providers/twilio-sms.js.map +0 -1
  122. package/dist/contracts/src/knowledge/contracts.js +0 -2
  123. package/dist/contracts/src/knowledge/contracts.js.map +0 -1
  124. package/dist/contracts/src/knowledge/index.js +0 -1
  125. package/dist/contracts/src/knowledge/spaces/email-threads.js +0 -2
  126. package/dist/contracts/src/knowledge/spaces/email-threads.js.map +0 -1
  127. package/dist/contracts/src/knowledge/spaces/financial-docs.js +0 -2
  128. package/dist/contracts/src/knowledge/spaces/financial-docs.js.map +0 -1
  129. package/dist/contracts/src/knowledge/spaces/financial-overview.js +0 -2
  130. package/dist/contracts/src/knowledge/spaces/financial-overview.js.map +0 -1
  131. package/dist/contracts/src/knowledge/spaces/product-canon.js +0 -2
  132. package/dist/contracts/src/knowledge/spaces/product-canon.js.map +0 -1
  133. package/dist/contracts/src/knowledge/spaces/support-faq.js +0 -2
  134. package/dist/contracts/src/knowledge/spaces/support-faq.js.map +0 -1
  135. package/dist/contracts/src/knowledge/spaces/uploaded-docs.js +0 -2
  136. package/dist/contracts/src/knowledge/spaces/uploaded-docs.js.map +0 -1
  137. package/dist/contracts/src/onboarding-base.js +0 -2
  138. package/dist/contracts/src/onboarding-base.js.map +0 -1
  139. package/dist/contracts/src/ownership.js.map +0 -1
  140. package/dist/contracts/src/regenerator/service.js +0 -2
  141. package/dist/contracts/src/regenerator/service.js.map +0 -1
  142. package/dist/contracts/src/server/graphql-schema-export.js +0 -1
  143. package/dist/contracts/src/spec.js.map +0 -1
  144. package/dist/graphql-federation/src/index.js +0 -1
  145. package/dist/schema/src/FieldType.js.map +0 -1
  146. package/dist/schema/src/ScalarTypeEnum.js +0 -2
  147. package/dist/schema/src/ScalarTypeEnum.js.map +0 -1
  148. package/dist/schema/src/SchemaModel.js.map +0 -1
  149. package/dist/schema/src/index.js +0 -1
  150. /package/dist/contracts/{src → dist}/client/react/feature-render.js +0 -0
  151. /package/dist/contracts/{src → dist}/client/react/form-render.js +0 -0
  152. /package/dist/contracts/{src → dist}/client/react/index.js +0 -0
  153. /package/dist/contracts/{src → dist}/experiments/evaluator.js +0 -0
  154. /package/dist/contracts/{src → dist}/install.js +0 -0
  155. /package/dist/contracts/{src → dist}/integrations/providers/impls/elevenlabs-voice.js +0 -0
  156. /package/dist/contracts/{src → dist}/integrations/providers/impls/gcs-storage.js +0 -0
  157. /package/dist/contracts/{src → dist}/integrations/providers/impls/gmail-inbound.js +0 -0
  158. /package/dist/contracts/{src → dist}/integrations/providers/impls/gmail-outbound.js +0 -0
  159. /package/dist/contracts/{src → dist}/integrations/providers/impls/google-calendar.js +0 -0
  160. /package/dist/contracts/{src → dist}/integrations/providers/impls/index.js +0 -0
  161. /package/dist/contracts/{src → dist}/integrations/providers/impls/mistral-embedding.js +0 -0
  162. /package/dist/contracts/{src → dist}/integrations/providers/impls/mistral-llm.js +0 -0
  163. /package/dist/contracts/{src → dist}/integrations/providers/impls/postmark-email.js +0 -0
  164. /package/dist/contracts/{src → dist}/integrations/providers/impls/powens-client.js +0 -0
  165. /package/dist/contracts/{src → dist}/integrations/providers/impls/powens-openbanking.js +0 -0
  166. /package/dist/contracts/{src → dist}/integrations/providers/impls/provider-factory.js +0 -0
  167. /package/dist/contracts/{src → dist}/integrations/providers/impls/qdrant-vector.js +0 -0
  168. /package/dist/contracts/{src → dist}/integrations/providers/impls/stripe-payments.js +0 -0
  169. /package/dist/contracts/{src → dist}/integrations/providers/impls/twilio-sms.js +0 -0
  170. /package/dist/contracts/{src → dist}/integrations/runtime.js +0 -0
  171. /package/dist/contracts/{src → dist}/integrations/secrets/env-secret-provider.js +0 -0
  172. /package/dist/contracts/{src → dist}/integrations/secrets/gcp-secret-manager.js +0 -0
  173. /package/dist/contracts/{src → dist}/integrations/secrets/index.js +0 -0
  174. /package/dist/contracts/{src → dist}/integrations/secrets/manager.js +0 -0
  175. /package/dist/contracts/{src → dist}/integrations/secrets/provider.js +0 -0
  176. /package/dist/contracts/{src → dist}/jsonschema.js +0 -0
  177. /package/dist/contracts/{src → dist}/knowledge/spaces/index.js +0 -0
  178. /package/dist/contracts/{src → dist}/presentations.js +0 -0
  179. /package/dist/contracts/{src → dist}/prompt.js +0 -0
  180. /package/dist/contracts/{src → dist}/promptRegistry.js +0 -0
  181. /package/dist/contracts/{src → dist}/regenerator/index.js +0 -0
  182. /package/dist/contracts/{src → dist}/registry.js +0 -0
  183. /package/dist/contracts/{src → dist}/resources.js +0 -0
  184. /package/dist/{schema/src → contracts/dist/schema/dist}/EnumType.js +0 -0
  185. /package/dist/contracts/{src → dist}/server/graphql-pothos.js +0 -0
  186. /package/dist/contracts/{src → dist}/server/index.js +0 -0
  187. /package/dist/contracts/{src → dist}/server/provider-mcp.js +0 -0
  188. /package/dist/contracts/{src → dist}/server/rest-elysia.js +0 -0
  189. /package/dist/contracts/{src → dist}/server/rest-express.js +0 -0
  190. /package/dist/contracts/{src → dist}/server/rest-generic.js +0 -0
  191. /package/dist/contracts/{src → dist}/server/rest-next-app.js +0 -0
  192. /package/dist/contracts/{src → dist}/server/rest-next-pages.js +0 -0
  193. /package/dist/contracts/{src → dist}/telemetry/index.js +0 -0
  194. /package/dist/contracts/{src → dist}/telemetry/tracker.js +0 -0
  195. /package/dist/contracts/{src → dist}/tests/index.js +0 -0
  196. /package/dist/contracts/{src → dist}/tests/runner.js +0 -0
  197. /package/dist/contracts/{src → dist}/workflow/index.js +0 -0
  198. /package/dist/contracts/{src → dist}/workflow/runner.js +0 -0
@@ -1,2 +0,0 @@
1
- import{StabilityEnum as e}from"../../ownership.js";e.Beta;
2
- //# sourceMappingURL=email-threads.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"email-threads.js","names":["emailThreadsKnowledgeSpace: KnowledgeSpaceSpec"],"sources":["../../../../../../contracts/src/knowledge/spaces/email-threads.ts"],"sourcesContent":["import { StabilityEnum } from '../../ownership';\nimport type { KnowledgeSpaceRegistry, KnowledgeSpaceSpec } from '../spec';\n\nexport const emailThreadsKnowledgeSpace: KnowledgeSpaceSpec = {\n meta: {\n key: 'knowledge.email-threads',\n version: 1,\n category: 'operational',\n displayName: 'Email Threads',\n title: 'Operational Email Threads',\n description:\n 'Indexed copies of operational email threads used for support, onboarding, and workflows.',\n domain: 'operations',\n owners: ['platform.operations'],\n tags: ['email', 'operations'],\n stability: StabilityEnum.Beta,\n },\n retention: {\n ttlDays: 365,\n },\n access: {\n policy: { name: 'knowledge.access.email-threads', version: 1 },\n trustLevel: 'medium',\n automationWritable: true,\n },\n indexing: {\n embeddingModel: 'mistral-embed',\n chunkSize: 600,\n vectorDbIntegration: 'vectordb.qdrant',\n },\n description:\n 'Operational email threads synchronized from Gmail to support automations and contextual assistance.',\n};\n\nexport function registerEmailThreadsKnowledgeSpace(\n registry: KnowledgeSpaceRegistry\n): KnowledgeSpaceRegistry {\n return registry.register(emailThreadsKnowledgeSpace);\n}\n\n\n"],"mappings":"mDAee,EAAc"}
@@ -1,2 +0,0 @@
1
- import{StabilityEnum as e}from"../../ownership.js";e.Beta;
2
- //# sourceMappingURL=financial-docs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"financial-docs.js","names":["financialDocsKnowledgeSpace: KnowledgeSpaceSpec"],"sources":["../../../../../../contracts/src/knowledge/spaces/financial-docs.ts"],"sourcesContent":["import { StabilityEnum } from '../../ownership';\nimport type { KnowledgeSpaceRegistry, KnowledgeSpaceSpec } from '../spec';\n\nexport const financialDocsKnowledgeSpace: KnowledgeSpaceSpec = {\n meta: {\n key: 'knowledge.financial-docs',\n version: 1,\n category: 'canonical',\n displayName: 'Financial Documents',\n title: 'Household Financial Documents',\n description:\n 'Invoices, bills, and contracts powering Pocket Family Office financial automation.',\n domain: 'finance',\n owners: ['platform.finance'],\n tags: ['finance', 'documents'],\n stability: StabilityEnum.Beta,\n },\n retention: {\n ttlDays: null,\n },\n access: {\n policy: { name: 'knowledge.access.financial-docs', version: 1 },\n trustLevel: 'high',\n automationWritable: true,\n },\n indexing: {\n embeddingModel: 'mistral-embed',\n chunkSize: 700,\n vectorDbIntegration: 'vectordb.qdrant',\n },\n description:\n 'Normalized financial documents enabling bill pay automation, reminders, and summaries.',\n};\n\nexport function registerFinancialDocsKnowledgeSpace(\n registry: KnowledgeSpaceRegistry\n): KnowledgeSpaceRegistry {\n return registry.register(financialDocsKnowledgeSpace);\n}\n\n\n"],"mappings":"mDAee,EAAc"}
@@ -1,2 +0,0 @@
1
- import{StabilityEnum as e}from"../../ownership.js";e.Experimental;
2
- //# sourceMappingURL=financial-overview.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"financial-overview.js","names":["financialOverviewKnowledgeSpace: KnowledgeSpaceSpec"],"sources":["../../../../../../contracts/src/knowledge/spaces/financial-overview.ts"],"sourcesContent":["import { StabilityEnum } from '../../ownership';\nimport type { KnowledgeSpaceRegistry, KnowledgeSpaceSpec } from '../spec';\n\nexport const financialOverviewKnowledgeSpace: KnowledgeSpaceSpec = {\n meta: {\n key: 'knowledge.financial-overview',\n version: 1,\n category: 'operational',\n displayName: 'Financial Overview Summaries',\n title: 'Derived Financial Summaries',\n description:\n 'Aggregated cashflow summaries, category breakdowns, and balance trends derived from open banking data.',\n domain: 'finance',\n owners: ['platform.finance'],\n tags: ['open-banking', 'summaries', 'cashflow'],\n stability: StabilityEnum.Experimental,\n },\n retention: {\n ttlDays: 180,\n },\n access: {\n policy: { name: 'knowledge.access.financial-overview', version: 1 },\n trustLevel: 'medium',\n automationWritable: true,\n },\n indexing: {\n embeddingModel: 'mistral-embed',\n chunkSize: 600,\n vectorDbIntegration: 'vectordb.qdrant',\n },\n description:\n 'Derived knowledge space containing weekly/monthly cashflow rollups and account health summaries. Raw transactions are excluded to respect privacy guardrails.',\n};\n\nexport function registerFinancialOverviewKnowledgeSpace(\n registry: KnowledgeSpaceRegistry\n): KnowledgeSpaceRegistry {\n return registry.register(financialOverviewKnowledgeSpace);\n}\n\n"],"mappings":"mDAee,EAAc"}
@@ -1,2 +0,0 @@
1
- import{StabilityEnum as e}from"../../ownership.js";e.Stable;
2
- //# sourceMappingURL=product-canon.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"product-canon.js","names":["productCanonKnowledgeSpace: KnowledgeSpaceSpec"],"sources":["../../../../../../contracts/src/knowledge/spaces/product-canon.ts"],"sourcesContent":["import { StabilityEnum } from '../../ownership';\nimport type { KnowledgeSpaceRegistry, KnowledgeSpaceSpec } from '../spec';\n\nexport const productCanonKnowledgeSpace: KnowledgeSpaceSpec = {\n meta: {\n key: 'knowledge.product-canon',\n version: 1,\n category: 'canonical',\n displayName: 'Product Canon',\n title: 'Product Canon Knowledge Space',\n description:\n 'Authoritative product knowledge covering strategy, roadmap, and delivery canon.',\n domain: 'product',\n owners: ['platform.product'],\n tags: ['knowledge', 'product'],\n stability: StabilityEnum.Stable,\n },\n retention: {\n ttlDays: null,\n },\n access: {\n policy: { name: 'knowledge.access.product-canon', version: 1 },\n trustLevel: 'high',\n automationWritable: false,\n },\n indexing: {\n embeddingModel: 'text-embedding-3-large',\n chunkSize: 800,\n vectorDbIntegration: 'vectordb.qdrant',\n },\n description:\n 'Single source of truth for product canon, principles, and strategic narratives.',\n};\n\nexport function registerProductCanonKnowledgeSpace(\n registry: KnowledgeSpaceRegistry\n): KnowledgeSpaceRegistry {\n return registry.register(productCanonKnowledgeSpace);\n}\n\n\n\n\n"],"mappings":"mDAee,EAAc"}
@@ -1,2 +0,0 @@
1
- import{StabilityEnum as e}from"../../ownership.js";e.Beta;
2
- //# sourceMappingURL=support-faq.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"support-faq.js","names":["supportFaqKnowledgeSpace: KnowledgeSpaceSpec"],"sources":["../../../../../../contracts/src/knowledge/spaces/support-faq.ts"],"sourcesContent":["import { StabilityEnum } from '../../ownership';\nimport type { KnowledgeSpaceRegistry, KnowledgeSpaceSpec } from '../spec';\n\nexport const supportFaqKnowledgeSpace: KnowledgeSpaceSpec = {\n meta: {\n key: 'knowledge.support-faq',\n version: 1,\n category: 'operational',\n displayName: 'Support FAQ',\n title: 'Support & Success FAQ',\n description: 'Operational knowledge base for customer support and success.',\n domain: 'support',\n owners: ['platform.support'],\n tags: ['knowledge', 'support'],\n stability: StabilityEnum.Beta,\n },\n retention: {\n ttlDays: 365,\n archiveAfterDays: 180,\n },\n access: {\n policy: { name: 'knowledge.access.support', version: 1 },\n trustLevel: 'medium',\n automationWritable: true,\n },\n indexing: {\n embeddingModel: 'text-embedding-3-small',\n chunkSize: 700,\n vectorDbIntegration: 'vectordb.qdrant',\n },\n description:\n 'Operational FAQs, runbooks, and customer success playbooks augmented with automation updates.',\n};\n\nexport function registerSupportFaqKnowledgeSpace(\n registry: KnowledgeSpaceRegistry\n): KnowledgeSpaceRegistry {\n return registry.register(supportFaqKnowledgeSpace);\n}\n\n\n\n\n"],"mappings":"mDAce,EAAc"}
@@ -1,2 +0,0 @@
1
- import{StabilityEnum as e}from"../../ownership.js";e.Beta;
2
- //# sourceMappingURL=uploaded-docs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"uploaded-docs.js","names":["uploadedDocsKnowledgeSpace: KnowledgeSpaceSpec"],"sources":["../../../../../../contracts/src/knowledge/spaces/uploaded-docs.ts"],"sourcesContent":["import { StabilityEnum } from '../../ownership';\nimport type { KnowledgeSpaceRegistry, KnowledgeSpaceSpec } from '../spec';\n\nexport const uploadedDocsKnowledgeSpace: KnowledgeSpaceSpec = {\n meta: {\n key: 'knowledge.uploaded-docs',\n version: 1,\n category: 'external',\n displayName: 'Uploaded Documents',\n title: 'Uploaded Knowledge Assets',\n description:\n 'Documents uploaded by households, including invoices, contracts, and reference files.',\n domain: 'operations',\n owners: ['platform.operations'],\n tags: ['documents', 'storage'],\n stability: StabilityEnum.Beta,\n },\n retention: {\n ttlDays: null,\n },\n access: {\n policy: { name: 'knowledge.access.uploaded-docs', version: 1 },\n trustLevel: 'medium',\n automationWritable: true,\n },\n indexing: {\n embeddingModel: 'mistral-embed',\n chunkSize: 900,\n vectorDbIntegration: 'vectordb.qdrant',\n },\n description:\n 'User-provided documents normalized and embedded for retrieval augmented workflows.',\n};\n\nexport function registerUploadedDocsKnowledgeSpace(\n registry: KnowledgeSpaceRegistry\n): KnowledgeSpaceRegistry {\n return registry.register(uploadedDocsKnowledgeSpace);\n}\n\n\n"],"mappings":"mDAee,EAAc"}
@@ -1,2 +0,0 @@
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}from"./ownership.js";const o=new t({name:`SaveOnboardingDraftInput`,description:`Input for saving onboarding draft`,fields:{data:{type:e.JSON(),isOptional:!1}}}),s=new t({name:`SaveOnboardingDraftOutput`,description:`Output for saving onboarding draft`,fields:{id:{type:e.ID(),isOptional:!1},organizationId:{type:e.ID(),isOptional:!1}}});n({meta:{name:`base.onboarding.saveDraft`,version:1,stability:a.Beta,owners:[i.PlatformSigil],tags:[`onboarding`,`draft`],description:`Save or update onboarding draft for active organization`,goal:`Persist onboarding progress incrementally for resumption and safety`,context:`Auto-saves every few seconds during onboarding; enables users to leave and resume`},io:{input:o,output:s},policy:{auth:`user`,escalate:null},transport:{gql:{field:`saveOnboardingDraft`},rest:{method:`POST`}}});const c=new t({name:`GetOnboardingDraftOutput`,description:`Onboarding draft payload`,fields:{id:{type:e.ID(),isOptional:!0},organizationId:{type:e.ID(),isOptional:!0},data:{type:e.JSON(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!0},updatedAt:{type:e.DateTime(),isOptional:!0}}});r({meta:{name:`base.onboarding.getDraft`,version:1,stability:a.Beta,owners:[i.PlatformSigil],tags:[`onboarding`,`draft`],description:`Get onboarding draft for active organization`,goal:`Retrieve saved onboarding progress`,context:`Called on mount to restore in-progress onboarding`},io:{input:null,output:c},policy:{auth:`user`,escalate:null},transport:{gql:{field:`getOnboardingDraft`},rest:{method:`GET`}}});const l=new t({name:`DeleteOnboardingDraftOutput`,description:`Result of delete operation`,fields:{ok:{type:e.Boolean(),isOptional:!1}}});n({meta:{name:`base.onboarding.deleteDraft`,version:1,stability:a.Beta,owners:[i.PlatformSigil],tags:[`onboarding`,`draft`],description:`Delete onboarding draft for active organization`,goal:`Clear draft after completion or if user wants to restart`,context:`Called after successful onboarding or explicit user reset`},io:{input:null,output:l},policy:{auth:`user`,escalate:null},transport:{gql:{field:`deleteOnboardingDraft`},rest:{method:`POST`}}});const u=new t({name:`CompleteOnboardingBaseInput`,description:`Input for completing onboarding`,fields:{data:{type:e.JSON(),isOptional:!1}}}),d=new t({name:`CompleteOnboardingBaseOutput`,description:`Result of onboarding completion`,fields:{success:{type:e.Boolean(),isOptional:!1},userId:{type:e.ID(),isOptional:!0},organizationId:{type:e.ID(),isOptional:!0}}});n({meta:{name:`base.onboarding.complete`,version:1,stability:a.Beta,owners:[i.PlatformSigil],tags:[`onboarding`],description:`Complete onboarding and finalize user/organization setup`,goal:`Transition from draft to active profile`,context:`Validates all required fields, creates/updates entities, marks onboarding complete`},io:{input:u,output:d},policy:{auth:`user`,escalate:null},transport:{gql:{field:`completeOnboarding`},rest:{method:`POST`}}});export{u as CompleteOnboardingBaseInput,d as CompleteOnboardingBaseOutput,l as DeleteOnboardingDraftOutput,c as GetOnboardingDraftOutput,o as SaveOnboardingDraftInput,s as SaveOnboardingDraftOutput};
2
- //# sourceMappingURL=onboarding-base.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"onboarding-base.js","names":[],"sources":["../../../../contracts/src/onboarding-base.ts"],"sourcesContent":["/**\n * Shared base contracts for onboarding flows across verticals.\n * These operations are reusable for any app that needs multi-step onboarding with draft persistence.\n */\nimport { defineCommand, defineQuery } from './spec';\nimport { ScalarTypeEnum, SchemaModel } from '@lssm/lib.schema';\nimport { OwnersEnum, StabilityEnum } from './ownership';\n\n/** Save/update onboarding draft (auto-save during flow) */\nexport const SaveOnboardingDraftInput = new SchemaModel({\n name: 'SaveOnboardingDraftInput',\n description: 'Input for saving onboarding draft',\n fields: {\n data: { type: ScalarTypeEnum.JSON(), isOptional: false },\n },\n});\n\nexport const SaveOnboardingDraftOutput = new SchemaModel({\n name: 'SaveOnboardingDraftOutput',\n description: 'Output for saving onboarding draft',\n fields: {\n id: { type: ScalarTypeEnum.ID(), isOptional: false },\n organizationId: { type: ScalarTypeEnum.ID(), isOptional: false },\n },\n});\n\nexport const SaveOnboardingDraftBaseSpec = defineCommand({\n meta: {\n name: 'base.onboarding.saveDraft',\n version: 1,\n stability: StabilityEnum.Beta,\n owners: [OwnersEnum.PlatformSigil],\n tags: ['onboarding', 'draft'],\n description: 'Save or update onboarding draft for active organization',\n goal: 'Persist onboarding progress incrementally for resumption and safety',\n context:\n 'Auto-saves every few seconds during onboarding; enables users to leave and resume',\n },\n io: {\n input: SaveOnboardingDraftInput,\n output: SaveOnboardingDraftOutput,\n },\n policy: {\n auth: 'user',\n escalate: null,\n },\n transport: {\n gql: { field: 'saveOnboardingDraft' },\n rest: { method: 'POST' },\n },\n});\n\n/** Get current onboarding draft (on mount/restore) */\nexport const GetOnboardingDraftOutput = new SchemaModel({\n name: 'GetOnboardingDraftOutput',\n description: 'Onboarding draft payload',\n fields: {\n id: { type: ScalarTypeEnum.ID(), isOptional: true },\n organizationId: { type: ScalarTypeEnum.ID(), isOptional: true },\n data: { type: ScalarTypeEnum.JSON(), isOptional: true },\n createdAt: { type: ScalarTypeEnum.DateTime(), isOptional: true },\n updatedAt: { type: ScalarTypeEnum.DateTime(), isOptional: true },\n },\n});\n\nexport const GetOnboardingDraftBaseSpec = defineQuery({\n meta: {\n name: 'base.onboarding.getDraft',\n version: 1,\n stability: StabilityEnum.Beta,\n owners: [OwnersEnum.PlatformSigil],\n tags: ['onboarding', 'draft'],\n description: 'Get onboarding draft for active organization',\n goal: 'Retrieve saved onboarding progress',\n context: 'Called on mount to restore in-progress onboarding',\n },\n io: {\n input: null,\n output: GetOnboardingDraftOutput,\n },\n policy: {\n auth: 'user',\n escalate: null,\n },\n transport: {\n gql: { field: 'getOnboardingDraft' },\n rest: { method: 'GET' },\n },\n});\n\n/** Delete onboarding draft (cleanup after completion or cancel) */\nexport const DeleteOnboardingDraftOutput = new SchemaModel({\n name: 'DeleteOnboardingDraftOutput',\n description: 'Result of delete operation',\n fields: {\n ok: { type: ScalarTypeEnum.Boolean(), isOptional: false },\n },\n});\n\nexport const DeleteOnboardingDraftBaseSpec = defineCommand({\n meta: {\n name: 'base.onboarding.deleteDraft',\n version: 1,\n stability: StabilityEnum.Beta,\n owners: [OwnersEnum.PlatformSigil],\n tags: ['onboarding', 'draft'],\n description: 'Delete onboarding draft for active organization',\n goal: 'Clear draft after completion or if user wants to restart',\n context: 'Called after successful onboarding or explicit user reset',\n },\n io: {\n input: null,\n output: DeleteOnboardingDraftOutput,\n },\n policy: {\n auth: 'user',\n escalate: null,\n },\n transport: {\n gql: { field: 'deleteOnboardingDraft' },\n rest: { method: 'POST' },\n },\n});\n\n/** Complete onboarding (final submit, creates entities) */\nexport const CompleteOnboardingBaseInput = new SchemaModel({\n name: 'CompleteOnboardingBaseInput',\n description: 'Input for completing onboarding',\n fields: {\n data: { type: ScalarTypeEnum.JSON(), isOptional: false },\n },\n});\n\nexport const CompleteOnboardingBaseOutput = new SchemaModel({\n name: 'CompleteOnboardingBaseOutput',\n description: 'Result of onboarding completion',\n fields: {\n success: { type: ScalarTypeEnum.Boolean(), isOptional: false },\n userId: { type: ScalarTypeEnum.ID(), isOptional: true },\n organizationId: { type: ScalarTypeEnum.ID(), isOptional: true },\n },\n});\n\nexport const CompleteOnboardingBaseSpec = defineCommand({\n meta: {\n name: 'base.onboarding.complete',\n version: 1,\n stability: StabilityEnum.Beta,\n owners: [OwnersEnum.PlatformSigil],\n tags: ['onboarding'],\n description: 'Complete onboarding and finalize user/organization setup',\n goal: 'Transition from draft to active profile',\n context:\n 'Validates all required fields, creates/updates entities, marks onboarding complete',\n },\n io: {\n input: CompleteOnboardingBaseInput,\n output: CompleteOnboardingBaseOutput,\n },\n policy: {\n auth: 'user',\n escalate: null,\n },\n transport: {\n gql: { field: 'completeOnboarding' },\n rest: { method: 'POST' },\n },\n});\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ownership.js","names":[],"sources":["../../../../contracts/src/ownership.ts"],"sourcesContent":["// Canonical ownership/stability/tags enums and shared meta\n\nexport const StabilityEnum = {\n Idea: 'idea',\n InCreation: 'in_creation',\n Experimental: 'experimental',\n Beta: 'beta',\n Stable: 'stable',\n Deprecated: 'deprecated',\n} as const;\nexport type Stability = (typeof StabilityEnum)[keyof typeof StabilityEnum];\n\n// Provide curated owner identifiers (business/product oriented), allow extension by string\nexport const OwnersEnum = {\n ProductColiving: 'product.coliving',\n ProductStrit: 'product.strit',\n ProductArtisanos: 'product.artisanos',\n PlatformSigil: 'platform.sigil',\n PlatformMarketplace: 'platform.marketplace',\n PlatformContent: 'platform.content',\n PlatformFeatureFlags: 'platform.featureflags',\n} as const;\nexport type Owner =\n | (typeof OwnersEnum)[keyof typeof OwnersEnum]\n | (string & {});\n// Back-compat alias\nexport const Owners = OwnersEnum;\n\n// Provide common tags, allow extension by string\nexport const TagsEnum = {\n Spots: 'spots',\n Collectivity: 'collectivity',\n Marketplace: 'marketplace',\n Sellers: 'sellers',\n Auth: 'auth',\n Login: 'login',\n Signup: 'signup',\n Guide: 'guide',\n Docs: 'docs',\n I18n: 'i18n',\n AtomicPages: 'atomic:pages',\n Incident: 'incident',\n Hygiene: 'hygiene',\n WeeklyPulse: 'weekly_pulse',\n WebAuth: 'webauth',\n} as const;\nexport type Tag = (typeof TagsEnum)[keyof typeof TagsEnum] | (string & {});\n// Back-compat alias\nexport const Tags = TagsEnum;\n\nexport interface OwnerShipMeta {\n version?: number;\n title: string;\n description: string;\n domain: string;\n owners: Owner[];\n tags: Tag[];\n stability: Stability;\n}\n"],"mappings":"AAEA,MAAa,EAAgB,CAC3B,KAAM,OACN,WAAY,cACZ,aAAc,eACd,KAAM,OACN,OAAQ,SACR,WAAY,aACb,CAIY,EAAa,CACxB,gBAAiB,mBACjB,aAAc,gBACd,iBAAkB,oBAClB,cAAe,iBACf,oBAAqB,uBACrB,gBAAiB,mBACjB,qBAAsB,wBACvB"}
@@ -1,2 +0,0 @@
1
- import"node:timers/promises";
2
- //# sourceMappingURL=service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"service.js","names":[],"sources":["../../../../../contracts/src/regenerator/service.ts"],"sourcesContent":["import { setTimeout as delay } from 'node:timers/promises';\nimport type {\n ProposalSink,\n RegeneratorSignal,\n RegenerationRule,\n RegenerationContext,\n SpecChangeProposal,\n} from './types';\nimport type { SignalAdapters } from './adapters';\nimport { telemetryToEnvelope, errorToEnvelope, behaviorToEnvelope } from './utils';\n\nexport interface RegeneratorOptions {\n contexts: RegenerationContext[];\n adapters: SignalAdapters;\n rules: RegenerationRule[];\n sink: ProposalSink;\n pollIntervalMs?: number;\n batchDurationMs?: number;\n clock?: () => Date;\n}\n\nconst DEFAULT_POLL_INTERVAL = 60_000;\nconst DEFAULT_BATCH_DURATION = 5 * 60_000;\n\nexport class RegeneratorService {\n private readonly contexts: Map<string, RegenerationContext>;\n private readonly lastPoll = new Map<string, Date>();\n private timer?: NodeJS.Timeout;\n private running = false;\n private readonly pollInterval: number;\n private readonly batchDuration: number;\n private readonly clock: () => Date;\n\n constructor(private readonly options: RegeneratorOptions) {\n this.contexts = new Map(\n options.contexts.map((ctx) => [ctx.id, ctx])\n );\n this.pollInterval = options.pollIntervalMs ?? DEFAULT_POLL_INTERVAL;\n this.batchDuration = options.batchDurationMs ?? DEFAULT_BATCH_DURATION;\n this.clock = options.clock ?? (() => new Date());\n if (this.options.rules.length === 0) {\n throw new Error('RegeneratorService requires at least one rule');\n }\n }\n\n start() {\n if (this.running) return;\n this.running = true;\n void this.tick();\n this.timer = setInterval(() => {\n void this.tick();\n }, this.pollInterval);\n }\n\n stop() {\n if (!this.running) return;\n this.running = false;\n if (this.timer) {\n clearInterval(this.timer);\n this.timer = undefined;\n }\n }\n\n async runOnce(): Promise<void> {\n await this.tick();\n }\n\n private async tick(): Promise<void> {\n const now = this.clock();\n const sinceDefault = new Date(now.getTime() - this.batchDuration);\n for (const context of this.contexts.values()) {\n const last = this.lastPoll.get(context.id) ?? sinceDefault;\n await this.evaluateContext(context, last, now);\n this.lastPoll.set(context.id, now);\n }\n }\n\n private async evaluateContext(\n context: RegenerationContext,\n since: Date,\n until: Date\n ): Promise<void> {\n const signals = await this.collectSignals(context, since, until);\n if (signals.length === 0) return;\n\n for (const rule of this.options.rules) {\n let proposals: SpecChangeProposal[] = [];\n try {\n proposals = await rule.evaluate(context, signals);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\n `[regenerator] rule ${rule.id} failed`,\n error instanceof Error ? error : new Error(String(error))\n );\n continue;\n }\n await this.flushProposals(context, proposals);\n }\n }\n\n private async collectSignals(\n context: RegenerationContext,\n since: Date,\n until: Date\n ): Promise<RegeneratorSignal[]> {\n const envelopes: RegeneratorSignal[] = [];\n const { adapters } = this.options;\n if (adapters.telemetry) {\n const telemetrySignals = await adapters.telemetry.pollTelemetry(\n context,\n since,\n until\n );\n envelopes.push(\n ...telemetrySignals.map((signal) =>\n telemetryToEnvelope(context.id, signal, this.clock)\n )\n );\n }\n if (adapters.errors) {\n const errorSignals = await adapters.errors.pollErrors(\n context,\n since,\n until\n );\n envelopes.push(\n ...errorSignals.map((signal) =>\n errorToEnvelope(context.id, signal, this.clock)\n )\n );\n }\n if (adapters.behavior) {\n const behaviorSignals = await adapters.behavior.pollBehavior(\n context,\n since,\n until\n );\n envelopes.push(\n ...behaviorSignals.map((signal) =>\n behaviorToEnvelope(context.id, signal, this.clock)\n )\n );\n }\n return envelopes;\n }\n\n private async flushProposals(\n context: RegenerationContext,\n proposals: SpecChangeProposal[]\n ): Promise<void> {\n for (const proposal of proposals) {\n if (proposal.signalIds.length === 0) continue;\n await this.options.sink.submit(context, proposal);\n // allow event loop to breathe when large volumes\n if (proposals.length > 10) {\n await delay(0);\n }\n }\n }\n}\n\n\n\n\n"],"mappings":""}
@@ -1 +0,0 @@
1
- "use server";import"../../../graphql-federation/src/index.js";import"graphql";
@@ -1 +0,0 @@
1
- {"version":3,"file":"spec.js","names":[],"sources":["../../../../contracts/src/spec.ts"],"sourcesContent":["/**\n * ContractSpec: a single source of truth describing one operation (command/query).\n * It carries narrative context for humans/agents AND machine-typed input/output/policy.\n */\nimport type { EventSpec } from './events';\nimport type { AnySchemaModel } from '@lssm/lib.schema';\nimport type { ResourceRefDescriptor } from './resources';\nimport type { Owner, Stability, Tag } from './ownership';\nimport type { PolicyRef } from './policy/spec';\nimport type { TestSpecRef } from './tests/spec';\n\nexport type OpKind = 'command' | 'query';\n\n// preferred: reference a declared event\nexport interface EmitDeclRef {\n ref: EventSpec<AnySchemaModel>;\n when: string;\n}\n// inline (fallback)\nexport interface EmitDeclInline {\n name: string;\n version: number;\n when: string;\n payload: AnySchemaModel;\n}\nexport type EmitDecl = EmitDeclRef | EmitDeclInline;\nexport const isEmitDeclRef = (e: EmitDecl): e is EmitDeclRef => 'ref' in e;\n\nexport interface TelemetryTrigger {\n event: { name: string; version?: number };\n properties?: (args: {\n input: unknown;\n output?: unknown;\n error?: unknown;\n }) => Record<string, unknown>;\n}\n\nexport interface ContractSpec<\n Input extends AnySchemaModel,\n Output extends AnySchemaModel | ResourceRefDescriptor<boolean>,\n Events extends readonly EmitDecl[] | undefined =\n | readonly EmitDecl[]\n | undefined,\n> {\n meta: {\n /** Fully-qualified op name (e.g., \"sigil.beginSignup\") */\n name: string;\n /** Breaking changes => bump version */\n version: number;\n /** \"command\" changes state; \"query\" is read-only/idempotent */\n kind: OpKind;\n /** Lifecycle marker for comms & tooling */\n stability: Stability;\n /** Owners for CODEOWNERS / on-call / approvals */\n owners: Owner[];\n /** Search tags, grouping, docs navigation */\n tags: Tag[];\n /** Short human-friendly summary */\n description: string;\n /** Business goal: why this exists */\n goal: string;\n /** Background, constraints, scope edges (feeds docs & LLM context) */\n context: string;\n };\n\n io: {\n /** Zod schema for input payload */\n input: Input | null;\n /** Zod schema for output payload */\n output: Output;\n /** Named, typed errors this op may throw (optional) */\n errors?: Record<\n string,\n {\n description: string;\n http?: number; // suggested HTTP status if surfaced over REST\n gqlCode?: string; // suggested GraphQL error code\n when: string; // human-readable condition\n }\n >;\n };\n\n policy: {\n /** Minimal auth category allowed to call this op */\n auth: 'anonymous' | 'user' | 'admin';\n /** Idempotency hint. Queries default true; commands default false. */\n idempotent?: boolean;\n /** Soft rate limit suggestion; adapter enforces via limiter */\n rateLimit?: { rpm: number; key: 'user' | 'org' | 'global' };\n /** Feature flags that must be ON for this op to run */\n flags?: string[];\n /** Whether a human must approve before action (e.g., risky commands) */\n escalate?: 'human_review' | null;\n /** JSONPath-like pointers to redact from logs/prompts */\n pii?: string[];\n /** Referenced policy specs governing access */\n policies?: PolicyRef[];\n /** Field-level overrides referencing policy specs */\n fieldPolicies?: {\n field: string;\n actions: ('read' | 'write')[];\n policy?: PolicyRef;\n }[];\n };\n\n sideEffects?: {\n /** Declared events this op may emit; runtime will guard against others */\n emits?: Events;\n /** Analytics intents (names); the service decides the sink */\n analytics?: string[];\n /** Audit intents (labels); the service decides storage */\n audit?: string[];\n };\n\n telemetry?: {\n success?: TelemetryTrigger;\n failure?: TelemetryTrigger;\n };\n\n tests?: TestSpecRef[];\n\n transport?: {\n rest?: {\n /** Override HTTP method (default: POST for commands, GET for queries) */\n method?: 'GET' | 'POST';\n /** Override path (default derived from meta.name/version) */\n path?: string;\n };\n gql?: {\n /** Override field name (default: dots→underscores + _vN) */\n field?: string;\n returns?: string;\n // byIdField?: string;\n // resource?: string;\n };\n mcp?: {\n /** Override tool identifier (default: \"<name>.v<version>\") */\n toolName?: string;\n };\n };\n\n acceptance?: {\n /** Gherkin-lite scenarios for docs & auto tests */\n scenarios?: {\n name: string;\n given: string[];\n when: string[];\n then: string[];\n }[];\n /** Request/response examples (used for docs & snapshot tests) */\n examples?: { name: string; input: unknown; output: unknown }[];\n };\n}\n\nexport type AnyContractSpec = ContractSpec<\n AnySchemaModel,\n AnySchemaModel | ResourceRefDescriptor<boolean>\n>;\n\nexport const defineCommand = <\n I extends AnySchemaModel,\n O extends AnySchemaModel | ResourceRefDescriptor<boolean>,\n E extends readonly EmitDecl[] | undefined = undefined,\n>(\n spec: Omit<ContractSpec<I, O, E>, 'meta' | 'policy'> & {\n meta: Omit<ContractSpec<I, O, E>['meta'], 'kind'>;\n policy: Omit<ContractSpec<I, O, E>['policy'], 'idempotent'>;\n }\n): ContractSpec<I, O, E> => ({\n ...spec,\n meta: { ...spec.meta, kind: 'command' as const },\n policy: {\n ...spec.policy,\n idempotent:\n (spec.policy as never as ContractSpec<never, never, never>)?.['policy']\n ?.idempotent ?? false,\n },\n});\n\nexport const defineQuery = <\n I extends AnySchemaModel,\n O extends AnySchemaModel | ResourceRefDescriptor<boolean>,\n E extends readonly EmitDecl[] | undefined = undefined,\n>(\n spec: Omit<ContractSpec<I, O, E>, 'meta' | 'policy'> & {\n meta: Omit<ContractSpec<I, O, E>['meta'], 'kind'>;\n policy: Omit<ContractSpec<I, O, E>['policy'], 'idempotent'>;\n }\n): ContractSpec<I, O, E> => ({\n ...spec,\n meta: { ...spec.meta, kind: 'query' as const },\n policy: { ...spec.policy, idempotent: true },\n});\n"],"mappings":"AA+JA,MAAa,EAKX,IAI2B,CAC3B,GAAG,EACH,KAAM,CAAE,GAAG,EAAK,KAAM,KAAM,UAAoB,CAChD,OAAQ,CACN,GAAG,EAAK,OACR,WACG,EAAK,QAAwD,QAC1D,YAAc,GACrB,CACF,EAEY,EAKX,IAI2B,CAC3B,GAAG,EACH,KAAM,CAAE,GAAG,EAAK,KAAM,KAAM,QAAkB,CAC9C,OAAQ,CAAE,GAAG,EAAK,OAAQ,WAAY,GAAM,CAC7C"}
@@ -1 +0,0 @@
1
- import"@pothos/core";import"@pothos/plugin-federation";import"@apollo/subgraph";
@@ -1 +0,0 @@
1
- {"version":3,"file":"FieldType.js","names":["obj: Record<string, unknown>"],"sources":["../../../../schema/src/FieldType.ts"],"sourcesContent":["import { z } from 'zod';\nimport {\n GraphQLScalarType,\n type GraphQLScalarTypeConfig,\n Kind,\n type ValueNode,\n} from 'graphql';\n\nexport interface FieldTypeConfig<TInternal, TExternal = TInternal>\n extends GraphQLScalarTypeConfig<TInternal, TExternal> {\n zod: z.ZodType<TInternal>;\n jsonSchema: unknown | (() => unknown);\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type AnyFieldType = FieldType<any, any>;\n\n/**\n * GraphQL scalar wrapper that carries zod and JSON Schema metadata.\n *\n * TInternal is the runtime representation; TExternal is the GraphQL output.\n */\nexport class FieldType<\n TInternal,\n TExternal = TInternal,\n> extends GraphQLScalarType<TInternal, TExternal> {\n private zodSchema: z.ZodType<TInternal>;\n private readonly jsonSchemaDef?: unknown | (() => unknown);\n\n constructor(config: FieldTypeConfig<TInternal, TExternal>) {\n super(config);\n this.zodSchema = config.zod;\n this.jsonSchemaDef = config.jsonSchema;\n }\n\n /** Return the attached zod schema for validation. */\n getZod(): z.ZodType<TInternal> {\n return this.zodSchema;\n }\n\n /** GraphQL scalar instance usable by Pothos or vanilla GraphQL. */\n getPothos(): GraphQLScalarType<TInternal, TExternal> {\n return this;\n }\n\n /** Return the JSON Schema (evaluates factory if provided). */\n getJson(): unknown {\n return typeof this.jsonSchemaDef === 'function'\n ? (this.jsonSchemaDef as () => unknown)()\n : this.jsonSchemaDef;\n }\n\n // Return the raw jsonSchema config (value or factory)\n getJsonSchemaDef(): unknown | (() => unknown) {\n return this.jsonSchemaDef;\n }\n\n // Return a deep-resolved JSON Schema (evaluates factory and nested factories)\n getJsonSchema(): unknown {\n const deepResolve = (v: unknown): unknown => {\n const value = typeof v === 'function' ? (v as () => unknown)() : v;\n if (Array.isArray(value)) return value.map((item) => deepResolve(item));\n if (value && typeof value === 'object') {\n const obj: Record<string, unknown> = {};\n for (const [k, val] of Object.entries(\n value as Record<string, unknown>\n )) {\n obj[k] = deepResolve(val);\n }\n return obj;\n }\n return value;\n };\n return deepResolve(this.getJson());\n }\n}\n\nexport type ZodFieldType<Field extends AnyFieldType> = z.infer<\n ReturnType<Field['getZod']>\n>;\n"],"mappings":"8EAsBA,IAAa,EAAb,cAGU,CAAwC,CAChD,UACA,cAEA,YAAY,EAA+C,CACzD,MAAM,EAAO,CACb,KAAK,UAAY,EAAO,IACxB,KAAK,cAAgB,EAAO,WAI9B,QAA+B,CAC7B,OAAO,KAAK,UAId,WAAqD,CACnD,OAAO,KAIT,SAAmB,CACjB,OAAO,OAAO,KAAK,eAAkB,WAChC,KAAK,eAAiC,CACvC,KAAK,cAIX,kBAA8C,CAC5C,OAAO,KAAK,cAId,eAAyB,CACvB,IAAM,EAAe,GAAwB,CAC3C,IAAM,EAAQ,OAAO,GAAM,WAAc,GAAqB,CAAG,EACjE,GAAI,MAAM,QAAQ,EAAM,CAAE,OAAO,EAAM,IAAK,GAAS,EAAY,EAAK,CAAC,CACvE,GAAI,GAAS,OAAO,GAAU,SAAU,CACtC,IAAMA,EAA+B,EAAE,CACvC,IAAK,GAAM,CAAC,EAAG,KAAQ,OAAO,QAC5B,EACD,CACC,EAAI,GAAK,EAAY,EAAI,CAE3B,OAAO,EAET,OAAO,GAET,OAAO,EAAY,KAAK,SAAS,CAAC"}
@@ -1,2 +0,0 @@
1
- import{FieldType as e}from"./FieldType.js";import{z as t}from"zod";import{Kind as n}from"graphql";const r=/^[A-Za-z]{2}(?:-[A-Za-z0-9]{2,8})*$/,i=/^(?:UTC|[A-Za-z_]+\/[A-Za-z_]+)$/,a=/^[+]?\d[\d\s().-]{3,}$/,o=/^[A-Z]{3}$/,s=/^[A-Z]{2}$/,c=-180,l={String_unsecure:()=>new e({name:`String_unsecure`,description:`Unvalidated string scalar`,zod:t.string(),parseValue:e=>t.string().parse(e),serialize:e=>String(e),parseLiteral:e=>{if(e.kind!==n.STRING)throw TypeError(`Invalid literal`);return e.value},jsonSchema:{type:`string`}}),Int_unsecure:()=>new e({name:`Int_unsecure`,description:`Unvalidated integer scalar`,zod:t.number().int(),parseValue:e=>{let n=typeof e==`number`?e:Number(e);return t.number().int().parse(n)},serialize:e=>Math.trunc(typeof e==`number`?e:Number(e)),parseLiteral:e=>{if(e.kind!==n.INT)throw TypeError(`Invalid literal`);return Number(e.value)},jsonSchema:{type:`integer`}}),Float_unsecure:()=>new e({name:`Float_unsecure`,description:`Unvalidated float scalar`,zod:t.number(),parseValue:e=>{let n=typeof e==`number`?e:Number(e);return t.number().parse(n)},serialize:e=>Number(e),parseLiteral:e=>{if(e.kind!==n.FLOAT&&e.kind!==n.INT)throw TypeError(`Invalid literal`);return Number(e.value)},jsonSchema:{type:`number`}}),Boolean:()=>new e({name:`Boolean`,description:`Unvalidated boolean scalar`,zod:t.boolean(),parseValue:e=>t.coerce.boolean().parse(e),serialize:e=>!!e,parseLiteral:e=>{if(e.kind!==n.BOOLEAN)throw TypeError(`Invalid literal`);return e.value},jsonSchema:{type:`boolean`}}),ID:()=>new e({name:`ID`,description:`Unvalidated id scalar`,zod:t.string(),parseValue:e=>t.string().parse(e),serialize:e=>String(e),parseLiteral:e=>{if(e.kind!==n.STRING)throw TypeError(`Invalid literal`);return e.value},jsonSchema:{type:`string`}}),JSON:()=>new e({name:`JSON`,zod:t.any(),parseValue:e=>e,serialize:e=>e,jsonSchema:{}}),JSONObject:()=>new e({name:`JSONObject`,zod:t.record(t.string(),t.any()),parseValue:e=>t.record(t.string(),t.any()).parse(e),serialize:e=>e??{},jsonSchema:{type:`object`}}),Date:()=>new e({name:`Date`,zod:t.date(),parseValue:e=>e instanceof Date?e:new Date(String(e)),serialize:e=>e instanceof Date?e.toISOString().split(`T`)[0]:String(e),jsonSchema:{type:`string`,format:`date`}}),DateTime:()=>new e({name:`DateTime`,zod:t.date(),parseValue:e=>e instanceof Date?e:new Date(String(e)),serialize:e=>e instanceof Date?e.toISOString():String(e),jsonSchema:{type:`string`,format:`date-time`}}),Time:()=>new e({name:`Time`,zod:t.string().regex(/^\d{2}:\d{2}(:\d{2})?$/),parseValue:e=>t.string().regex(/^\d{2}:\d{2}(:\d{2})?$/).parse(e),serialize:e=>String(e),jsonSchema:{type:`string`,pattern:`^\\d{2}:\\d{2}(:\\d{2})?$`}}),EmailAddress:()=>new e({name:`EmailAddress`,zod:t.string().email(),parseValue:e=>t.string().email().parse(e),serialize:e=>String(e),jsonSchema:{type:`string`,format:`email`}}),URL:()=>new e({name:`URL`,zod:t.string().url(),parseValue:e=>t.string().url().parse(e),serialize:e=>String(e),jsonSchema:{type:`string`,format:`uri`}}),PhoneNumber:()=>new e({name:`PhoneNumber`,zod:t.string().regex(a),parseValue:e=>t.string().regex(a).parse(e),serialize:e=>String(e),jsonSchema:{type:`string`,pattern:a.source}}),NonEmptyString:()=>new e({name:`NonEmptyString`,zod:t.string().min(1),parseValue:e=>t.string().min(1).parse(e),serialize:e=>String(e),jsonSchema:{type:`string`,minLength:1}}),Locale:()=>new e({name:`Locale`,zod:t.string().regex(r),parseValue:e=>t.string().regex(r).parse(e),serialize:e=>String(e),jsonSchema:{type:`string`,pattern:r.source}}),TimeZone:()=>new e({name:`TimeZone`,zod:t.string().regex(i),parseValue:e=>t.string().regex(i).parse(e),serialize:e=>String(e),jsonSchema:{type:`string`,pattern:i.source}}),Latitude:()=>new e({name:`Latitude`,zod:t.number().min(-90).max(90),parseValue:e=>t.coerce.number().min(-90).max(90).parse(e),serialize:e=>Number(e),jsonSchema:{type:`number`,minimum:-90,maximum:90}}),Longitude:()=>new e({name:`Longitude`,zod:t.number().min(c).max(180),parseValue:e=>t.coerce.number().min(c).max(180).parse(e),serialize:e=>Number(e),jsonSchema:{type:`number`,minimum:c,maximum:180}}),Currency:()=>new e({name:`Currency`,zod:t.string().regex(o),parseValue:e=>t.string().regex(o).parse(e),serialize:e=>String(e),jsonSchema:{type:`string`,pattern:o.source}}),CountryCode:()=>new e({name:`CountryCode`,zod:t.string().regex(s),parseValue:e=>t.string().regex(s).parse(e),serialize:e=>String(e),jsonSchema:{type:`string`,pattern:s.source}})};export{l as ScalarTypeEnum};
2
- //# sourceMappingURL=ScalarTypeEnum.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ScalarTypeEnum.js","names":[],"sources":["../../../../schema/src/ScalarTypeEnum.ts"],"sourcesContent":["import { z } from 'zod';\nimport { type GraphQLScalarTypeConfig, Kind, type ValueNode } from 'graphql';\nimport { FieldType } from './FieldType';\n\n// Helpers to build standard scalars\nconst localeRegex = /^[A-Za-z]{2}(?:-[A-Za-z0-9]{2,8})*$/;\nconst timezoneRegex = /^(?:UTC|[A-Za-z_]+\\/[A-Za-z_]+)$/;\nconst phoneRegex = /^[+]?\\d[\\d\\s().-]{3,}$/;\nconst currencyRegex = /^[A-Z]{3}$/;\nconst countryRegex = /^[A-Z]{2}$/;\nconst latMin = -90;\nconst latMax = 90;\nconst lonMin = -180;\nconst lonMax = 180;\n\n/**\n * Factory functions for common scalar FieldTypes with zod/GraphQL/JSON Schema.\n */\nexport const ScalarTypeEnum = {\n // primitives (_unsecure)\n String_unsecure: (): FieldType<string> =>\n new FieldType<string>({\n name: 'String_unsecure',\n description: 'Unvalidated string scalar',\n zod: z.string(),\n parseValue: (v) => z.string().parse(v),\n serialize: (v) => String(v),\n parseLiteral: (ast: ValueNode) => {\n if (ast.kind !== Kind.STRING) throw new TypeError('Invalid literal');\n return ast.value;\n },\n jsonSchema: { type: 'string' },\n }),\n Int_unsecure: (): FieldType<number> =>\n new FieldType<number>({\n name: 'Int_unsecure',\n description: 'Unvalidated integer scalar',\n zod: z.number().int(),\n parseValue: (v) => {\n const num = typeof v === 'number' ? v : Number(v as unknown);\n return z.number().int().parse(num);\n },\n serialize: (v) => Math.trunc(typeof v === 'number' ? v : Number(v)),\n parseLiteral: (ast: ValueNode) => {\n if (ast.kind !== Kind.INT) throw new TypeError('Invalid literal');\n return Number(ast.value);\n },\n jsonSchema: { type: 'integer' },\n }),\n Float_unsecure: (): FieldType<number> =>\n new FieldType<number>({\n name: 'Float_unsecure',\n description: 'Unvalidated float scalar',\n zod: z.number(),\n parseValue: (v) => {\n const num = typeof v === 'number' ? v : Number(v as unknown);\n return z.number().parse(num);\n },\n serialize: (v) => Number(v),\n parseLiteral: (ast: ValueNode) => {\n if (ast.kind !== Kind.FLOAT && ast.kind !== Kind.INT)\n throw new TypeError('Invalid literal');\n return Number(ast.value);\n },\n jsonSchema: { type: 'number' },\n }),\n Boolean: (): FieldType<boolean> =>\n new FieldType<boolean>({\n name: 'Boolean',\n description: 'Unvalidated boolean scalar',\n zod: z.boolean(),\n parseValue: (v) => z.coerce.boolean().parse(v),\n serialize: (v) => Boolean(v),\n parseLiteral: (ast: ValueNode) => {\n if (ast.kind !== Kind.BOOLEAN) throw new TypeError('Invalid literal');\n return ast.value;\n },\n jsonSchema: { type: 'boolean' },\n }),\n ID: (): FieldType<string> =>\n new FieldType<string>({\n name: 'ID',\n description: 'Unvalidated id scalar',\n zod: z.string(),\n parseValue: (v) => z.string().parse(v),\n serialize: (v) => String(v),\n parseLiteral: (ast: ValueNode) => {\n if (ast.kind !== Kind.STRING) throw new TypeError('Invalid literal');\n return ast.value;\n },\n jsonSchema: { type: 'string' },\n }),\n\n // Validated custom scalars\n JSON: (): FieldType<unknown> =>\n new FieldType<unknown>({\n name: 'JSON',\n zod: z.any(),\n parseValue: (v) => v,\n serialize: (v) => v,\n jsonSchema: {},\n }),\n JSONObject: (): FieldType<Record<string, unknown>> =>\n new FieldType<Record<string, unknown>>({\n name: 'JSONObject',\n zod: z.record(z.string(), z.any()),\n parseValue: (v) => z.record(z.string(), z.any()).parse(v),\n serialize: (v) => (v ?? {}) as Record<string, unknown>,\n jsonSchema: { type: 'object' },\n }),\n Date: (): FieldType<Date, string> =>\n new FieldType<Date, string>({\n name: 'Date',\n zod: z.date(),\n parseValue: (v) => (v instanceof Date ? v : new Date(String(v))),\n serialize: (v) =>\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n v instanceof Date ? v.toISOString().split('T')[0]! : String(v),\n jsonSchema: { type: 'string', format: 'date' },\n }),\n DateTime: (): FieldType<Date, string> =>\n new FieldType<Date, string>({\n name: 'DateTime',\n zod: z.date(),\n parseValue: (v) => (v instanceof Date ? v : new Date(String(v))),\n serialize: (v) => {\n return v instanceof Date ? v.toISOString() : String(v);\n },\n jsonSchema: { type: 'string', format: 'date-time' },\n }),\n Time: (): FieldType<string> =>\n new FieldType<string>({\n name: 'Time',\n zod: z.string().regex(/^\\d{2}:\\d{2}(:\\d{2})?$/),\n parseValue: (v) =>\n z\n .string()\n .regex(/^\\d{2}:\\d{2}(:\\d{2})?$/)\n .parse(v),\n serialize: (v) => String(v),\n jsonSchema: { type: 'string', pattern: '^\\\\d{2}:\\\\d{2}(:\\\\d{2})?$' },\n }),\n EmailAddress: (): FieldType<string> =>\n new FieldType<string>({\n name: 'EmailAddress',\n zod: z.string().email(),\n parseValue: (v) => z.string().email().parse(v),\n serialize: (v) => String(v),\n jsonSchema: { type: 'string', format: 'email' },\n }),\n URL: (): FieldType<string> =>\n new FieldType<string>({\n name: 'URL',\n zod: z.string().url(),\n parseValue: (v) => z.string().url().parse(v),\n serialize: (v) => String(v),\n jsonSchema: { type: 'string', format: 'uri' },\n }),\n PhoneNumber: (): FieldType<string> =>\n new FieldType<string>({\n name: 'PhoneNumber',\n zod: z.string().regex(phoneRegex),\n parseValue: (v) => z.string().regex(phoneRegex).parse(v),\n serialize: (v) => String(v),\n jsonSchema: { type: 'string', pattern: phoneRegex.source },\n }),\n NonEmptyString: (): FieldType<string> =>\n new FieldType<string>({\n name: 'NonEmptyString',\n zod: z.string().min(1),\n parseValue: (v) => z.string().min(1).parse(v),\n serialize: (v) => String(v),\n jsonSchema: { type: 'string', minLength: 1 },\n }),\n Locale: (): FieldType<string> =>\n new FieldType<string>({\n name: 'Locale',\n zod: z.string().regex(localeRegex),\n parseValue: (v) => z.string().regex(localeRegex).parse(v),\n serialize: (v) => String(v),\n jsonSchema: { type: 'string', pattern: localeRegex.source },\n }),\n TimeZone: (): FieldType<string> =>\n new FieldType<string>({\n name: 'TimeZone',\n zod: z.string().regex(timezoneRegex),\n parseValue: (v) => z.string().regex(timezoneRegex).parse(v),\n serialize: (v) => String(v),\n jsonSchema: { type: 'string', pattern: timezoneRegex.source },\n }),\n Latitude: (): FieldType<number> =>\n new FieldType<number>({\n name: 'Latitude',\n zod: z.number().min(latMin).max(latMax),\n parseValue: (v) => z.coerce.number().min(latMin).max(latMax).parse(v),\n serialize: (v) => Number(v),\n jsonSchema: { type: 'number', minimum: latMin, maximum: latMax },\n }),\n Longitude: (): FieldType<number> =>\n new FieldType<number>({\n name: 'Longitude',\n zod: z.number().min(lonMin).max(lonMax),\n parseValue: (v) => z.coerce.number().min(lonMin).max(lonMax).parse(v),\n serialize: (v) => Number(v),\n jsonSchema: { type: 'number', minimum: lonMin, maximum: lonMax },\n }),\n Currency: (): FieldType<string> =>\n new FieldType<string>({\n name: 'Currency',\n zod: z.string().regex(currencyRegex),\n parseValue: (v) => z.string().regex(currencyRegex).parse(v),\n serialize: (v) => String(v),\n jsonSchema: { type: 'string', pattern: currencyRegex.source },\n }),\n CountryCode: (): FieldType<string> =>\n new FieldType<string>({\n name: 'CountryCode',\n zod: z.string().regex(countryRegex),\n parseValue: (v) => z.string().regex(countryRegex).parse(v),\n serialize: (v) => String(v),\n jsonSchema: { type: 'string', pattern: countryRegex.source },\n }),\n // GeoJSON: (): FieldType<Record<string, unknown>, Record<string, unknown>> =>\n // new FieldType<Record<string, unknown>, Record<string, unknown>>({\n // name: 'GeoJSON',\n // zod: z.object({ type: z.string(), coordinates: z.any() }).passthrough(),\n // parseValue: (v) =>\n // z\n // .object({ type: z.string(), coordinates: z.any() })\n // .passthrough()\n // .parse(v),\n // serialize: (v) => v,\n // jsonSchema: { type: 'object' },\n // }),\n} as const;\nexport type ScalarTypeEnum = [keyof typeof ScalarTypeEnum];\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SchemaModel.js","names":["config: SchemaModelConfig<Fields>","base: z.ZodType"],"sources":["../../../../schema/src/SchemaModel.ts"],"sourcesContent":["import { type AnyFieldType } from './FieldType';\nimport { type AnyEnumType } from './EnumType';\nimport { z } from 'zod';\nimport type { Maybe } from 'graphql/jsutils/Maybe';\n\ntype FieldLike = AnyFieldType | AnyEnumType | AnySchemaModel;\n\n/** Field configuration for a SchemaModel property. */\nexport interface SchemaFieldConfig<Type extends FieldLike = FieldLike> {\n type: Type;\n isOptional: boolean;\n /** When present and true, the field is an array */\n isArray?: true;\n}\n\nexport type SchemaModelFieldsAnyConfig<Type extends FieldLike = FieldLike> =\n Record<string, SchemaFieldConfig<Type>>;\n\n/** Model definition: name and fields. */\nexport interface SchemaModelConfig<Fields extends SchemaModelFieldsAnyConfig> {\n name: string;\n description?: Maybe<string>;\n fields: Fields;\n}\n\n/**\n * Named object model built from FieldType/EnumType/SchemaModel fields.\n * Provides zod and GraphQL input helpers, and supports arrays/optional fields.\n */\nexport class SchemaModel<Fields extends SchemaModelFieldsAnyConfig> {\n constructor(public readonly config: SchemaModelConfig<Fields>) {}\n\n /**\n * Build a typed ZodObject from the model fields, preserving each field's\n * Zod schema and optionality at the type level when possible.\n */\n getZod(): TopLevelZodFromModel<Fields> {\n const shape = Object.entries(this.config.fields).reduce(\n (acc, [key, def]) => {\n const base: z.ZodType = (\n def.type as unknown as { getZod: () => z.ZodType }\n ).getZod();\n const withArray = def.isArray ? z.array(base) : base;\n (acc as Record<string, z.ZodType>)[key] = def.isOptional\n ? withArray.optional()\n : withArray;\n return acc;\n },\n {} as Record<string, z.ZodType>\n ) as unknown as ZodShapeFromFields<Fields>;\n\n return z.object(shape) as z.ZodObject<ZodShapeFromFields<Fields>>;\n }\n\n /** Input object name for GraphQL builder adapters. */\n getPothosInput() {\n return this.config.name;\n }\n}\n\nexport type AnySchemaModel = SchemaModel<SchemaModelFieldsAnyConfig>;\n\nexport type ZodSchemaModel<Field extends AnySchemaModel> = z.infer<\n ReturnType<Field['getZod']>\n>;\n\ntype InferZodFromType<T> =\n T extends SchemaModel<any>\n ? z.ZodObject<any>\n : T extends AnyFieldType\n ? ReturnType<T['getZod']>\n : T extends AnyEnumType\n ? ReturnType<T['getZod']>\n : never;\n\ntype MaybeArray<Z extends z.ZodType, A> = A extends true ? z.ZodArray<Z> : Z;\ntype MaybeOptional<Z extends z.ZodType, O> = O extends true\n ? z.ZodOptional<Z>\n : Z;\n\n/**\n * Helper type: derive the Zod shape from the field config.\n * Supports nested SchemaModel and arrays, preserving optionality and list-ness.\n */\ntype FieldIsArray<FC> = FC extends { isArray: true } ? true : false;\n\nexport type ZodShapeFromFields<F extends SchemaModelFieldsAnyConfig> = {\n [K in keyof F]: MaybeOptional<\n MaybeArray<InferZodFromType<F[K]['type']>, FieldIsArray<F[K]>>,\n F[K]['isOptional']\n >;\n};\n\n/**\n * The top-level Zod schema returned by getZod():\n * either ZodObject<...> or ZodArray<ZodObject<...>> when config.isArray.\n */\nexport type TopLevelZodFromModel<F extends SchemaModelFieldsAnyConfig> =\n z.ZodObject<ZodShapeFromFields<F>>;\n"],"mappings":"qEA6BA,IAAa,EAAb,KAAoE,CAClE,YAAY,EAAmD,CAAnC,KAAA,OAAA,EAM5B,QAAuC,CACrC,IAAM,EAAQ,OAAO,QAAQ,KAAK,OAAO,OAAO,CAAC,QAC9C,EAAK,CAAC,EAAK,KAAS,CACnB,IAAMC,EACJ,EAAI,KACJ,QAAQ,CACJ,EAAY,EAAI,QAAU,EAAE,MAAM,EAAK,CAAG,EAIhD,MAHC,GAAkC,GAAO,EAAI,WAC1C,EAAU,UAAU,CACpB,EACG,GAET,EAAE,CACH,CAED,OAAO,EAAE,OAAO,EAAM,CAIxB,gBAAiB,CACf,OAAO,KAAK,OAAO"}
@@ -1 +0,0 @@
1
- import{FieldType as e}from"./FieldType.js";import{ScalarTypeEnum as t}from"./ScalarTypeEnum.js";import"./EnumType.js";import{SchemaModel as n}from"./SchemaModel.js";
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes