@lssm/lib.contracts 1.11.0 → 1.41.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (833) hide show
  1. package/README.md +1 -1
  2. package/dist/_virtual/rolldown_runtime.js +1 -0
  3. package/dist/app-config/app-config.feature.js +1 -0
  4. package/dist/app-config/contracts.js +1 -2
  5. package/dist/app-config/docs/app-config.docblock.js +220 -0
  6. package/dist/app-config/events.js +1 -2
  7. package/dist/app-config/index.js +1 -1
  8. package/dist/app-config/lifecycle-contracts.js +1 -2
  9. package/dist/app-config/runtime.js +1 -2
  10. package/dist/app-config/spec.js +1 -2
  11. package/dist/app-config/validation.js +1 -2
  12. package/dist/capabilities/docs/capabilities.docblock.js +1 -0
  13. package/dist/capabilities/openbanking.js +1 -2
  14. package/dist/capabilities.js +1 -2
  15. package/dist/client/react/drivers/rn-reusables.js +1 -2
  16. package/dist/client/react/drivers/shadcn.js +1 -2
  17. package/dist/client/react/feature-render.js +1 -2
  18. package/dist/client/react/form-render.js +1 -2
  19. package/dist/contract-registry/index.js +1 -0
  20. package/dist/contract-registry/schemas.js +1 -0
  21. package/dist/contract-registry/types.js +0 -0
  22. package/dist/contracts-adapter-hydration.js +1 -2
  23. package/dist/contracts-adapter-input.js +1 -2
  24. package/dist/data-views/docs/data-views.docblock.js +1 -0
  25. package/dist/data-views/query-generator.js +1 -2
  26. package/dist/data-views/runtime.js +1 -2
  27. package/dist/data-views.js +1 -2
  28. package/dist/docs/PUBLISHING.docblock.js +76 -0
  29. package/dist/docs/accessibility_wcag_compliance_specs.docblock.js +350 -0
  30. package/dist/docs/index.js +1 -0
  31. package/dist/docs/meta.docs.js +13 -0
  32. package/dist/docs/presentations.js +1 -0
  33. package/dist/docs/registry.js +1 -0
  34. package/dist/docs/tech/PHASE_1_QUICKSTART.docblock.js +383 -0
  35. package/dist/docs/tech/PHASE_2_AI_NATIVE_OPERATIONS.docblock.js +68 -0
  36. package/dist/docs/tech/PHASE_3_AUTO_EVOLUTION.docblock.js +140 -0
  37. package/dist/docs/tech/PHASE_4_PERSONALIZATION_ENGINE.docblock.js +86 -0
  38. package/dist/docs/tech/PHASE_5_ZERO_TOUCH_OPERATIONS.docblock.js +1 -0
  39. package/dist/docs/tech/auth/better-auth-nextjs.docblock.js +58 -0
  40. package/dist/docs/tech/contracts/README.docblock.js +1 -0
  41. package/dist/docs/tech/contracts/create-subscription.docblock.js +1 -0
  42. package/dist/docs/tech/contracts/graphql-typed-outputs.docblock.js +180 -0
  43. package/dist/docs/tech/contracts/migrations.docblock.js +1 -0
  44. package/dist/docs/tech/contracts/openapi-export.docblock.js +38 -0
  45. package/dist/docs/tech/contracts/ops-to-presentation-linking.docblock.js +62 -0
  46. package/dist/docs/tech/contracts/overlays.docblock.js +68 -0
  47. package/dist/docs/tech/contracts/tests.docblock.js +132 -0
  48. package/dist/docs/tech/contracts/themes.docblock.js +1 -0
  49. package/dist/docs/tech/contracts/vertical-pocket-family-office.docblock.js +106 -0
  50. package/dist/docs/tech/lifecycle-stage-system.docblock.js +213 -0
  51. package/dist/docs/tech/llm/llm-integration.docblock.js +289 -0
  52. package/dist/docs/tech/mcp-endpoints.docblock.js +1 -0
  53. package/dist/docs/tech/presentation-runtime.docblock.js +1 -0
  54. package/dist/docs/tech/schema/README.docblock.js +262 -0
  55. package/dist/docs/tech/studio/learning-events.docblock.js +1 -0
  56. package/dist/docs/tech/studio/learning-journeys.docblock.js +57 -0
  57. package/dist/docs/tech/studio/platform-admin-panel.docblock.js +63 -0
  58. package/dist/docs/tech/studio/project-access-teams.docblock.js +36 -0
  59. package/dist/docs/tech/studio/project-routing.docblock.js +1 -0
  60. package/dist/docs/tech/studio/sandbox-unlogged.docblock.js +20 -0
  61. package/dist/docs/tech/studio/team-invitations.docblock.js +65 -0
  62. package/dist/docs/tech/studio/workspace-ops.docblock.js +1 -0
  63. package/dist/docs/tech/studio/workspaces.docblock.js +41 -0
  64. package/dist/docs/tech/telemetry-ingest.docblock.js +122 -0
  65. package/dist/docs/tech/templates/runtime.docblock.js +1 -0
  66. package/dist/docs/tech/vscode-extension.docblock.js +68 -0
  67. package/dist/docs/tech/workflows/overview.docblock.js +1 -0
  68. package/dist/docs/tech-contracts.docs.js +76 -0
  69. package/dist/docs/types.js +0 -0
  70. package/dist/events.js +1 -2
  71. package/dist/experiments/docs/experiments.docblock.js +128 -0
  72. package/dist/experiments/evaluator.js +1 -2
  73. package/dist/experiments/spec.js +1 -2
  74. package/dist/features.js +1 -2
  75. package/dist/forms/docs/forms.docblock.js +1 -0
  76. package/dist/forms.js +1 -2
  77. package/dist/index.js +1 -1
  78. package/dist/install.js +1 -2
  79. package/dist/integrations/contracts.js +1 -2
  80. package/dist/integrations/docs/integrations.docblock.js +1 -0
  81. package/dist/integrations/health.js +1 -2
  82. package/dist/integrations/index.js +1 -1
  83. package/dist/integrations/openbanking/contracts/accounts.js +1 -2
  84. package/dist/integrations/openbanking/contracts/balances.js +1 -2
  85. package/dist/integrations/openbanking/contracts/index.js +1 -2
  86. package/dist/integrations/openbanking/contracts/transactions.js +1 -2
  87. package/dist/integrations/openbanking/guards.js +1 -2
  88. package/dist/integrations/openbanking/models.js +1 -2
  89. package/dist/integrations/openbanking/openbanking.feature.js +1 -0
  90. package/dist/integrations/openbanking/telemetry.js +1 -2
  91. package/dist/integrations/providers/elevenlabs.js +1 -2
  92. package/dist/integrations/providers/gcs-storage.js +1 -2
  93. package/dist/integrations/providers/gmail.js +1 -2
  94. package/dist/integrations/providers/google-calendar.js +1 -2
  95. package/dist/integrations/providers/impls/elevenlabs-voice.js +1 -2
  96. package/dist/integrations/providers/impls/gcs-storage.js +1 -2
  97. package/dist/integrations/providers/impls/gmail-inbound.js +1 -2
  98. package/dist/integrations/providers/impls/gmail-outbound.js +1 -2
  99. package/dist/integrations/providers/impls/google-calendar.js +1 -2
  100. package/dist/integrations/providers/impls/index.js +1 -1
  101. package/dist/integrations/providers/impls/mistral-embedding.js +1 -2
  102. package/dist/integrations/providers/impls/mistral-llm.js +1 -2
  103. package/dist/integrations/providers/impls/postmark-email.js +1 -2
  104. package/dist/integrations/providers/impls/powens-client.js +1 -2
  105. package/dist/integrations/providers/impls/powens-openbanking.js +1 -2
  106. package/dist/integrations/providers/impls/provider-factory.js +1 -2
  107. package/dist/integrations/providers/impls/qdrant-vector.js +1 -2
  108. package/dist/integrations/providers/impls/stripe-payments.js +1 -2
  109. package/dist/integrations/providers/impls/twilio-sms.js +1 -2
  110. package/dist/integrations/providers/index.js +1 -1
  111. package/dist/integrations/providers/mistral.js +1 -2
  112. package/dist/integrations/providers/postmark.js +1 -2
  113. package/dist/integrations/providers/powens.js +1 -2
  114. package/dist/integrations/providers/qdrant.js +1 -2
  115. package/dist/integrations/providers/registry.js +1 -0
  116. package/dist/integrations/providers/stripe.js +1 -2
  117. package/dist/integrations/providers/twilio-sms.js +1 -2
  118. package/dist/integrations/runtime.js +1 -2
  119. package/dist/integrations/secrets/aws-secret-manager.js +1 -0
  120. package/dist/integrations/secrets/env-secret-provider.js +1 -2
  121. package/dist/integrations/secrets/gcp-secret-manager.js +1 -2
  122. package/dist/integrations/secrets/index.js +1 -1
  123. package/dist/integrations/secrets/manager.js +1 -2
  124. package/dist/integrations/secrets/provider.js +1 -2
  125. package/dist/integrations/secrets/scaleway-secret-manager.js +1 -0
  126. package/dist/integrations/spec.js +1 -2
  127. package/dist/jobs/define-job.js +1 -0
  128. package/dist/jobs/gcp-cloud-tasks.js +1 -2
  129. package/dist/jobs/gcp-pubsub.js +1 -2
  130. package/dist/jobs/handlers/gmail-sync-handler.js +1 -2
  131. package/dist/jobs/handlers/index.js +1 -1
  132. package/dist/jobs/handlers/ping-handler.js +1 -0
  133. package/dist/jobs/handlers/storage-document-handler.js +1 -2
  134. package/dist/jobs/index.js +1 -1
  135. package/dist/jobs/memory-queue.js +1 -2
  136. package/dist/jobs/queue.js +1 -0
  137. package/dist/jobs/scaleway-sqs-queue.js +1 -0
  138. package/dist/jsonschema.js +1 -2
  139. package/dist/knowledge/contracts.js +1 -2
  140. package/dist/knowledge/docs/knowledge.docblock.js +138 -0
  141. package/dist/knowledge/ingestion/document-processor.js +1 -2
  142. package/dist/knowledge/ingestion/embedding-service.js +1 -2
  143. package/dist/knowledge/ingestion/gmail-adapter.js +1 -2
  144. package/dist/knowledge/ingestion/storage-adapter.js +1 -2
  145. package/dist/knowledge/ingestion/vector-indexer.js +1 -2
  146. package/dist/knowledge/query/service.js +1 -2
  147. package/dist/knowledge/runtime.js +1 -2
  148. package/dist/knowledge/spaces/email-threads.js +1 -2
  149. package/dist/knowledge/spaces/financial-docs.js +1 -2
  150. package/dist/knowledge/spaces/financial-overview.js +1 -2
  151. package/dist/knowledge/spaces/product-canon.js +1 -2
  152. package/dist/knowledge/spaces/support-faq.js +1 -2
  153. package/dist/knowledge/spaces/uploaded-docs.js +1 -2
  154. package/dist/knowledge/spec.js +1 -2
  155. package/dist/llm/exporters.js +8 -0
  156. package/dist/llm/index.js +1 -0
  157. package/dist/llm/prompts.js +220 -0
  158. package/dist/llm/types.js +0 -0
  159. package/dist/markdown.js +1 -2
  160. package/dist/migrations.js +1 -2
  161. package/dist/node_modules/@pothos/plugin-complexity/esm/calculate-complexity.js +1 -0
  162. package/dist/node_modules/@pothos/plugin-complexity/esm/defaults.js +1 -0
  163. package/dist/node_modules/@pothos/plugin-complexity/esm/index.js +1 -0
  164. package/dist/node_modules/@pothos/plugin-complexity/esm/types.js +1 -0
  165. package/dist/node_modules/@pothos/plugin-complexity/esm/util.js +1 -0
  166. package/dist/node_modules/@pothos/plugin-complexity/esm/validator.js +1 -0
  167. package/dist/node_modules/@pothos/plugin-dataloader/esm/field-builder.js +1 -0
  168. package/dist/node_modules/@pothos/plugin-dataloader/esm/index.js +1 -0
  169. package/dist/node_modules/@pothos/plugin-dataloader/esm/refs/index.js +1 -0
  170. package/dist/node_modules/@pothos/plugin-dataloader/esm/refs/interface.js +1 -0
  171. package/dist/node_modules/@pothos/plugin-dataloader/esm/refs/node.js +1 -0
  172. package/dist/node_modules/@pothos/plugin-dataloader/esm/refs/object.js +1 -0
  173. package/dist/node_modules/@pothos/plugin-dataloader/esm/refs/union.js +1 -0
  174. package/dist/node_modules/@pothos/plugin-dataloader/esm/schema-builder.js +1 -0
  175. package/dist/node_modules/@pothos/plugin-dataloader/esm/util.js +1 -0
  176. package/dist/node_modules/@pothos/plugin-prisma/esm/connection-helpers.js +1 -0
  177. package/dist/node_modules/@pothos/plugin-prisma/esm/field-builder.js +1 -0
  178. package/dist/node_modules/@pothos/plugin-prisma/esm/index.js +1 -0
  179. package/dist/node_modules/@pothos/plugin-prisma/esm/interface-ref.js +1 -0
  180. package/dist/node_modules/@pothos/plugin-prisma/esm/model-loader.js +1 -0
  181. package/dist/node_modules/@pothos/plugin-prisma/esm/node-ref.js +1 -0
  182. package/dist/node_modules/@pothos/plugin-prisma/esm/object-ref.js +1 -0
  183. package/dist/node_modules/@pothos/plugin-prisma/esm/prisma-field-builder.js +1 -0
  184. package/dist/node_modules/@pothos/plugin-prisma/esm/schema-builder.js +1 -0
  185. package/dist/node_modules/@pothos/plugin-prisma/esm/types.js +0 -0
  186. package/dist/node_modules/@pothos/plugin-prisma/esm/util/cursors.js +1 -0
  187. package/dist/node_modules/@pothos/plugin-prisma/esm/util/datamodel.js +1 -0
  188. package/dist/node_modules/@pothos/plugin-prisma/esm/util/deep-equal.js +1 -0
  189. package/dist/node_modules/@pothos/plugin-prisma/esm/util/description.js +1 -0
  190. package/dist/node_modules/@pothos/plugin-prisma/esm/util/get-client.js +1 -0
  191. package/dist/node_modules/@pothos/plugin-prisma/esm/util/loader-map.js +1 -0
  192. package/dist/node_modules/@pothos/plugin-prisma/esm/util/map-query.js +1 -0
  193. package/dist/node_modules/@pothos/plugin-prisma/esm/util/relation-map.js +1 -0
  194. package/dist/node_modules/@pothos/plugin-prisma/esm/util/selections.js +1 -0
  195. package/dist/node_modules/@pothos/plugin-prisma/esm/util/usage.js +1 -0
  196. package/dist/node_modules/@pothos/plugin-tracing/esm/index.js +1 -0
  197. package/dist/node_modules/@pothos/plugin-tracing/esm/util.js +1 -0
  198. package/dist/node_modules/dataloader/index.js +7 -0
  199. package/dist/node_modules/graphql/error/GraphQLError.js +5 -0
  200. package/dist/node_modules/graphql/error/index.js +1 -0
  201. package/dist/node_modules/graphql/error/locatedError.js +1 -0
  202. package/dist/node_modules/graphql/error/syntaxError.js +1 -0
  203. package/dist/node_modules/graphql/execution/collectFields.js +1 -0
  204. package/dist/node_modules/graphql/execution/execute.js +1 -0
  205. package/dist/node_modules/graphql/execution/index.js +1 -0
  206. package/dist/node_modules/graphql/execution/mapAsyncIterator.js +1 -0
  207. package/dist/node_modules/graphql/execution/subscribe.js +1 -0
  208. package/dist/node_modules/graphql/execution/values.js +1 -0
  209. package/dist/node_modules/graphql/graphql.js +1 -0
  210. package/dist/node_modules/graphql/index.js +1 -0
  211. package/dist/node_modules/graphql/jsutils/Path.js +1 -0
  212. package/dist/node_modules/graphql/jsutils/devAssert.js +1 -0
  213. package/dist/node_modules/graphql/jsutils/didYouMean.js +1 -0
  214. package/dist/node_modules/graphql/jsutils/groupBy.js +1 -0
  215. package/dist/node_modules/graphql/jsutils/identityFunc.js +1 -0
  216. package/dist/node_modules/graphql/jsutils/inspect.js +1 -0
  217. package/dist/node_modules/graphql/jsutils/instanceOf.js +12 -0
  218. package/dist/node_modules/graphql/jsutils/invariant.js +1 -0
  219. package/dist/node_modules/graphql/jsutils/isAsyncIterable.js +1 -0
  220. package/dist/node_modules/graphql/jsutils/isIterableObject.js +1 -0
  221. package/dist/node_modules/graphql/jsutils/isObjectLike.js +1 -0
  222. package/dist/node_modules/graphql/jsutils/isPromise.js +1 -0
  223. package/dist/node_modules/graphql/jsutils/keyMap.js +1 -0
  224. package/dist/node_modules/graphql/jsutils/keyValMap.js +1 -0
  225. package/dist/node_modules/graphql/jsutils/mapValue.js +1 -0
  226. package/dist/node_modules/graphql/jsutils/memoize3.js +1 -0
  227. package/dist/node_modules/graphql/jsutils/naturalCompare.js +1 -0
  228. package/dist/node_modules/graphql/jsutils/printPathArray.js +1 -0
  229. package/dist/node_modules/graphql/jsutils/promiseForObject.js +1 -0
  230. package/dist/node_modules/graphql/jsutils/promiseReduce.js +1 -0
  231. package/dist/node_modules/graphql/jsutils/suggestionList.js +1 -0
  232. package/dist/node_modules/graphql/jsutils/toError.js +1 -0
  233. package/dist/node_modules/graphql/jsutils/toObjMap.js +1 -0
  234. package/dist/node_modules/graphql/language/ast.js +1 -0
  235. package/dist/node_modules/graphql/language/blockString.js +3 -0
  236. package/dist/node_modules/graphql/language/characterClasses.js +1 -0
  237. package/dist/node_modules/graphql/language/directiveLocation.js +1 -0
  238. package/dist/node_modules/graphql/language/index.js +1 -0
  239. package/dist/node_modules/graphql/language/kinds.js +1 -0
  240. package/dist/node_modules/graphql/language/lexer.js +3 -0
  241. package/dist/node_modules/graphql/language/location.js +1 -0
  242. package/dist/node_modules/graphql/language/parser.js +1 -0
  243. package/dist/node_modules/graphql/language/predicates.js +1 -0
  244. package/dist/node_modules/graphql/language/printLocation.js +2 -0
  245. package/dist/node_modules/graphql/language/printString.js +1 -0
  246. package/dist/node_modules/graphql/language/printer.js +34 -0
  247. package/dist/node_modules/graphql/language/schemaCoordinateLexer.js +1 -0
  248. package/dist/node_modules/graphql/language/source.js +1 -0
  249. package/dist/node_modules/graphql/language/tokenKind.js +1 -0
  250. package/dist/node_modules/graphql/language/visitor.js +1 -0
  251. package/dist/node_modules/graphql/type/assertName.js +1 -0
  252. package/dist/node_modules/graphql/type/definition.js +1 -0
  253. package/dist/node_modules/graphql/type/directives.js +1 -0
  254. package/dist/node_modules/graphql/type/index.js +1 -0
  255. package/dist/node_modules/graphql/type/introspection.js +3 -0
  256. package/dist/node_modules/graphql/type/scalars.js +1 -0
  257. package/dist/node_modules/graphql/type/schema.js +1 -0
  258. package/dist/node_modules/graphql/type/validate.js +3 -0
  259. package/dist/node_modules/graphql/utilities/TypeInfo.js +1 -0
  260. package/dist/node_modules/graphql/utilities/assertValidName.js +1 -0
  261. package/dist/node_modules/graphql/utilities/astFromValue.js +1 -0
  262. package/dist/node_modules/graphql/utilities/buildASTSchema.js +1 -0
  263. package/dist/node_modules/graphql/utilities/buildClientSchema.js +1 -0
  264. package/dist/node_modules/graphql/utilities/coerceInputValue.js +1 -0
  265. package/dist/node_modules/graphql/utilities/concatAST.js +1 -0
  266. package/dist/node_modules/graphql/utilities/extendSchema.js +1 -0
  267. package/dist/node_modules/graphql/utilities/findBreakingChanges.js +1 -0
  268. package/dist/node_modules/graphql/utilities/getIntrospectionQuery.js +107 -0
  269. package/dist/node_modules/graphql/utilities/getOperationAST.js +1 -0
  270. package/dist/node_modules/graphql/utilities/getOperationRootType.js +1 -0
  271. package/dist/node_modules/graphql/utilities/index.js +1 -0
  272. package/dist/node_modules/graphql/utilities/introspectionFromSchema.js +1 -0
  273. package/dist/node_modules/graphql/utilities/lexicographicSortSchema.js +1 -0
  274. package/dist/node_modules/graphql/utilities/printSchema.js +13 -0
  275. package/dist/node_modules/graphql/utilities/resolveSchemaCoordinate.js +1 -0
  276. package/dist/node_modules/graphql/utilities/separateOperations.js +1 -0
  277. package/dist/node_modules/graphql/utilities/sortValueNode.js +1 -0
  278. package/dist/node_modules/graphql/utilities/stripIgnoredCharacters.js +1 -0
  279. package/dist/node_modules/graphql/utilities/typeComparators.js +1 -0
  280. package/dist/node_modules/graphql/utilities/typeFromAST.js +1 -0
  281. package/dist/node_modules/graphql/utilities/valueFromAST.js +1 -0
  282. package/dist/node_modules/graphql/utilities/valueFromASTUntyped.js +1 -0
  283. package/dist/node_modules/graphql/validation/ValidationContext.js +1 -0
  284. package/dist/node_modules/graphql/validation/index.js +1 -0
  285. package/dist/node_modules/graphql/validation/rules/ExecutableDefinitionsRule.js +1 -0
  286. package/dist/node_modules/graphql/validation/rules/FieldsOnCorrectTypeRule.js +1 -0
  287. package/dist/node_modules/graphql/validation/rules/FragmentsOnCompositeTypesRule.js +1 -0
  288. package/dist/node_modules/graphql/validation/rules/KnownArgumentNamesRule.js +1 -0
  289. package/dist/node_modules/graphql/validation/rules/KnownDirectivesRule.js +1 -0
  290. package/dist/node_modules/graphql/validation/rules/KnownFragmentNamesRule.js +1 -0
  291. package/dist/node_modules/graphql/validation/rules/KnownTypeNamesRule.js +1 -0
  292. package/dist/node_modules/graphql/validation/rules/LoneAnonymousOperationRule.js +1 -0
  293. package/dist/node_modules/graphql/validation/rules/LoneSchemaDefinitionRule.js +1 -0
  294. package/dist/node_modules/graphql/validation/rules/MaxIntrospectionDepthRule.js +1 -0
  295. package/dist/node_modules/graphql/validation/rules/NoFragmentCyclesRule.js +1 -0
  296. package/dist/node_modules/graphql/validation/rules/NoUndefinedVariablesRule.js +1 -0
  297. package/dist/node_modules/graphql/validation/rules/NoUnusedFragmentsRule.js +1 -0
  298. package/dist/node_modules/graphql/validation/rules/NoUnusedVariablesRule.js +1 -0
  299. package/dist/node_modules/graphql/validation/rules/OverlappingFieldsCanBeMergedRule.js +1 -0
  300. package/dist/node_modules/graphql/validation/rules/PossibleFragmentSpreadsRule.js +1 -0
  301. package/dist/node_modules/graphql/validation/rules/PossibleTypeExtensionsRule.js +1 -0
  302. package/dist/node_modules/graphql/validation/rules/ProvidedRequiredArgumentsRule.js +1 -0
  303. package/dist/node_modules/graphql/validation/rules/ScalarLeafsRule.js +1 -0
  304. package/dist/node_modules/graphql/validation/rules/SingleFieldSubscriptionsRule.js +1 -0
  305. package/dist/node_modules/graphql/validation/rules/UniqueArgumentDefinitionNamesRule.js +1 -0
  306. package/dist/node_modules/graphql/validation/rules/UniqueArgumentNamesRule.js +1 -0
  307. package/dist/node_modules/graphql/validation/rules/UniqueDirectiveNamesRule.js +1 -0
  308. package/dist/node_modules/graphql/validation/rules/UniqueDirectivesPerLocationRule.js +1 -0
  309. package/dist/node_modules/graphql/validation/rules/UniqueEnumValueNamesRule.js +1 -0
  310. package/dist/node_modules/graphql/validation/rules/UniqueFieldDefinitionNamesRule.js +1 -0
  311. package/dist/node_modules/graphql/validation/rules/UniqueFragmentNamesRule.js +1 -0
  312. package/dist/node_modules/graphql/validation/rules/UniqueInputFieldNamesRule.js +1 -0
  313. package/dist/node_modules/graphql/validation/rules/UniqueOperationNamesRule.js +1 -0
  314. package/dist/node_modules/graphql/validation/rules/UniqueOperationTypesRule.js +1 -0
  315. package/dist/node_modules/graphql/validation/rules/UniqueTypeNamesRule.js +1 -0
  316. package/dist/node_modules/graphql/validation/rules/UniqueVariableNamesRule.js +1 -0
  317. package/dist/node_modules/graphql/validation/rules/ValuesOfCorrectTypeRule.js +1 -0
  318. package/dist/node_modules/graphql/validation/rules/VariablesAreInputTypesRule.js +1 -0
  319. package/dist/node_modules/graphql/validation/rules/VariablesInAllowedPositionRule.js +1 -0
  320. package/dist/node_modules/graphql/validation/rules/custom/NoDeprecatedCustomRule.js +1 -0
  321. package/dist/node_modules/graphql/validation/rules/custom/NoSchemaIntrospectionCustomRule.js +1 -0
  322. package/dist/node_modules/graphql/validation/specifiedRules.js +1 -0
  323. package/dist/node_modules/graphql/validation/validate.js +5 -0
  324. package/dist/node_modules/graphql/version.js +1 -0
  325. package/dist/onboarding-base.js +1 -2
  326. package/dist/openapi.js +1 -0
  327. package/dist/openbanking/docs/openbanking.docblock.js +109 -0
  328. package/dist/ownership.js +1 -2
  329. package/dist/policy/docs/policy.docblock.js +1 -0
  330. package/dist/policy/engine.js +1 -2
  331. package/dist/policy/opa-adapter.js +1 -2
  332. package/dist/policy/spec.js +1 -2
  333. package/dist/presentations/docs/presentations-conventions.docblock.js +8 -0
  334. package/dist/presentations.backcompat.js +1 -2
  335. package/dist/presentations.js +1 -2
  336. package/dist/presentations.v2.js +7 -2
  337. package/dist/prompt.js +1 -2
  338. package/dist/promptRegistry.js +1 -2
  339. package/dist/regenerator/docs/regenerator.docblock.js +184 -0
  340. package/dist/regenerator/executor.js +1 -2
  341. package/dist/regenerator/service.js +1 -2
  342. package/dist/regenerator/sinks.js +1 -2
  343. package/dist/regenerator/utils.js +1 -2
  344. package/dist/registry.js +1 -2
  345. package/dist/resources.js +1 -2
  346. package/dist/schema-to-markdown.js +10 -0
  347. package/dist/server/graphql-pothos.js +1 -2
  348. package/dist/server/index.js +1 -1
  349. package/dist/server/mcp/createMcpServer.js +1 -0
  350. package/dist/server/mcp/mcpTypes.js +0 -0
  351. package/dist/server/mcp/registerPresentations.js +1 -0
  352. package/dist/server/mcp/registerPrompts.js +3 -0
  353. package/dist/server/mcp/registerResources.js +1 -0
  354. package/dist/server/mcp/registerTools.js +1 -0
  355. package/dist/server/provider-mcp.js +1 -2
  356. package/dist/server/rest-elysia.js +1 -2
  357. package/dist/server/rest-express.js +1 -2
  358. package/dist/server/rest-generic.js +1 -2
  359. package/dist/server/rest-next-app.js +1 -2
  360. package/dist/server/rest-next-mcp.js +1 -2
  361. package/dist/server/rest-next-pages.js +1 -2
  362. package/dist/spec.js +1 -2
  363. package/dist/telemetry/anomaly.js +1 -2
  364. package/dist/telemetry/docs/telemetry.docblock.js +139 -0
  365. package/dist/telemetry/spec.js +1 -2
  366. package/dist/telemetry/tracker.js +1 -2
  367. package/dist/tests/runner.js +1 -2
  368. package/dist/tests/spec.js +1 -2
  369. package/dist/themes.js +1 -2
  370. package/dist/workflow/adapters/db-adapter.js +1 -2
  371. package/dist/workflow/adapters/file-adapter.js +1 -2
  372. package/dist/workflow/adapters/memory-store.js +1 -2
  373. package/dist/workflow/expression.js +1 -2
  374. package/dist/workflow/runner.js +1 -2
  375. package/dist/workflow/sla-monitor.js +1 -2
  376. package/dist/workflow/spec.js +1 -2
  377. package/dist/workflow/validation.js +1 -2
  378. package/package.json +353 -193
  379. package/dist/app-config/branding.d.ts +0 -56
  380. package/dist/app-config/branding.d.ts.map +0 -1
  381. package/dist/app-config/contracts.d.ts +0 -245
  382. package/dist/app-config/contracts.d.ts.map +0 -1
  383. package/dist/app-config/contracts.js.map +0 -1
  384. package/dist/app-config/events.d.ts +0 -123
  385. package/dist/app-config/events.d.ts.map +0 -1
  386. package/dist/app-config/events.js.map +0 -1
  387. package/dist/app-config/index.d.ts +0 -8
  388. package/dist/app-config/lifecycle-contracts.d.ts +0 -383
  389. package/dist/app-config/lifecycle-contracts.d.ts.map +0 -1
  390. package/dist/app-config/lifecycle-contracts.js.map +0 -1
  391. package/dist/app-config/lifecycle.d.ts +0 -28
  392. package/dist/app-config/lifecycle.d.ts.map +0 -1
  393. package/dist/app-config/runtime.d.ts +0 -115
  394. package/dist/app-config/runtime.d.ts.map +0 -1
  395. package/dist/app-config/runtime.js.map +0 -1
  396. package/dist/app-config/spec.d.ts +0 -176
  397. package/dist/app-config/spec.d.ts.map +0 -1
  398. package/dist/app-config/spec.js.map +0 -1
  399. package/dist/app-config/validation.d.ts +0 -48
  400. package/dist/app-config/validation.d.ts.map +0 -1
  401. package/dist/app-config/validation.js.map +0 -1
  402. package/dist/capabilities/openbanking.d.ts +0 -10
  403. package/dist/capabilities/openbanking.d.ts.map +0 -1
  404. package/dist/capabilities/openbanking.js.map +0 -1
  405. package/dist/capabilities.d.ts +0 -46
  406. package/dist/capabilities.d.ts.map +0 -1
  407. package/dist/capabilities.js.map +0 -1
  408. package/dist/client/index.d.ts +0 -6
  409. package/dist/client/react/drivers/rn-reusables.d.ts +0 -23
  410. package/dist/client/react/drivers/rn-reusables.d.ts.map +0 -1
  411. package/dist/client/react/drivers/rn-reusables.js.map +0 -1
  412. package/dist/client/react/drivers/shadcn.d.ts +0 -13
  413. package/dist/client/react/drivers/shadcn.d.ts.map +0 -1
  414. package/dist/client/react/drivers/shadcn.js.map +0 -1
  415. package/dist/client/react/feature-render.d.ts +0 -21
  416. package/dist/client/react/feature-render.d.ts.map +0 -1
  417. package/dist/client/react/feature-render.js.map +0 -1
  418. package/dist/client/react/form-render.d.ts +0 -92
  419. package/dist/client/react/form-render.d.ts.map +0 -1
  420. package/dist/client/react/form-render.js.map +0 -1
  421. package/dist/client/react/index.d.ts +0 -5
  422. package/dist/contracts-adapter-hydration.d.ts +0 -16
  423. package/dist/contracts-adapter-hydration.d.ts.map +0 -1
  424. package/dist/contracts-adapter-hydration.js.map +0 -1
  425. package/dist/contracts-adapter-input.d.ts +0 -11
  426. package/dist/contracts-adapter-input.d.ts.map +0 -1
  427. package/dist/contracts-adapter-input.js.map +0 -1
  428. package/dist/data-views/query-generator.d.ts +0 -40
  429. package/dist/data-views/query-generator.d.ts.map +0 -1
  430. package/dist/data-views/query-generator.js.map +0 -1
  431. package/dist/data-views/runtime.d.ts +0 -27
  432. package/dist/data-views/runtime.d.ts.map +0 -1
  433. package/dist/data-views/runtime.js.map +0 -1
  434. package/dist/data-views.d.ts +0 -132
  435. package/dist/data-views.d.ts.map +0 -1
  436. package/dist/data-views.js.map +0 -1
  437. package/dist/events.d.ts +0 -45
  438. package/dist/events.d.ts.map +0 -1
  439. package/dist/events.js.map +0 -1
  440. package/dist/experiments/evaluator.d.ts +0 -38
  441. package/dist/experiments/evaluator.d.ts.map +0 -1
  442. package/dist/experiments/evaluator.js.map +0 -1
  443. package/dist/experiments/spec-resolver.d.ts +0 -17
  444. package/dist/experiments/spec-resolver.d.ts.map +0 -1
  445. package/dist/experiments/spec.d.ts +0 -90
  446. package/dist/experiments/spec.d.ts.map +0 -1
  447. package/dist/experiments/spec.js.map +0 -1
  448. package/dist/features.d.ts +0 -88
  449. package/dist/features.d.ts.map +0 -1
  450. package/dist/features.js.map +0 -1
  451. package/dist/forms.d.ts +0 -259
  452. package/dist/forms.d.ts.map +0 -1
  453. package/dist/forms.js.map +0 -1
  454. package/dist/graphql-federation/dist/index.js +0 -2
  455. package/dist/graphql-federation/dist/index.js.map +0 -1
  456. package/dist/index.d.ts +0 -130
  457. package/dist/install.d.ts +0 -77
  458. package/dist/install.d.ts.map +0 -1
  459. package/dist/install.js.map +0 -1
  460. package/dist/integrations/binding.d.ts +0 -18
  461. package/dist/integrations/binding.d.ts.map +0 -1
  462. package/dist/integrations/connection.d.ts +0 -52
  463. package/dist/integrations/connection.d.ts.map +0 -1
  464. package/dist/integrations/contracts.d.ts +0 -436
  465. package/dist/integrations/contracts.d.ts.map +0 -1
  466. package/dist/integrations/contracts.js.map +0 -1
  467. package/dist/integrations/health.d.ts +0 -22
  468. package/dist/integrations/health.d.ts.map +0 -1
  469. package/dist/integrations/health.js.map +0 -1
  470. package/dist/integrations/index.d.ts +0 -53
  471. package/dist/integrations/openbanking/contracts/accounts.d.ts +0 -288
  472. package/dist/integrations/openbanking/contracts/accounts.d.ts.map +0 -1
  473. package/dist/integrations/openbanking/contracts/accounts.js.map +0 -1
  474. package/dist/integrations/openbanking/contracts/balances.d.ts +0 -164
  475. package/dist/integrations/openbanking/contracts/balances.d.ts.map +0 -1
  476. package/dist/integrations/openbanking/contracts/balances.js.map +0 -1
  477. package/dist/integrations/openbanking/contracts/index.d.ts +0 -10
  478. package/dist/integrations/openbanking/contracts/index.d.ts.map +0 -1
  479. package/dist/integrations/openbanking/contracts/index.js.map +0 -1
  480. package/dist/integrations/openbanking/contracts/transactions.d.ts +0 -212
  481. package/dist/integrations/openbanking/contracts/transactions.d.ts.map +0 -1
  482. package/dist/integrations/openbanking/contracts/transactions.js.map +0 -1
  483. package/dist/integrations/openbanking/guards.d.ts +0 -13
  484. package/dist/integrations/openbanking/guards.d.ts.map +0 -1
  485. package/dist/integrations/openbanking/guards.js.map +0 -1
  486. package/dist/integrations/openbanking/models.d.ts +0 -229
  487. package/dist/integrations/openbanking/models.d.ts.map +0 -1
  488. package/dist/integrations/openbanking/models.js.map +0 -1
  489. package/dist/integrations/openbanking/telemetry.d.ts +0 -16
  490. package/dist/integrations/openbanking/telemetry.d.ts.map +0 -1
  491. package/dist/integrations/openbanking/telemetry.js.map +0 -1
  492. package/dist/integrations/providers/calendar.d.ts +0 -79
  493. package/dist/integrations/providers/calendar.d.ts.map +0 -1
  494. package/dist/integrations/providers/elevenlabs.d.ts +0 -8
  495. package/dist/integrations/providers/elevenlabs.d.ts.map +0 -1
  496. package/dist/integrations/providers/elevenlabs.js.map +0 -1
  497. package/dist/integrations/providers/email.d.ts +0 -87
  498. package/dist/integrations/providers/email.d.ts.map +0 -1
  499. package/dist/integrations/providers/embedding.d.ts +0 -25
  500. package/dist/integrations/providers/embedding.d.ts.map +0 -1
  501. package/dist/integrations/providers/gcs-storage.d.ts +0 -8
  502. package/dist/integrations/providers/gcs-storage.d.ts.map +0 -1
  503. package/dist/integrations/providers/gcs-storage.js.map +0 -1
  504. package/dist/integrations/providers/gmail.d.ts +0 -8
  505. package/dist/integrations/providers/gmail.d.ts.map +0 -1
  506. package/dist/integrations/providers/gmail.js.map +0 -1
  507. package/dist/integrations/providers/google-calendar.d.ts +0 -8
  508. package/dist/integrations/providers/google-calendar.d.ts.map +0 -1
  509. package/dist/integrations/providers/google-calendar.js.map +0 -1
  510. package/dist/integrations/providers/impls/elevenlabs-voice.d.ts +0 -21
  511. package/dist/integrations/providers/impls/elevenlabs-voice.d.ts.map +0 -1
  512. package/dist/integrations/providers/impls/elevenlabs-voice.js.map +0 -1
  513. package/dist/integrations/providers/impls/gcs-storage.d.ts +0 -25
  514. package/dist/integrations/providers/impls/gcs-storage.d.ts.map +0 -1
  515. package/dist/integrations/providers/impls/gcs-storage.js.map +0 -1
  516. package/dist/integrations/providers/impls/gmail-inbound.d.ts +0 -27
  517. package/dist/integrations/providers/impls/gmail-inbound.d.ts.map +0 -1
  518. package/dist/integrations/providers/impls/gmail-inbound.js.map +0 -1
  519. package/dist/integrations/providers/impls/gmail-outbound.d.ts +0 -19
  520. package/dist/integrations/providers/impls/gmail-outbound.d.ts.map +0 -1
  521. package/dist/integrations/providers/impls/gmail-outbound.js.map +0 -1
  522. package/dist/integrations/providers/impls/google-calendar.d.ts +0 -24
  523. package/dist/integrations/providers/impls/google-calendar.d.ts.map +0 -1
  524. package/dist/integrations/providers/impls/google-calendar.js.map +0 -1
  525. package/dist/integrations/providers/impls/index.d.ts +0 -15
  526. package/dist/integrations/providers/impls/mistral-embedding.d.ts +0 -24
  527. package/dist/integrations/providers/impls/mistral-embedding.d.ts.map +0 -1
  528. package/dist/integrations/providers/impls/mistral-embedding.js.map +0 -1
  529. package/dist/integrations/providers/impls/mistral-llm.d.ts +0 -32
  530. package/dist/integrations/providers/impls/mistral-llm.d.ts.map +0 -1
  531. package/dist/integrations/providers/impls/mistral-llm.js.map +0 -1
  532. package/dist/integrations/providers/impls/postmark-email.d.ts +0 -20
  533. package/dist/integrations/providers/impls/postmark-email.d.ts.map +0 -1
  534. package/dist/integrations/providers/impls/postmark-email.js.map +0 -1
  535. package/dist/integrations/providers/impls/powens-client.d.ts +0 -125
  536. package/dist/integrations/providers/impls/powens-client.d.ts.map +0 -1
  537. package/dist/integrations/providers/impls/powens-client.js.map +0 -1
  538. package/dist/integrations/providers/impls/powens-openbanking.d.ts +0 -28
  539. package/dist/integrations/providers/impls/powens-openbanking.d.ts.map +0 -1
  540. package/dist/integrations/providers/impls/powens-openbanking.js.map +0 -1
  541. package/dist/integrations/providers/impls/provider-factory.d.ts +0 -27
  542. package/dist/integrations/providers/impls/provider-factory.d.ts.map +0 -1
  543. package/dist/integrations/providers/impls/provider-factory.js.map +0 -1
  544. package/dist/integrations/providers/impls/qdrant-vector.d.ts +0 -25
  545. package/dist/integrations/providers/impls/qdrant-vector.d.ts.map +0 -1
  546. package/dist/integrations/providers/impls/qdrant-vector.js.map +0 -1
  547. package/dist/integrations/providers/impls/stripe-payments.d.ts +0 -29
  548. package/dist/integrations/providers/impls/stripe-payments.d.ts.map +0 -1
  549. package/dist/integrations/providers/impls/stripe-payments.js.map +0 -1
  550. package/dist/integrations/providers/impls/twilio-sms.d.ts +0 -21
  551. package/dist/integrations/providers/impls/twilio-sms.d.ts.map +0 -1
  552. package/dist/integrations/providers/impls/twilio-sms.js.map +0 -1
  553. package/dist/integrations/providers/index.d.ts +0 -36
  554. package/dist/integrations/providers/llm.d.ts +0 -83
  555. package/dist/integrations/providers/llm.d.ts.map +0 -1
  556. package/dist/integrations/providers/mistral.d.ts +0 -8
  557. package/dist/integrations/providers/mistral.d.ts.map +0 -1
  558. package/dist/integrations/providers/mistral.js.map +0 -1
  559. package/dist/integrations/providers/openbanking.d.ts +0 -129
  560. package/dist/integrations/providers/openbanking.d.ts.map +0 -1
  561. package/dist/integrations/providers/payments.d.ts +0 -110
  562. package/dist/integrations/providers/payments.d.ts.map +0 -1
  563. package/dist/integrations/providers/postmark.d.ts +0 -8
  564. package/dist/integrations/providers/postmark.d.ts.map +0 -1
  565. package/dist/integrations/providers/postmark.js.map +0 -1
  566. package/dist/integrations/providers/powens.d.ts +0 -8
  567. package/dist/integrations/providers/powens.d.ts.map +0 -1
  568. package/dist/integrations/providers/powens.js.map +0 -1
  569. package/dist/integrations/providers/qdrant.d.ts +0 -8
  570. package/dist/integrations/providers/qdrant.d.ts.map +0 -1
  571. package/dist/integrations/providers/qdrant.js.map +0 -1
  572. package/dist/integrations/providers/sms.d.ts +0 -35
  573. package/dist/integrations/providers/sms.d.ts.map +0 -1
  574. package/dist/integrations/providers/storage.d.ts +0 -61
  575. package/dist/integrations/providers/storage.d.ts.map +0 -1
  576. package/dist/integrations/providers/stripe.d.ts +0 -8
  577. package/dist/integrations/providers/stripe.d.ts.map +0 -1
  578. package/dist/integrations/providers/stripe.js.map +0 -1
  579. package/dist/integrations/providers/twilio-sms.d.ts +0 -8
  580. package/dist/integrations/providers/twilio-sms.d.ts.map +0 -1
  581. package/dist/integrations/providers/twilio-sms.js.map +0 -1
  582. package/dist/integrations/providers/vector-store.d.ts +0 -44
  583. package/dist/integrations/providers/vector-store.d.ts.map +0 -1
  584. package/dist/integrations/providers/voice.d.ts +0 -35
  585. package/dist/integrations/providers/voice.d.ts.map +0 -1
  586. package/dist/integrations/runtime.d.ts +0 -100
  587. package/dist/integrations/runtime.d.ts.map +0 -1
  588. package/dist/integrations/runtime.js.map +0 -1
  589. package/dist/integrations/secrets/env-secret-provider.d.ts +0 -32
  590. package/dist/integrations/secrets/env-secret-provider.d.ts.map +0 -1
  591. package/dist/integrations/secrets/env-secret-provider.js.map +0 -1
  592. package/dist/integrations/secrets/gcp-secret-manager.d.ts +0 -33
  593. package/dist/integrations/secrets/gcp-secret-manager.d.ts.map +0 -1
  594. package/dist/integrations/secrets/gcp-secret-manager.js.map +0 -1
  595. package/dist/integrations/secrets/index.d.ts +0 -5
  596. package/dist/integrations/secrets/manager.d.ts +0 -48
  597. package/dist/integrations/secrets/manager.d.ts.map +0 -1
  598. package/dist/integrations/secrets/manager.js.map +0 -1
  599. package/dist/integrations/secrets/provider.d.ts +0 -53
  600. package/dist/integrations/secrets/provider.d.ts.map +0 -1
  601. package/dist/integrations/secrets/provider.js.map +0 -1
  602. package/dist/integrations/spec.d.ts +0 -80
  603. package/dist/integrations/spec.d.ts.map +0 -1
  604. package/dist/integrations/spec.js.map +0 -1
  605. package/dist/jobs/gcp-cloud-tasks.d.ts +0 -42
  606. package/dist/jobs/gcp-cloud-tasks.d.ts.map +0 -1
  607. package/dist/jobs/gcp-cloud-tasks.js.map +0 -1
  608. package/dist/jobs/gcp-pubsub.d.ts +0 -26
  609. package/dist/jobs/gcp-pubsub.d.ts.map +0 -1
  610. package/dist/jobs/gcp-pubsub.js.map +0 -1
  611. package/dist/jobs/handlers/gmail-sync-handler.d.ts +0 -10
  612. package/dist/jobs/handlers/gmail-sync-handler.d.ts.map +0 -1
  613. package/dist/jobs/handlers/gmail-sync-handler.js.map +0 -1
  614. package/dist/jobs/handlers/index.d.ts +0 -3
  615. package/dist/jobs/handlers/storage-document-handler.d.ts +0 -13
  616. package/dist/jobs/handlers/storage-document-handler.d.ts.map +0 -1
  617. package/dist/jobs/handlers/storage-document-handler.js.map +0 -1
  618. package/dist/jobs/index.d.ts +0 -7
  619. package/dist/jobs/memory-queue.d.ts +0 -19
  620. package/dist/jobs/memory-queue.d.ts.map +0 -1
  621. package/dist/jobs/memory-queue.js.map +0 -1
  622. package/dist/jobs/queue.d.ts +0 -27
  623. package/dist/jobs/queue.d.ts.map +0 -1
  624. package/dist/jsonschema.d.ts +0 -27
  625. package/dist/jsonschema.d.ts.map +0 -1
  626. package/dist/jsonschema.js.map +0 -1
  627. package/dist/knowledge/binding.d.ts +0 -26
  628. package/dist/knowledge/binding.d.ts.map +0 -1
  629. package/dist/knowledge/contracts.d.ts +0 -317
  630. package/dist/knowledge/contracts.d.ts.map +0 -1
  631. package/dist/knowledge/contracts.js.map +0 -1
  632. package/dist/knowledge/index.d.ts +0 -10
  633. package/dist/knowledge/ingestion/document-processor.d.ts +0 -25
  634. package/dist/knowledge/ingestion/document-processor.d.ts.map +0 -1
  635. package/dist/knowledge/ingestion/document-processor.js.map +0 -1
  636. package/dist/knowledge/ingestion/embedding-service.d.ts +0 -13
  637. package/dist/knowledge/ingestion/embedding-service.d.ts.map +0 -1
  638. package/dist/knowledge/ingestion/embedding-service.js.map +0 -1
  639. package/dist/knowledge/ingestion/gmail-adapter.d.ts +0 -19
  640. package/dist/knowledge/ingestion/gmail-adapter.d.ts.map +0 -1
  641. package/dist/knowledge/ingestion/gmail-adapter.js.map +0 -1
  642. package/dist/knowledge/ingestion/index.d.ts +0 -6
  643. package/dist/knowledge/ingestion/storage-adapter.d.ts +0 -16
  644. package/dist/knowledge/ingestion/storage-adapter.d.ts.map +0 -1
  645. package/dist/knowledge/ingestion/storage-adapter.js.map +0 -1
  646. package/dist/knowledge/ingestion/vector-indexer.d.ts +0 -19
  647. package/dist/knowledge/ingestion/vector-indexer.d.ts.map +0 -1
  648. package/dist/knowledge/ingestion/vector-indexer.js.map +0 -1
  649. package/dist/knowledge/query/index.d.ts +0 -2
  650. package/dist/knowledge/query/service.d.ts +0 -30
  651. package/dist/knowledge/query/service.d.ts.map +0 -1
  652. package/dist/knowledge/query/service.js.map +0 -1
  653. package/dist/knowledge/runtime.d.ts +0 -33
  654. package/dist/knowledge/runtime.d.ts.map +0 -1
  655. package/dist/knowledge/runtime.js.map +0 -1
  656. package/dist/knowledge/source.d.ts +0 -33
  657. package/dist/knowledge/source.d.ts.map +0 -1
  658. package/dist/knowledge/spaces/email-threads.d.ts +0 -8
  659. package/dist/knowledge/spaces/email-threads.d.ts.map +0 -1
  660. package/dist/knowledge/spaces/email-threads.js.map +0 -1
  661. package/dist/knowledge/spaces/financial-docs.d.ts +0 -8
  662. package/dist/knowledge/spaces/financial-docs.d.ts.map +0 -1
  663. package/dist/knowledge/spaces/financial-docs.js.map +0 -1
  664. package/dist/knowledge/spaces/financial-overview.d.ts +0 -8
  665. package/dist/knowledge/spaces/financial-overview.d.ts.map +0 -1
  666. package/dist/knowledge/spaces/financial-overview.js.map +0 -1
  667. package/dist/knowledge/spaces/index.d.ts +0 -7
  668. package/dist/knowledge/spaces/product-canon.d.ts +0 -8
  669. package/dist/knowledge/spaces/product-canon.d.ts.map +0 -1
  670. package/dist/knowledge/spaces/product-canon.js.map +0 -1
  671. package/dist/knowledge/spaces/support-faq.d.ts +0 -8
  672. package/dist/knowledge/spaces/support-faq.d.ts.map +0 -1
  673. package/dist/knowledge/spaces/support-faq.js.map +0 -1
  674. package/dist/knowledge/spaces/uploaded-docs.d.ts +0 -8
  675. package/dist/knowledge/spaces/uploaded-docs.d.ts.map +0 -1
  676. package/dist/knowledge/spaces/uploaded-docs.js.map +0 -1
  677. package/dist/knowledge/spec.d.ts +0 -53
  678. package/dist/knowledge/spec.d.ts.map +0 -1
  679. package/dist/knowledge/spec.js.map +0 -1
  680. package/dist/markdown.d.ts +0 -22
  681. package/dist/markdown.d.ts.map +0 -1
  682. package/dist/markdown.js.map +0 -1
  683. package/dist/migrations.d.ts +0 -53
  684. package/dist/migrations.d.ts.map +0 -1
  685. package/dist/migrations.js.map +0 -1
  686. package/dist/onboarding-base.d.ts +0 -138
  687. package/dist/onboarding-base.d.ts.map +0 -1
  688. package/dist/onboarding-base.js.map +0 -1
  689. package/dist/ownership.d.ts +0 -76
  690. package/dist/ownership.d.ts.map +0 -1
  691. package/dist/ownership.js.map +0 -1
  692. package/dist/policy/engine.d.ts +0 -40
  693. package/dist/policy/engine.d.ts.map +0 -1
  694. package/dist/policy/engine.js.map +0 -1
  695. package/dist/policy/opa-adapter.d.ts +0 -46
  696. package/dist/policy/opa-adapter.d.ts.map +0 -1
  697. package/dist/policy/opa-adapter.js.map +0 -1
  698. package/dist/policy/spec.d.ts +0 -115
  699. package/dist/policy/spec.d.ts.map +0 -1
  700. package/dist/policy/spec.js.map +0 -1
  701. package/dist/presentations.backcompat.d.ts +0 -8
  702. package/dist/presentations.backcompat.d.ts.map +0 -1
  703. package/dist/presentations.backcompat.js.map +0 -1
  704. package/dist/presentations.d.ts +0 -97
  705. package/dist/presentations.d.ts.map +0 -1
  706. package/dist/presentations.js.map +0 -1
  707. package/dist/presentations.v2.d.ts +0 -96
  708. package/dist/presentations.v2.d.ts.map +0 -1
  709. package/dist/presentations.v2.js.map +0 -1
  710. package/dist/prompt.d.ts +0 -61
  711. package/dist/prompt.d.ts.map +0 -1
  712. package/dist/prompt.js.map +0 -1
  713. package/dist/promptRegistry.d.ts +0 -16
  714. package/dist/promptRegistry.d.ts.map +0 -1
  715. package/dist/promptRegistry.js.map +0 -1
  716. package/dist/regenerator/adapters.d.ts +0 -20
  717. package/dist/regenerator/adapters.d.ts.map +0 -1
  718. package/dist/regenerator/executor.d.ts +0 -71
  719. package/dist/regenerator/executor.d.ts.map +0 -1
  720. package/dist/regenerator/executor.js.map +0 -1
  721. package/dist/regenerator/index.d.ts +0 -7
  722. package/dist/regenerator/service.d.ts +0 -34
  723. package/dist/regenerator/service.d.ts.map +0 -1
  724. package/dist/regenerator/service.js.map +0 -1
  725. package/dist/regenerator/sinks.d.ts +0 -27
  726. package/dist/regenerator/sinks.d.ts.map +0 -1
  727. package/dist/regenerator/sinks.js.map +0 -1
  728. package/dist/regenerator/types.d.ts +0 -108
  729. package/dist/regenerator/types.d.ts.map +0 -1
  730. package/dist/regenerator/utils.d.ts +0 -10
  731. package/dist/regenerator/utils.d.ts.map +0 -1
  732. package/dist/regenerator/utils.js.map +0 -1
  733. package/dist/registry.d.ts +0 -73
  734. package/dist/registry.d.ts.map +0 -1
  735. package/dist/registry.js.map +0 -1
  736. package/dist/resources.d.ts +0 -65
  737. package/dist/resources.d.ts.map +0 -1
  738. package/dist/resources.js.map +0 -1
  739. package/dist/schema/dist/EnumType.js +0 -1
  740. package/dist/schema/dist/FieldType.js +0 -2
  741. package/dist/schema/dist/FieldType.js.map +0 -1
  742. package/dist/schema/dist/ScalarTypeEnum.js +0 -2
  743. package/dist/schema/dist/ScalarTypeEnum.js.map +0 -1
  744. package/dist/schema/dist/SchemaModel.js +0 -2
  745. package/dist/schema/dist/SchemaModel.js.map +0 -1
  746. package/dist/schema/dist/index.js +0 -1
  747. package/dist/server/graphql-pothos.d.ts +0 -32
  748. package/dist/server/graphql-pothos.d.ts.map +0 -1
  749. package/dist/server/graphql-pothos.js.map +0 -1
  750. package/dist/server/graphql-schema-export.d.ts +0 -7
  751. package/dist/server/graphql-schema-export.d.ts.map +0 -1
  752. package/dist/server/graphql-schema-export.js +0 -2
  753. package/dist/server/graphql-schema-export.js.map +0 -1
  754. package/dist/server/index.d.ts +0 -9
  755. package/dist/server/provider-mcp.d.ts +0 -52
  756. package/dist/server/provider-mcp.d.ts.map +0 -1
  757. package/dist/server/provider-mcp.js.map +0 -1
  758. package/dist/server/rest-elysia.d.ts +0 -41
  759. package/dist/server/rest-elysia.d.ts.map +0 -1
  760. package/dist/server/rest-elysia.js.map +0 -1
  761. package/dist/server/rest-express.d.ts +0 -17
  762. package/dist/server/rest-express.d.ts.map +0 -1
  763. package/dist/server/rest-express.js.map +0 -1
  764. package/dist/server/rest-generic.d.ts +0 -33
  765. package/dist/server/rest-generic.d.ts.map +0 -1
  766. package/dist/server/rest-generic.js.map +0 -1
  767. package/dist/server/rest-next-app.d.ts +0 -36
  768. package/dist/server/rest-next-app.d.ts.map +0 -1
  769. package/dist/server/rest-next-app.js.map +0 -1
  770. package/dist/server/rest-next-mcp.d.ts +0 -12
  771. package/dist/server/rest-next-mcp.d.ts.map +0 -1
  772. package/dist/server/rest-next-mcp.js.map +0 -1
  773. package/dist/server/rest-next-pages.d.ts +0 -10
  774. package/dist/server/rest-next-pages.d.ts.map +0 -1
  775. package/dist/server/rest-next-pages.js.map +0 -1
  776. package/dist/spec.d.ts +0 -172
  777. package/dist/spec.d.ts.map +0 -1
  778. package/dist/spec.js.map +0 -1
  779. package/dist/telemetry/anomaly.d.ts +0 -28
  780. package/dist/telemetry/anomaly.d.ts.map +0 -1
  781. package/dist/telemetry/anomaly.js.map +0 -1
  782. package/dist/telemetry/index.d.ts +0 -4
  783. package/dist/telemetry/spec.d.ts +0 -99
  784. package/dist/telemetry/spec.d.ts.map +0 -1
  785. package/dist/telemetry/spec.js.map +0 -1
  786. package/dist/telemetry/tracker.d.ts +0 -52
  787. package/dist/telemetry/tracker.d.ts.map +0 -1
  788. package/dist/telemetry/tracker.js.map +0 -1
  789. package/dist/tests/index.d.ts +0 -3
  790. package/dist/tests/runner.d.ts +0 -44
  791. package/dist/tests/runner.d.ts.map +0 -1
  792. package/dist/tests/runner.js.map +0 -1
  793. package/dist/tests/spec.d.ts +0 -90
  794. package/dist/tests/spec.d.ts.map +0 -1
  795. package/dist/tests/spec.js.map +0 -1
  796. package/dist/themes.d.ts +0 -56
  797. package/dist/themes.d.ts.map +0 -1
  798. package/dist/themes.js.map +0 -1
  799. package/dist/translations/catalog.d.ts +0 -29
  800. package/dist/translations/catalog.d.ts.map +0 -1
  801. package/dist/translations/tenant.d.ts +0 -16
  802. package/dist/translations/tenant.d.ts.map +0 -1
  803. package/dist/types/all.d.ts +0 -60
  804. package/dist/types.d.ts +0 -89
  805. package/dist/types.d.ts.map +0 -1
  806. package/dist/workflow/adapters/db-adapter.d.ts +0 -35
  807. package/dist/workflow/adapters/db-adapter.d.ts.map +0 -1
  808. package/dist/workflow/adapters/db-adapter.js.map +0 -1
  809. package/dist/workflow/adapters/file-adapter.d.ts +0 -15
  810. package/dist/workflow/adapters/file-adapter.d.ts.map +0 -1
  811. package/dist/workflow/adapters/file-adapter.js.map +0 -1
  812. package/dist/workflow/adapters/index.d.ts +0 -4
  813. package/dist/workflow/adapters/memory-store.d.ts +0 -19
  814. package/dist/workflow/adapters/memory-store.d.ts.map +0 -1
  815. package/dist/workflow/adapters/memory-store.js.map +0 -1
  816. package/dist/workflow/expression.d.ts +0 -10
  817. package/dist/workflow/expression.d.ts.map +0 -1
  818. package/dist/workflow/expression.js.map +0 -1
  819. package/dist/workflow/index.d.ts +0 -10
  820. package/dist/workflow/runner.d.ts +0 -75
  821. package/dist/workflow/runner.d.ts.map +0 -1
  822. package/dist/workflow/runner.js.map +0 -1
  823. package/dist/workflow/sla-monitor.d.ts +0 -21
  824. package/dist/workflow/sla-monitor.d.ts.map +0 -1
  825. package/dist/workflow/sla-monitor.js.map +0 -1
  826. package/dist/workflow/spec.d.ts +0 -100
  827. package/dist/workflow/spec.d.ts.map +0 -1
  828. package/dist/workflow/spec.js.map +0 -1
  829. package/dist/workflow/state.d.ts +0 -36
  830. package/dist/workflow/state.d.ts.map +0 -1
  831. package/dist/workflow/validation.d.ts +0 -29
  832. package/dist/workflow/validation.d.ts.map +0 -1
  833. package/dist/workflow/validation.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"rest-generic.js","names":["h: Record<string, string>","opts: Required<Omit<RestOptions, 'onError'>> &\n Pick<RestOptions, 'onError'>","routes: Route[]","base: HeadersInit","headers: HeadersInit","input: any","obj: Record<string, any>","err: any","headers"],"sources":["../../src/server/rest-generic.ts"],"sourcesContent":["import { defaultRestPath } from '../jsonschema';\nimport type { SpecRegistry } from '../registry';\nimport type { HandlerCtx } from '../types';\n\nexport interface RestOptions {\n /** Prefix all routes, e.g. \"/api\" */\n basePath?: string;\n /** If true, handle OPTIONS and set CORS headers */\n cors?:\n | boolean\n | {\n origin?: string | '*';\n methods?: string[];\n headers?: string[];\n credentials?: boolean;\n maxAge?: number;\n };\n /** JSON spacing in responses (dev only ideally) */\n prettyJson?: number | false;\n /** Map thrown errors to {status, body} */\n onError?: (err: unknown) => { status: number; body: any };\n}\n\n/** Minimal WHATWG Response polyfill util for Node < 18 (if needed) */\n// export const toResponse = (status: number, data: any, headers?: HeadersInit) =>\n// new Response(JSON.stringify(data), { status, headers: { \"content-type\": \"application/json; charset=utf-8\", ...(headers || {}) } });\n\nfunction corsHeaders(opt: NonNullable<RestOptions['cors']>) {\n const h: Record<string, string> = {};\n const origin = typeof opt === 'object' ? (opt.origin ?? '*') : '*';\n h['access-control-allow-origin'] = origin as string;\n h['vary'] = 'Origin';\n if (typeof opt === 'object') {\n if (opt.methods) h['access-control-allow-methods'] = opt.methods.join(', ');\n if (opt.headers) h['access-control-allow-headers'] = opt.headers.join(', ');\n if (opt.credentials) h['access-control-allow-credentials'] = 'true';\n if (typeof opt.maxAge === 'number')\n h['access-control-max-age'] = String(opt.maxAge);\n } else {\n h['access-control-allow-methods'] = 'GET,POST,OPTIONS';\n h['access-control-allow-headers'] =\n 'content-type,x-idempotency-key,x-trace-id';\n }\n return h;\n}\n\nfunction joinPath(a: string | undefined, b: string) {\n const left = (a ?? '').replace(/\\/+$/g, '');\n const right = b.replace(/^\\/+/g, '');\n return `${left}/${right}`.replace(/\\/{2,}/g, '/');\n}\n\n/**\n * Build a single Fetch-style handler: (req) => Response\n * - Discovers routes from SpecRegistry\n * - Validates with zod via registry.execute()\n * - Handles CORS (optional)\n */\nexport function createFetchHandler(\n reg: SpecRegistry,\n ctxFactory: (req: Request) => HandlerCtx,\n options?: RestOptions\n) {\n const opts: Required<Omit<RestOptions, 'onError'>> &\n Pick<RestOptions, 'onError'> = {\n basePath: options?.basePath ?? '',\n cors: options?.cors ?? false,\n prettyJson: options?.prettyJson ?? false,\n onError: options?.onError,\n };\n\n interface Route {\n method: 'GET' | 'POST';\n path: string; // absolute path including basePath\n name: string;\n version: number;\n }\n\n const routes: Route[] = reg.listSpecs().map((spec) => ({\n method: (spec.transport?.rest?.method ??\n (spec.meta.kind === 'query' ? 'GET' : 'POST')) as 'GET' | 'POST',\n path: joinPath(\n opts.basePath,\n spec.transport?.rest?.path ??\n defaultRestPath(spec.meta.name, spec.meta.version)\n ),\n name: spec.meta.name,\n version: spec.meta.version,\n }));\n\n const routeTable = new Map<string, Route>(); // KEY: METHOD + \" \" + PATH\n for (const r of routes) routeTable.set(`${r.method} ${r.path}`, r);\n\n const allowHeader = Array.from(new Set(routes.map((r) => r.method))).join(\n ', '\n );\n\n const makeJson = (status: number, data: any, extraHeaders?: HeadersInit) => {\n const body = opts.prettyJson\n ? JSON.stringify(data, null, opts.prettyJson)\n : JSON.stringify(data);\n const base: HeadersInit = {\n 'content-type': 'application/json; charset=utf-8',\n };\n return new Response(body, {\n status,\n headers: extraHeaders ? { ...base, ...extraHeaders } : base,\n });\n };\n\n return async function handle(req: Request): Promise<Response> {\n const url = new URL(req.url);\n const key = `${req.method.toUpperCase()} ${url.pathname}`;\n\n // CORS preflight\n if (opts.cors && req.method.toUpperCase() === 'OPTIONS') {\n const h = corsHeaders(opts.cors === true ? {} : opts.cors);\n return new Response(null, {\n status: 204,\n headers: { ...h, 'content-length': '0' },\n });\n }\n\n const route = routeTable.get(key);\n if (!route) {\n const headers: HeadersInit = {};\n if (opts.cors)\n Object.assign(\n headers,\n corsHeaders(opts.cors === true ? {} : opts.cors)\n );\n return makeJson(404, { error: 'NotFound', path: url.pathname }, headers);\n }\n\n try {\n let input: any = {};\n if (route.method === 'GET') {\n // Support either flattened query (?a=1&b=x) or ?input=<json>\n if (url.searchParams.has('input')) {\n const raw = url.searchParams.get('input')!;\n input = raw ? JSON.parse(raw) : {};\n } else {\n const obj: Record<string, any> = {};\n for (const [k, v] of url.searchParams.entries()) obj[k] = v;\n input = obj;\n }\n } else {\n const contentType = req.headers.get('content-type') || '';\n if (contentType.includes('application/json')) {\n input = await req.json();\n } else if (contentType.includes('application/x-www-form-urlencoded')) {\n const form = (await req.formData()) as never as FormData;\n input = Object.fromEntries(form.entries());\n } else if (!contentType) {\n input = {};\n } else {\n return makeJson(415, { error: 'UnsupportedMediaType', contentType });\n }\n }\n\n const ctx = ctxFactory(req);\n const result = await reg.execute(route.name, route.version, input, ctx);\n\n const headers: HeadersInit = {};\n if (opts.cors)\n Object.assign(\n headers,\n corsHeaders(opts.cors === true ? {} : opts.cors)\n );\n return makeJson(200, result, headers);\n } catch (err: any) {\n if (opts.onError) {\n const mapped = opts.onError(err);\n const headers: HeadersInit = {};\n if (opts.cors)\n Object.assign(\n headers,\n corsHeaders(opts.cors === true ? {} : opts.cors)\n );\n return makeJson(mapped.status, mapped.body, headers);\n }\n const headers: HeadersInit = {};\n if (opts.cors)\n Object.assign(\n headers,\n corsHeaders(opts.cors === true ? {} : opts.cors)\n );\n // Basic zod hint\n if (err?.issues)\n return makeJson(\n 400,\n { error: 'ValidationError', issues: err.issues },\n headers\n );\n if (\n typeof err?.message === 'string' &&\n err.message.startsWith('PolicyDenied')\n ) {\n return makeJson(403, { error: 'PolicyDenied' }, headers);\n }\n return makeJson(500, { error: 'InternalError' }, headers);\n }\n };\n}\n"],"mappings":"mDA2BA,SAAS,EAAY,EAAuC,CAC1D,IAAMA,EAA4B,EAAE,CAepC,MAbA,GAAE,+BADa,OAAO,GAAQ,SAAY,EAAI,QAAU,IAAO,IAE/D,EAAE,KAAU,SACR,OAAO,GAAQ,UACb,EAAI,UAAS,EAAE,gCAAkC,EAAI,QAAQ,KAAK,KAAK,EACvE,EAAI,UAAS,EAAE,gCAAkC,EAAI,QAAQ,KAAK,KAAK,EACvE,EAAI,cAAa,EAAE,oCAAsC,QACzD,OAAO,EAAI,QAAW,WACxB,EAAE,0BAA4B,OAAO,EAAI,OAAO,IAElD,EAAE,gCAAkC,mBACpC,EAAE,gCACA,6CAEG,EAGT,SAAS,EAAS,EAAuB,EAAW,CAGlD,MAAO,IAFO,GAAK,IAAI,QAAQ,QAAS,GAAG,CAE5B,GADD,EAAE,QAAQ,QAAS,GAAG,GACV,QAAQ,UAAW,IAAI,CASnD,SAAgB,EACd,EACA,EACA,EACA,CACA,IAAMC,EAC2B,CAC/B,SAAU,GAAS,UAAY,GAC/B,KAAM,GAAS,MAAQ,GACvB,WAAY,GAAS,YAAc,GACnC,QAAS,GAAS,QACnB,CASKC,EAAkB,EAAI,WAAW,CAAC,IAAK,IAAU,CACrD,OAAS,EAAK,WAAW,MAAM,SAC5B,EAAK,KAAK,OAAS,QAAU,MAAQ,QACxC,KAAM,EACJ,EAAK,SACL,EAAK,WAAW,MAAM,MACpB,EAAgB,EAAK,KAAK,KAAM,EAAK,KAAK,QAAQ,CACrD,CACD,KAAM,EAAK,KAAK,KAChB,QAAS,EAAK,KAAK,QACpB,EAAE,CAEG,EAAa,IAAI,IACvB,IAAK,IAAM,KAAK,EAAQ,EAAW,IAAI,GAAG,EAAE,OAAO,GAAG,EAAE,OAAQ,EAAE,CAE9C,MAAM,KAAK,IAAI,IAAI,EAAO,IAAK,GAAM,EAAE,OAAO,CAAC,CAAC,CAAC,KACnE,KACD,CAED,IAAM,GAAY,EAAgB,EAAW,IAA+B,CAC1E,IAAM,EAAO,EAAK,WACd,KAAK,UAAU,EAAM,KAAM,EAAK,WAAW,CAC3C,KAAK,UAAU,EAAK,CAClBC,EAAoB,CACxB,eAAgB,kCACjB,CACD,OAAO,IAAI,SAAS,EAAM,CACxB,SACA,QAAS,EAAe,CAAE,GAAG,EAAM,GAAG,EAAc,CAAG,EACxD,CAAC,EAGJ,OAAO,eAAsB,EAAiC,CAC5D,IAAM,EAAM,IAAI,IAAI,EAAI,IAAI,CACtB,EAAM,GAAG,EAAI,OAAO,aAAa,CAAC,GAAG,EAAI,WAG/C,GAAI,EAAK,MAAQ,EAAI,OAAO,aAAa,GAAK,UAAW,CACvD,IAAM,EAAI,EAAY,EAAK,OAAS,GAAO,EAAE,CAAG,EAAK,KAAK,CAC1D,OAAO,IAAI,SAAS,KAAM,CACxB,OAAQ,IACR,QAAS,CAAE,GAAG,EAAG,iBAAkB,IAAK,CACzC,CAAC,CAGJ,IAAM,EAAQ,EAAW,IAAI,EAAI,CACjC,GAAI,CAAC,EAAO,CACV,IAAMC,EAAuB,EAAE,CAM/B,OALI,EAAK,MACP,OAAO,OACL,EACA,EAAY,EAAK,OAAS,GAAO,EAAE,CAAG,EAAK,KAAK,CACjD,CACI,EAAS,IAAK,CAAE,MAAO,WAAY,KAAM,EAAI,SAAU,CAAE,EAAQ,CAG1E,GAAI,CACF,IAAIC,EAAa,EAAE,CACnB,GAAI,EAAM,SAAW,MAEnB,GAAI,EAAI,aAAa,IAAI,QAAQ,CAAE,CACjC,IAAM,EAAM,EAAI,aAAa,IAAI,QAAQ,CACzC,EAAQ,EAAM,KAAK,MAAM,EAAI,CAAG,EAAE,KAC7B,CACL,IAAMC,EAA2B,EAAE,CACnC,IAAK,GAAM,CAAC,EAAG,KAAM,EAAI,aAAa,SAAS,CAAE,EAAI,GAAK,EAC1D,EAAQ,MAEL,CACL,IAAM,EAAc,EAAI,QAAQ,IAAI,eAAe,EAAI,GACvD,GAAI,EAAY,SAAS,mBAAmB,CAC1C,EAAQ,MAAM,EAAI,MAAM,SACf,EAAY,SAAS,oCAAoC,CAAE,CACpE,IAAM,EAAQ,MAAM,EAAI,UAAU,CAClC,EAAQ,OAAO,YAAY,EAAK,SAAS,CAAC,SACjC,CAAC,EACV,EAAQ,EAAE,MAEV,OAAO,EAAS,IAAK,CAAE,MAAO,uBAAwB,cAAa,CAAC,CAIxE,IAAM,EAAM,EAAW,EAAI,CACrB,EAAS,MAAM,EAAI,QAAQ,EAAM,KAAM,EAAM,QAAS,EAAO,EAAI,CAEjEF,EAAuB,EAAE,CAM/B,OALI,EAAK,MACP,OAAO,OACL,EACA,EAAY,EAAK,OAAS,GAAO,EAAE,CAAG,EAAK,KAAK,CACjD,CACI,EAAS,IAAK,EAAQ,EAAQ,OAC9BG,EAAU,CACjB,GAAI,EAAK,QAAS,CAChB,IAAM,EAAS,EAAK,QAAQ,EAAI,CAC1BH,EAAuB,EAAE,CAM/B,OALI,EAAK,MACP,OAAO,OACLI,EACA,EAAY,EAAK,OAAS,GAAO,EAAE,CAAG,EAAK,KAAK,CACjD,CACI,EAAS,EAAO,OAAQ,EAAO,KAAMA,EAAQ,CAEtD,IAAMJ,EAAuB,EAAE,CAmB/B,OAlBI,EAAK,MACP,OAAO,OACL,EACA,EAAY,EAAK,OAAS,GAAO,EAAE,CAAG,EAAK,KAAK,CACjD,CAEC,GAAK,OACA,EACL,IACA,CAAE,MAAO,kBAAmB,OAAQ,EAAI,OAAQ,CAChD,EACD,CAED,OAAO,GAAK,SAAY,UACxB,EAAI,QAAQ,WAAW,eAAe,CAE/B,EAAS,IAAK,CAAE,MAAO,eAAgB,CAAE,EAAQ,CAEnD,EAAS,IAAK,CAAE,MAAO,gBAAiB,CAAE,EAAQ"}
@@ -1,36 +0,0 @@
1
- import { HandlerCtx } from "../types.js";
2
- import { SpecRegistry } from "../registry.js";
3
- import { RestOptions } from "./rest-generic.js";
4
-
5
- //#region src/server/rest-next-app.d.ts
6
-
7
- /**
8
- * Creates a Next.js App Router route handler for ContractSpec operations.
9
- *
10
- * This function returns a handler suitable for `export const { GET, POST }` in a `route.ts` file.
11
- * It handles:
12
- * - Path parsing to determine the operation name and version.
13
- * - Body parsing (JSON).
14
- * - Context creation via `ctxFactory`.
15
- * - Execution via `SpecRegistry`.
16
- * - Response formatting (JSON success/error).
17
- *
18
- * @param reg - The SpecRegistry containing the operations.
19
- * @param ctxFactory - A factory function to build the `HandlerCtx` (e.g., auth, tenant) from the request.
20
- * @param options - Optional configuration for the REST handler.
21
- * @returns A function `(req: Request) => Promise<Response>`.
22
- *
23
- * @example
24
- * ```ts
25
- * // app/api/[...route]/route.ts
26
- * import { makeNextAppHandler } from '@lssm/lib.contracts/server/rest-next-app';
27
- * import { registry } from '@/lib/registry';
28
- *
29
- * const handler = makeNextAppHandler(registry, (req) => ({ actor: 'anonymous' }));
30
- * export { handler as GET, handler as POST };
31
- * ```
32
- */
33
- declare function makeNextAppHandler(reg: SpecRegistry, ctxFactory: (req: Request) => HandlerCtx, options?: RestOptions): (req: Request) => Promise<Response>;
34
- //#endregion
35
- export { makeNextAppHandler };
36
- //# sourceMappingURL=rest-next-app.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rest-next-app.d.ts","names":[],"sources":["../../src/server/rest-next-app.ts"],"sourcesContent":[],"mappings":";;;;;;;;AA8BA;;;;;;;;;;;;;;;;;;;;;;;;iBAAgB,kBAAA,MACT,gCACa,YAAY,sBACpB,oBAGgC,YAAO,QAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"rest-next-app.js","names":[],"sources":["../../src/server/rest-next-app.ts"],"sourcesContent":["import { createFetchHandler, type RestOptions } from './rest-generic';\nimport type { SpecRegistry } from '../registry';\nimport type { HandlerCtx } from '../types';\n\n/**\n * Creates a Next.js App Router route handler for ContractSpec operations.\n *\n * This function returns a handler suitable for `export const { GET, POST }` in a `route.ts` file.\n * It handles:\n * - Path parsing to determine the operation name and version.\n * - Body parsing (JSON).\n * - Context creation via `ctxFactory`.\n * - Execution via `SpecRegistry`.\n * - Response formatting (JSON success/error).\n *\n * @param reg - The SpecRegistry containing the operations.\n * @param ctxFactory - A factory function to build the `HandlerCtx` (e.g., auth, tenant) from the request.\n * @param options - Optional configuration for the REST handler.\n * @returns A function `(req: Request) => Promise<Response>`.\n *\n * @example\n * ```ts\n * // app/api/[...route]/route.ts\n * import { makeNextAppHandler } from '@lssm/lib.contracts/server/rest-next-app';\n * import { registry } from '@/lib/registry';\n *\n * const handler = makeNextAppHandler(registry, (req) => ({ actor: 'anonymous' }));\n * export { handler as GET, handler as POST };\n * ```\n */\nexport function makeNextAppHandler(\n reg: SpecRegistry,\n ctxFactory: (req: Request) => HandlerCtx,\n options?: RestOptions\n) {\n const handler = createFetchHandler(reg, ctxFactory, options);\n return async function requestHandler(req: Request) {\n return handler(req);\n };\n}\n"],"mappings":"uDA8BA,SAAgB,EACd,EACA,EACA,EACA,CACA,IAAM,EAAU,EAAmB,EAAK,EAAY,EAAQ,CAC5D,OAAO,eAA8B,EAAc,CACjD,OAAO,EAAQ,EAAI"}
@@ -1,12 +0,0 @@
1
- import { HandlerCtx } from "../types.js";
2
- import { SpecRegistry } from "../registry.js";
3
-
4
- //#region src/server/rest-next-mcp.d.ts
5
- declare function makeNextMcpServerFromRegistry(reg: SpecRegistry, ctxFactory: () => HandlerCtx): {
6
- GET: (request: Request) => Promise<Response>;
7
- POST: (request: Request) => Promise<Response>;
8
- DELETE: (request: Request) => Promise<Response>;
9
- };
10
- //#endregion
11
- export { makeNextMcpServerFromRegistry };
12
- //# sourceMappingURL=rest-next-mcp.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rest-next-mcp.d.ts","names":[],"sources":["../../src/server/rest-next-mcp.ts"],"sourcesContent":[],"mappings":";;;;iBAYgB,6BAAA,MACT,gCACa;;EAFJ,IAAA,EAAA,CAAA,OAAA,SAAA,EAAA,UAA6B,SAAA,CAAA;EACtC,MAAA,EAAA,CAAA,OAAA,SAAA,EAAA,UAAA,SAAA,CAAA;CACa"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"rest-next-mcp.js","names":[],"sources":["../../src/server/rest-next-mcp.ts"],"sourcesContent":["import type { SpecRegistry } from '../registry';\nimport type { AnySchemaModel } from '@lssm/lib.schema';\nimport type { ContractSpec } from '../spec';\nimport type { HandlerCtx } from '../types';\nimport { createMcpHandler } from 'mcp-handler';\nimport type {\n ReadResourceTemplateCallback,\n ToolCallback,\n} from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { defaultMcpTool, jsonSchemaForSpec } from '../jsonschema';\n\nexport function makeNextMcpServerFromRegistry(\n reg: SpecRegistry,\n ctxFactory: () => HandlerCtx\n) {\n const handler = createMcpHandler(\n (server) => {\n for (const spec of reg.listSpecs()) {\n const { input, output, meta } = jsonSchemaForSpec(\n spec as unknown as ContractSpec<AnySchemaModel, AnySchemaModel>\n );\n\n if (meta.kind === 'query') {\n const resourceName =\n spec.transport?.mcp?.toolName ??\n defaultMcpTool(spec.meta.name, spec.meta.version);\n\n (server as any).registerResource(\n resourceName,\n new ResourceTemplate('users://{userId}/profile', {\n list: undefined,\n }),\n {\n // name: resourceName,\n description: spec.meta.description,\n inputSchema: input,\n },\n (async (uri: URL, args, _req) => {\n const result = await reg.execute(\n spec.meta.name,\n spec.meta.version,\n args ?? {},\n ctxFactory()\n );\n // return { content: [{ type: 'json', json: result }] };\n return { contents: [{ uri: uri.href, text: String(result) }] };\n }) as ReadResourceTemplateCallback\n );\n } else if (meta.kind === 'command') {\n const toolName =\n spec.transport?.mcp?.toolName ??\n defaultMcpTool(spec.meta.name, spec.meta.version);\n\n server.registerTool(\n toolName,\n {\n // name: toolName,\n description: spec.meta.description,\n inputSchema: input as any,\n },\n (async (args: any, _req: any) => {\n const result = await reg.execute(\n spec.meta.name,\n spec.meta.version,\n args ?? {},\n ctxFactory()\n );\n // return { content: [{ type: 'json', json: result }] };\n return { content: [{ type: 'text', text: String(result) }] };\n }) as ToolCallback\n );\n } else {\n throw new Error(`Unsupported kind: ${meta.kind}`);\n }\n }\n },\n {},\n { basePath: '/api' }\n );\n\n return { GET: handler, POST: handler, DELETE: handler };\n}\n"],"mappings":"mMAYA,SAAgB,EACd,EACA,EACA,CACA,IAAM,EAAU,EACb,GAAW,CACV,IAAK,IAAM,KAAQ,EAAI,WAAW,CAAE,CAClC,GAAM,CAAE,QAAO,SAAQ,QAAS,EAC9B,EACD,CAED,GAAI,EAAK,OAAS,QAAS,CACzB,IAAM,EACJ,EAAK,WAAW,KAAK,UACrB,EAAe,EAAK,KAAK,KAAM,EAAK,KAAK,QAAQ,CAElD,EAAe,iBACd,EACA,IAAI,EAAiB,2BAA4B,CAC/C,KAAM,IAAA,GACP,CAAC,CACF,CAEE,YAAa,EAAK,KAAK,YACvB,YAAa,EACd,EACA,MAAO,EAAU,EAAM,IAAS,CAC/B,IAAM,EAAS,MAAM,EAAI,QACvB,EAAK,KAAK,KACV,EAAK,KAAK,QACV,GAAQ,EAAE,CACV,GAAY,CACb,CAED,MAAO,CAAE,SAAU,CAAC,CAAE,IAAK,EAAI,KAAM,KAAM,OAAO,EAAO,CAAE,CAAC,CAAE,GAEjE,SACQ,EAAK,OAAS,UAAW,CAClC,IAAM,EACJ,EAAK,WAAW,KAAK,UACrB,EAAe,EAAK,KAAK,KAAM,EAAK,KAAK,QAAQ,CAEnD,EAAO,aACL,EACA,CAEE,YAAa,EAAK,KAAK,YACvB,YAAa,EACd,EACA,MAAO,EAAW,IAAc,CAC/B,IAAM,EAAS,MAAM,EAAI,QACvB,EAAK,KAAK,KACV,EAAK,KAAK,QACV,GAAQ,EAAE,CACV,GAAY,CACb,CAED,MAAO,CAAE,QAAS,CAAC,CAAE,KAAM,OAAQ,KAAM,OAAO,EAAO,CAAE,CAAC,CAAE,GAE/D,MAED,MAAU,MAAM,qBAAqB,EAAK,OAAO,GAIvD,EAAE,CACF,CAAE,SAAU,OAAQ,CACrB,CAED,MAAO,CAAE,IAAK,EAAS,KAAM,EAAS,OAAQ,EAAS"}
@@ -1,10 +0,0 @@
1
- import { HandlerCtx } from "../types.js";
2
- import { SpecRegistry } from "../registry.js";
3
- import { RestOptions } from "./rest-generic.js";
4
- import { NextApiRequest, NextApiResponse } from "next";
5
-
6
- //#region src/server/rest-next-pages.d.ts
7
- declare function makeNextPagesHandler(reg: SpecRegistry, ctxFactory: (req: NextApiRequest) => HandlerCtx, options?: RestOptions): (req: NextApiRequest, res: NextApiResponse) => Promise<void>;
8
- //#endregion
9
- export { makeNextPagesHandler };
10
- //# sourceMappingURL=rest-next-pages.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rest-next-pages.d.ts","names":[],"sources":["../../src/server/rest-next-pages.ts"],"sourcesContent":[],"mappings":";;;;;;iBAKgB,oBAAA,MACT,gCACa,mBAAmB,sBAC3B,oBAUyB,qBAAqB,oBAAe"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"rest-next-pages.js","names":[],"sources":["../../src/server/rest-next-pages.ts"],"sourcesContent":["import type { NextApiRequest, NextApiResponse } from 'next';\nimport { createFetchHandler, type RestOptions } from './rest-generic';\nimport type { SpecRegistry } from '../registry';\nimport type { HandlerCtx } from '../types';\n\nexport function makeNextPagesHandler(\n reg: SpecRegistry,\n ctxFactory: (req: NextApiRequest) => HandlerCtx,\n options?: RestOptions\n) {\n const fetchHandler = createFetchHandler(\n reg,\n (_req: Request) => {\n throw new Error('Use per-request wrapper'); // we wrap below\n },\n options\n );\n\n return async function handler(req: NextApiRequest, res: NextApiResponse) {\n const url = `${req.headers['x-forwarded-proto'] ?? 'http'}://${req.headers.host}${req.url}`;\n const method = req.method?.toUpperCase() || 'GET';\n\n const request = new Request(url, {\n method,\n headers: Object.fromEntries(\n Object.entries(req.headers).map(([k, v]) => [k, String(v)])\n ),\n body: method === 'POST' ? JSON.stringify(req.body ?? {}) : undefined,\n });\n\n const perReqHandler = createFetchHandler(\n reg,\n () => ctxFactory(req),\n options\n );\n const response = await perReqHandler(request);\n\n res.status(response.status);\n response.headers.forEach((v, k) => res.setHeader(k, v));\n const text = await response.text();\n res.send(text);\n };\n}\n"],"mappings":"uDAKA,SAAgB,EACd,EACA,EACA,EACA,CASA,OARqB,EACnB,EACC,GAAkB,CACjB,MAAU,MAAM,0BAA0B,EAE5C,EACD,CAEM,eAAuB,EAAqB,EAAsB,CACvE,IAAM,EAAM,GAAG,EAAI,QAAQ,sBAAwB,OAAO,KAAK,EAAI,QAAQ,OAAO,EAAI,MAChF,EAAS,EAAI,QAAQ,aAAa,EAAI,MAEtC,EAAU,IAAI,QAAQ,EAAK,CAC/B,SACA,QAAS,OAAO,YACd,OAAO,QAAQ,EAAI,QAAQ,CAAC,KAAK,CAAC,EAAG,KAAO,CAAC,EAAG,OAAO,EAAE,CAAC,CAAC,CAC5D,CACD,KAAM,IAAW,OAAS,KAAK,UAAU,EAAI,MAAQ,EAAE,CAAC,CAAG,IAAA,GAC5D,CAAC,CAOI,EAAW,MALK,EACpB,MACM,EAAW,EAAI,CACrB,EACD,CACoC,EAAQ,CAE7C,EAAI,OAAO,EAAS,OAAO,CAC3B,EAAS,QAAQ,SAAS,EAAG,IAAM,EAAI,UAAU,EAAG,EAAE,CAAC,CACvD,IAAM,EAAO,MAAM,EAAS,MAAM,CAClC,EAAI,KAAK,EAAK"}
package/dist/spec.d.ts DELETED
@@ -1,172 +0,0 @@
1
- import { Owner, Stability, Tag } from "./ownership.js";
2
- import { EventSpec } from "./events.js";
3
- import { ResourceRefDescriptor } from "./resources.js";
4
- import { PolicyRef } from "./policy/spec.js";
5
- import { TestSpecRef } from "./tests/spec.js";
6
- import { AnySchemaModel } from "@lssm/lib.schema";
7
-
8
- //#region src/spec.d.ts
9
-
10
- /**
11
- * Distinguishes between state-changing operations (command) and read-only operations (query).
12
- */
13
- type OpKind = 'command' | 'query';
14
- interface EmitDeclRef {
15
- ref: EventSpec<AnySchemaModel>;
16
- when: string;
17
- }
18
- interface EmitDeclInline {
19
- name: string;
20
- version: number;
21
- when: string;
22
- payload: AnySchemaModel;
23
- }
24
- /**
25
- * Declaration of an event that an operation may emit.
26
- * Can be a reference to an `EventSpec` or an inline definition.
27
- */
28
- type EmitDecl = EmitDeclRef | EmitDeclInline;
29
- declare const isEmitDeclRef: (e: EmitDecl) => e is EmitDeclRef;
30
- interface TelemetryTrigger {
31
- event: {
32
- name: string;
33
- version?: number;
34
- };
35
- properties?: (args: {
36
- input: unknown;
37
- output?: unknown;
38
- error?: unknown;
39
- }) => Record<string, unknown>;
40
- }
41
- /**
42
- * The core specification interface for any operation (Command or Query).
43
- *
44
- * @template Input - The Zod-backed schema model for the input payload.
45
- * @template Output - The Zod-backed schema model for the output payload, or a resource reference.
46
- * @template Events - Tuple of events that this operation may emit.
47
- */
48
- interface ContractSpec<Input extends AnySchemaModel, Output extends AnySchemaModel | ResourceRefDescriptor<boolean>, Events extends readonly EmitDecl[] | undefined = readonly EmitDecl[] | undefined> {
49
- meta: {
50
- /** Fully-qualified op name (e.g., "sigil.beginSignup") */
51
- name: string;
52
- /** Breaking changes => bump version */
53
- version: number;
54
- /** "command" changes state; "query" is read-only/idempotent */
55
- kind: OpKind;
56
- /** Lifecycle marker for comms & tooling */
57
- stability: Stability;
58
- /** Owners for CODEOWNERS / on-call / approvals */
59
- owners: Owner[];
60
- /** Search tags, grouping, docs navigation */
61
- tags: Tag[];
62
- /** Short human-friendly summary */
63
- description: string;
64
- /** Business goal: why this exists */
65
- goal: string;
66
- /** Background, constraints, scope edges (feeds docs & LLM context) */
67
- context: string;
68
- };
69
- io: {
70
- /** Zod schema for input payload */
71
- input: Input | null;
72
- /** Zod schema for output payload */
73
- output: Output;
74
- /** Named, typed errors this op may throw (optional) */
75
- errors?: Record<string, {
76
- description: string;
77
- http?: number;
78
- gqlCode?: string;
79
- when: string;
80
- }>;
81
- };
82
- policy: {
83
- /** Minimal auth category allowed to call this op */
84
- auth: 'anonymous' | 'user' | 'admin';
85
- /** Idempotency hint. Queries default true; commands default false. */
86
- idempotent?: boolean;
87
- /** Soft rate limit suggestion; adapter enforces via limiter */
88
- rateLimit?: {
89
- rpm: number;
90
- key: 'user' | 'org' | 'global';
91
- };
92
- /** Feature flags that must be ON for this op to run */
93
- flags?: string[];
94
- /** Whether a human must approve before action (e.g., risky commands) */
95
- escalate?: 'human_review' | null;
96
- /** JSONPath-like pointers to redact from logs/prompts */
97
- pii?: string[];
98
- /** Referenced policy specs governing access */
99
- policies?: PolicyRef[];
100
- /** Field-level overrides referencing policy specs */
101
- fieldPolicies?: {
102
- field: string;
103
- actions: ('read' | 'write')[];
104
- policy?: PolicyRef;
105
- }[];
106
- };
107
- sideEffects?: {
108
- /** Declared events this op may emit; runtime will guard against others */
109
- emits?: Events;
110
- /** Analytics intents (names); the service decides the sink */
111
- analytics?: string[];
112
- /** Audit intents (labels); the service decides storage */
113
- audit?: string[];
114
- };
115
- telemetry?: {
116
- success?: TelemetryTrigger;
117
- failure?: TelemetryTrigger;
118
- };
119
- tests?: TestSpecRef[];
120
- transport?: {
121
- rest?: {
122
- /** Override HTTP method (default: POST for commands, GET for queries) */
123
- method?: 'GET' | 'POST';
124
- /** Override path (default derived from meta.name/version) */
125
- path?: string;
126
- };
127
- gql?: {
128
- /** Override field name (default: dots→underscores + _vN) */
129
- field?: string;
130
- returns?: string;
131
- };
132
- mcp?: {
133
- /** Override tool identifier (default: "<name>.v<version>") */
134
- toolName?: string;
135
- };
136
- };
137
- acceptance?: {
138
- /** Gherkin-lite scenarios for docs & auto tests */
139
- scenarios?: {
140
- name: string;
141
- given: string[];
142
- when: string[];
143
- then: string[];
144
- }[];
145
- /** Request/response examples (used for docs & snapshot tests) */
146
- examples?: {
147
- name: string;
148
- input: unknown;
149
- output: unknown;
150
- }[];
151
- };
152
- }
153
- type AnyContractSpec = ContractSpec<AnySchemaModel, AnySchemaModel | ResourceRefDescriptor<boolean>>;
154
- /**
155
- * Helper to define a Command (write operation).
156
- * Sets `kind: 'command'` and defaults `idempotent: false`.
157
- */
158
- declare const defineCommand: <I extends AnySchemaModel, O extends AnySchemaModel | ResourceRefDescriptor<boolean>, E extends readonly EmitDecl[] | undefined = undefined>(spec: Omit<ContractSpec<I, O, E>, "meta" | "policy"> & {
159
- meta: Omit<ContractSpec<I, O, E>["meta"], "kind">;
160
- policy: Omit<ContractSpec<I, O, E>["policy"], "idempotent">;
161
- }) => ContractSpec<I, O, E>;
162
- /**
163
- * Helper to define a Query (read-only operation).
164
- * Sets `kind: 'query'` and forces `idempotent: true`.
165
- */
166
- declare const defineQuery: <I extends AnySchemaModel, O extends AnySchemaModel | ResourceRefDescriptor<boolean>, E extends readonly EmitDecl[] | undefined = undefined>(spec: Omit<ContractSpec<I, O, E>, "meta" | "policy"> & {
167
- meta: Omit<ContractSpec<I, O, E>["meta"], "kind">;
168
- policy: Omit<ContractSpec<I, O, E>["policy"], "idempotent">;
169
- }) => ContractSpec<I, O, E>;
170
- //#endregion
171
- export { AnyContractSpec, ContractSpec, EmitDecl, EmitDeclInline, EmitDeclRef, OpKind, TelemetryTrigger, defineCommand, defineQuery, isEmitDeclRef };
172
- //# sourceMappingURL=spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"spec.d.ts","names":[],"sources":["../src/spec.ts"],"sourcesContent":[],"mappings":";;;;;;;;;AAsBA;AAUA;AACA;AAEiB,KArBL,MAAA,GAqBK,SAAgB,GAAA,OAMzB;AAUS,UAlCA,WAAA,CAkCY;EACb,GAAA,EAlCT,SAkCS,CAlCC,cAkCD,CAAA;EACC,IAAA,EAAA,MAAA;;AACS,UAhCT,cAAA,CAgCS;EACX,IAAA,EAAA,MAAA;EASL,OAAA,EAAA,MAAA;EAEK,IAAA,EAAA,MAAA;EAEH,OAAA,EA1CD,cA0CC;;;;;;AA+CG,KAnFH,QAAA,GAAW,WAmFR,GAnFsB,cAmFtB;AAMH,cAxFC,aAwFD,EAAA,CAAA,CAAA,EAxFqB,QAwFrB,EAAA,GAAA,CAAA,IAxFqC,WAwFrC;AAQE,UA9FG,gBAAA,CA8FH;EACA,KAAA,EAAA;IAGJ,IAAA,EAAA,MAAA;IAAW,OAAA,CAAA,EAAA,MAAA;EAmCT,CAAA;EACV,UAAA,CAAA,EAAA,CAAA,IAAA,EAAA;IACA,KAAA,EAAA,OAAA;IAAiB,MAAA,CAAA,EAAA,OAAA;IAFW,KAAA,CAAA,EAAA,OAAA;EAAY,CAAA,EAAA,GA/HlC,MA+HkC,CAAA,MAAA,EAAA,OAAA,CAAA;AAS1C;;;;;;;;AAKa,UAnII,YAmIJ,CAAA,cAlIG,cAkIH,EAAA,eAjII,cAiIJ,GAjIqB,qBAiIrB,CAAA,OAAA,CAAA,EAAA,eAAA,SAhIa,QAgIb,EAAA,GAAA,SAAA,GAAA,SA/HE,QA+HF,EAAA,GAAA,SAAA,CAAA,CAAA;EAAL,IAAA,EAAA;IACoB;IAAG,IAAA,EAAA,MAAA;IAAG;IAAnB,OAAA,EAAA,MAAA;IAAL;IACoB,IAAA,EAxHpB,MAwHoB;IAAG;IAAG,SAAA,EAtHrB,SAsHqB;IAAnB;IAAL,MAAA,EApHA,KAoHA,EAAA;IAEI;IAAG,IAAA,EApHT,GAoHS,EAAA;IAAG;IAAnB,WAAA,EAAA,MAAA;IAAY;IAeF,IAAA,EAAA,MAaX;IAZU;IACA,OAAA,EAAA,MAAA;EAAiB,CAAA;EACR,EAAA,EAAA;IAEK;IAAG,KAAA,EA7HlB,KA6HkB,GAAA,IAAA;IAAG;IAAnB,MAAA,EA3HD,MA2HC;IAAL;IACoB,MAAA,CAAA,EA1Hf,MA0He,CAAA,MAAA,EAAA;MAAG,WAAA,EAAA,MAAA;MAAG,IAAA,CAAA,EAAA,MAAA;MAAnB,OAAA,CAAA,EAAA,MAAA;MAAL,IAAA,EAAA,MAAA;IACoB,CAAA,CAAA;EAAG,CAAA;EAAG,MAAA,EAAA;IAAnB;IAAL,IAAA,EAAA,WAAA,GAAA,MAAA,GAAA,OAAA;IAEI;IAAG,UAAA,CAAA,EAAA,OAAA;IAAG;IAAnB,SAAA,CAAA,EAAA;MAAY,GAAA,EAAA,MAAA;;;;;;;;;;eApGA;;;;;eAKA;;;;;YAMH;;;;;;;cAQE;cACA;;UAGJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAmCE,eAAA,GAAkB,aAC5B,gBACA,iBAAiB;;;;;cAON,0BACD,0BACA,iBAAiB,mDACR,0CAEb,KAAK,aAAa,GAAG,GAAG;QACtB,KAAK,aAAa,GAAG,GAAG;UACtB,KAAK,aAAa,GAAG,GAAG;MAEjC,aAAa,GAAG,GAAG;;;;;cAeT,wBACD,0BACA,iBAAiB,mDACR,0CAEb,KAAK,aAAa,GAAG,GAAG;QACtB,KAAK,aAAa,GAAG,GAAG;UACtB,KAAK,aAAa,GAAG,GAAG;MAEjC,aAAa,GAAG,GAAG"}
package/dist/spec.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"spec.js","names":[],"sources":["../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\n/**\n * Distinguishes between state-changing operations (command) and read-only operations (query).\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}\n/**\n * Declaration of an event that an operation may emit.\n * Can be a reference to an `EventSpec` or an inline definition.\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\n/**\n * The core specification interface for any operation (Command or Query).\n *\n * @template Input - The Zod-backed schema model for the input payload.\n * @template Output - The Zod-backed schema model for the output payload, or a resource reference.\n * @template Events - Tuple of events that this operation may emit.\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\n/**\n * Helper to define a Command (write operation).\n * Sets `kind: 'command'` and defaults `idempotent: false`.\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\n/**\n * Helper to define a Query (read-only operation).\n * Sets `kind: 'query'` and forces `idempotent: true`.\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":"AAiCA,MAAa,EAAiB,GAAkC,QAAS,EAgJ5D,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,EAMY,EAKX,IAI2B,CAC3B,GAAG,EACH,KAAM,CAAE,GAAG,EAAK,KAAM,KAAM,QAAkB,CAC9C,OAAQ,CAAE,GAAG,EAAK,OAAQ,WAAY,GAAM,CAC7C"}
@@ -1,28 +0,0 @@
1
- import { TelemetryAnomalyDetectionConfig } from "./spec.js";
2
- import { TelemetryDispatch } from "./tracker.js";
3
-
4
- //#region src/telemetry/anomaly.d.ts
5
- interface TelemetryAnomalyEvent {
6
- dispatch: TelemetryDispatch;
7
- threshold: TelemetryAnomalyDetectionConfig;
8
- metric: string;
9
- value: number | undefined;
10
- type: 'min' | 'max';
11
- }
12
- interface TelemetryAnomalyMonitorOptions {
13
- onAnomaly?: (event: TelemetryAnomalyEvent) => void;
14
- now?: () => Date;
15
- }
16
- declare class TelemetryAnomalyMonitor {
17
- private readonly onAnomaly?;
18
- private readonly now;
19
- private readonly samples;
20
- constructor(options?: TelemetryAnomalyMonitorOptions);
21
- observe(dispatch: TelemetryDispatch): void;
22
- private extractMetric;
23
- private emit;
24
- reset(): void;
25
- }
26
- //#endregion
27
- export { TelemetryAnomalyEvent, TelemetryAnomalyMonitor, TelemetryAnomalyMonitorOptions };
28
- //# sourceMappingURL=anomaly.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"anomaly.d.ts","names":[],"sources":["../../src/telemetry/anomaly.ts"],"sourcesContent":[],"mappings":";;;;UAGiB,qBAAA;YACL;EADK,SAAA,EAEJ,+BADD;EAOK,MAAA,EAAA,MAAA;EAKJ,KAAA,EAAA,MAAA,GAAA,SAAA;;;UALI,8BAAA;sBACK;cACR;;cAGD,uBAAA;;;;wBAKU;oBAKH"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"anomaly.js","names":[],"sources":["../../src/telemetry/anomaly.ts"],"sourcesContent":["import type { TelemetryDispatch } from './tracker';\nimport type { TelemetryAnomalyDetectionConfig } from './spec';\n\nexport interface TelemetryAnomalyEvent {\n dispatch: TelemetryDispatch;\n threshold: TelemetryAnomalyDetectionConfig;\n metric: string;\n value: number | undefined;\n type: 'min' | 'max';\n}\n\nexport interface TelemetryAnomalyMonitorOptions {\n onAnomaly?: (event: TelemetryAnomalyEvent) => void;\n now?: () => Date;\n}\n\nexport class TelemetryAnomalyMonitor {\n private readonly onAnomaly?: (event: TelemetryAnomalyEvent) => void;\n private readonly now: () => Date;\n private readonly samples = new Map<string, number>();\n\n constructor(options: TelemetryAnomalyMonitorOptions = {}) {\n this.onAnomaly = options.onAnomaly;\n this.now = options.now ?? (() => new Date());\n }\n\n observe(dispatch: TelemetryDispatch) {\n const anomalyConfig = dispatch.definition.anomalyDetection;\n if (!anomalyConfig?.enabled) return;\n if (!anomalyConfig.thresholds?.length) return;\n\n const eventKey = `${dispatch.name}.v${dispatch.version}`;\n const count = this.samples.get(eventKey) ?? 0;\n const newCount = count + 1;\n this.samples.set(eventKey, newCount);\n\n if (\n typeof anomalyConfig.minimumSample === 'number' &&\n newCount < anomalyConfig.minimumSample\n ) {\n return;\n }\n\n for (const threshold of anomalyConfig.thresholds) {\n const value = this.extractMetric(dispatch, threshold.metric);\n if (typeof value !== 'number') continue;\n if (typeof threshold.min === 'number' && value < threshold.min) {\n this.emit(dispatch, anomalyConfig, threshold.metric, value, 'min');\n }\n if (typeof threshold.max === 'number' && value > threshold.max) {\n this.emit(dispatch, anomalyConfig, threshold.metric, value, 'max');\n }\n }\n }\n\n private extractMetric(dispatch: TelemetryDispatch, metric: string) {\n const value = dispatch.properties[metric];\n if (typeof value === 'number') return value;\n if (typeof value === 'object' && value !== null && 'value' in value) {\n const maybeNumber = (value as Record<string, unknown>).value;\n return typeof maybeNumber === 'number' ? maybeNumber : undefined;\n }\n return undefined;\n }\n\n private emit(\n dispatch: TelemetryDispatch,\n threshold: TelemetryAnomalyDetectionConfig,\n metric: string,\n value: number,\n type: 'min' | 'max'\n ) {\n this.onAnomaly?.({\n dispatch,\n threshold,\n metric,\n value,\n type,\n });\n }\n\n reset() {\n this.samples.clear();\n }\n}\n"],"mappings":"AAgBA,IAAa,EAAb,KAAqC,CACnC,UACA,IACA,QAA2B,IAAI,IAE/B,YAAY,EAA0C,EAAE,CAAE,CACxD,KAAK,UAAY,EAAQ,UACzB,KAAK,IAAM,EAAQ,UAAc,IAAI,MAGvC,QAAQ,EAA6B,CACnC,IAAM,EAAgB,EAAS,WAAW,iBAE1C,GADI,CAAC,GAAe,SAChB,CAAC,EAAc,YAAY,OAAQ,OAEvC,IAAM,EAAW,GAAG,EAAS,KAAK,IAAI,EAAS,UAEzC,GADQ,KAAK,QAAQ,IAAI,EAAS,EAAI,GACnB,EACzB,QAAK,QAAQ,IAAI,EAAU,EAAS,CAGlC,SAAO,EAAc,eAAkB,UACvC,EAAW,EAAc,eAK3B,IAAK,IAAM,KAAa,EAAc,WAAY,CAChD,IAAM,EAAQ,KAAK,cAAc,EAAU,EAAU,OAAO,CACxD,OAAO,GAAU,WACjB,OAAO,EAAU,KAAQ,UAAY,EAAQ,EAAU,KACzD,KAAK,KAAK,EAAU,EAAe,EAAU,OAAQ,EAAO,MAAM,CAEhE,OAAO,EAAU,KAAQ,UAAY,EAAQ,EAAU,KACzD,KAAK,KAAK,EAAU,EAAe,EAAU,OAAQ,EAAO,MAAM,GAKxE,cAAsB,EAA6B,EAAgB,CACjE,IAAM,EAAQ,EAAS,WAAW,GAClC,GAAI,OAAO,GAAU,SAAU,OAAO,EACtC,GAAI,OAAO,GAAU,UAAY,GAAkB,UAAW,EAAO,CACnE,IAAM,EAAe,EAAkC,MACvD,OAAO,OAAO,GAAgB,SAAW,EAAc,IAAA,IAK3D,KACE,EACA,EACA,EACA,EACA,EACA,CACA,KAAK,YAAY,CACf,WACA,YACA,SACA,QACA,OACD,CAAC,CAGJ,OAAQ,CACN,KAAK,QAAQ,OAAO"}
@@ -1,4 +0,0 @@
1
- import { TelemetryAnomalyAction, TelemetryAnomalyDetectionConfig, TelemetryAnomalyThreshold, TelemetryConfig, TelemetryEventDef, TelemetryMeta, TelemetryPrivacyLevel, TelemetryPropertyDef, TelemetryProviderConfig, TelemetryRegistry, TelemetryRetentionConfig, TelemetrySamplingConfig, TelemetrySpec, makeTelemetryKey } from "./spec.js";
2
- import { TelemetryAnomalyEvent, TelemetryAnomalyMonitor, TelemetryAnomalyMonitorOptions } from "./anomaly.js";
3
- import { RuntimeTelemetryProvider, TelemetryDispatch, TelemetryEventContext, TelemetryTracker, TelemetryTrackerOptions } from "./tracker.js";
4
- export { RuntimeTelemetryProvider, TelemetryAnomalyAction, TelemetryAnomalyDetectionConfig, TelemetryAnomalyEvent, TelemetryAnomalyMonitor, TelemetryAnomalyMonitorOptions, TelemetryAnomalyThreshold, TelemetryConfig, TelemetryDispatch, TelemetryEventContext, TelemetryEventDef, TelemetryMeta, TelemetryPrivacyLevel, TelemetryPropertyDef, TelemetryProviderConfig, TelemetryRegistry, TelemetryRetentionConfig, TelemetrySamplingConfig, TelemetrySpec, TelemetryTracker, TelemetryTrackerOptions, makeTelemetryKey };
@@ -1,99 +0,0 @@
1
- import { OwnerShipMeta } from "../ownership.js";
2
-
3
- //#region src/telemetry/spec.d.ts
4
- type TelemetryPrivacyLevel = 'public' | 'internal' | 'pii' | 'sensitive';
5
- interface TelemetryMeta extends OwnerShipMeta {
6
- /** Fully-qualified telemetry spec name (e.g., "sigil.core"). */
7
- name: string;
8
- /** Incremented when telemetry definitions change in a breaking way. */
9
- version: number;
10
- /** Optional domain or bounded-context hint (e.g., "onboarding"). */
11
- domain: string;
12
- }
13
- interface TelemetryPropertyDef {
14
- type: 'string' | 'number' | 'boolean' | 'timestamp' | 'json';
15
- required?: boolean;
16
- pii?: boolean;
17
- redact?: boolean;
18
- description?: string;
19
- }
20
- interface TelemetryAnomalyThreshold {
21
- metric: string;
22
- min?: number;
23
- max?: number;
24
- }
25
- type TelemetryAnomalyAction = 'alert' | 'log' | 'trigger_regen';
26
- interface TelemetryAnomalyDetectionConfig {
27
- enabled: boolean;
28
- thresholds?: TelemetryAnomalyThreshold[];
29
- actions?: TelemetryAnomalyAction[];
30
- /**
31
- * Minimum sample size before evaluating thresholds.
32
- * Helps avoid false positives on small sample sizes.
33
- */
34
- minimumSample?: number;
35
- }
36
- interface TelemetrySamplingConfig {
37
- rate: number;
38
- conditions?: string[];
39
- }
40
- interface TelemetryRetentionConfig {
41
- days: number;
42
- policy?: 'archive' | 'delete';
43
- }
44
- interface TelemetryEventDef {
45
- /** Name of the event (should match EventSpec.name for cross-reference). */
46
- name: string;
47
- /** Version of the underlying event. */
48
- version: number;
49
- /** High-level semantics for docs/analyzers. */
50
- semantics: {
51
- who?: string;
52
- what: string;
53
- why?: string;
54
- };
55
- /** Detailed property metadata keyed by property name. */
56
- properties: Record<string, TelemetryPropertyDef>;
57
- /** Privacy level for the entire event. */
58
- privacy: TelemetryPrivacyLevel;
59
- /** Retention policy overrides. */
60
- retention?: TelemetryRetentionConfig;
61
- /** Sampling rules, defaulting to spec.config defaults. */
62
- sampling?: TelemetrySamplingConfig;
63
- /** Anomaly detection overrides. */
64
- anomalyDetection?: TelemetryAnomalyDetectionConfig;
65
- /** Optional tags for analytics/AI hints. */
66
- tags?: string[];
67
- }
68
- interface TelemetryProviderConfig {
69
- type: 'posthog' | 'segment' | 'opentelemetry' | 'internal';
70
- config: Record<string, unknown>;
71
- }
72
- interface TelemetryConfig {
73
- defaultRetentionDays?: number;
74
- defaultSamplingRate?: number;
75
- providers?: TelemetryProviderConfig[];
76
- anomalyDetection?: {
77
- enabled: boolean;
78
- checkIntervalMs?: number;
79
- };
80
- }
81
- interface TelemetrySpec {
82
- meta: TelemetryMeta;
83
- events: TelemetryEventDef[];
84
- config?: TelemetryConfig;
85
- }
86
- declare class TelemetryRegistry {
87
- private readonly items;
88
- private readonly eventsByKey;
89
- private readonly specByEventKey;
90
- register(spec: TelemetrySpec): this;
91
- list(): TelemetrySpec[];
92
- get(name: string, version?: number): TelemetrySpec | undefined;
93
- findEventDef(name: string, version?: number): TelemetryEventDef | undefined;
94
- getSpecForEvent(name: string, version?: number): TelemetrySpec | undefined;
95
- }
96
- declare function makeTelemetryKey(meta: TelemetryMeta): string;
97
- //#endregion
98
- export { TelemetryAnomalyAction, TelemetryAnomalyDetectionConfig, TelemetryAnomalyThreshold, TelemetryConfig, TelemetryEventDef, TelemetryMeta, TelemetryPrivacyLevel, TelemetryPropertyDef, TelemetryProviderConfig, TelemetryRegistry, TelemetryRetentionConfig, TelemetrySamplingConfig, TelemetrySpec, makeTelemetryKey };
99
- //# sourceMappingURL=spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"spec.d.ts","names":[],"sources":["../../src/telemetry/spec.ts"],"sourcesContent":[],"mappings":";;;KAGY,qBAAA;UAEK,aAAA,SAAsB;EAF3B;EAEK,IAAA,EAAA,MAAA;EASA;EAQA,OAAA,EAAA,MAAA;EAML;EAEK,MAAA,EAAA,MAAA;AAWjB;AAKiB,UAhCA,oBAAA,CAgCwB;EAKxB,IAAA,EAAA,QAAA,GAAA,QAAiB,GAAA,SAAA,GAAA,WAAA,GAAA,MAAA;EAYL,QAAA,CAAA,EAAA,OAAA;EAAf,GAAA,CAAA,EAAA,OAAA;EAEH,MAAA,CAAA,EAAA,OAAA;EAEG,WAAA,CAAA,EAAA,MAAA;;AAIO,UAjDJ,yBAAA,CAiDI;EAA+B,MAAA,EAAA,MAAA;EAKnC,GAAA,CAAA,EAAA,MAAA;EAKA,GAAA,CAAA,EAAA,MAAA;AAUjB;AACQ,KAhEI,sBAAA,GAgEJ,OAAA,GAAA,KAAA,GAAA,eAAA;AACE,UA/DO,+BAAA,CA+DP;EACC,OAAA,EAAA,OAAA;EAAe,UAAA,CAAA,EA9DX,yBA8DW,EAAA;EAKb,OAAA,CAAA,EAlED,sBAkEkB,EAAA;EAKb;;;;EAmDkC,aAAA,CAAA,EAAA,MAAA;;AAmBnC,UArIC,uBAAA,CAqIsB;;;;UAhItB,wBAAA;;;;UAKA,iBAAA;;;;;;;;;;;;cAYH,eAAe;;WAElB;;cAEG;;aAED;;qBAEQ;;;;UAKJ,uBAAA;;UAEP;;UAGO,eAAA;;;cAGH;;;;;;UAOG,aAAA;QACT;UACE;WACC;;cAKE,iBAAA;;;;iBAKI;UAaP;uCAI6B;gDAgBS;mDAkBG;;iBAmBnC,gBAAA,OAAuB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"spec.js","names":["latest: TelemetrySpec | undefined","latest: TelemetryEventDef | undefined"],"sources":["../../src/telemetry/spec.ts"],"sourcesContent":["import type { OwnerShipMeta } from '../ownership';\nimport type { EventKey } from '../events';\n\nexport type TelemetryPrivacyLevel = 'public' | 'internal' | 'pii' | 'sensitive';\n\nexport interface TelemetryMeta extends OwnerShipMeta {\n /** Fully-qualified telemetry spec name (e.g., \"sigil.core\"). */\n name: string;\n /** Incremented when telemetry definitions change in a breaking way. */\n version: number;\n /** Optional domain or bounded-context hint (e.g., \"onboarding\"). */\n domain: string;\n}\n\nexport interface TelemetryPropertyDef {\n type: 'string' | 'number' | 'boolean' | 'timestamp' | 'json';\n required?: boolean;\n pii?: boolean;\n redact?: boolean;\n description?: string;\n}\n\nexport interface TelemetryAnomalyThreshold {\n metric: string;\n min?: number;\n max?: number;\n}\n\nexport type TelemetryAnomalyAction = 'alert' | 'log' | 'trigger_regen';\n\nexport interface TelemetryAnomalyDetectionConfig {\n enabled: boolean;\n thresholds?: TelemetryAnomalyThreshold[];\n actions?: TelemetryAnomalyAction[];\n /**\n * Minimum sample size before evaluating thresholds.\n * Helps avoid false positives on small sample sizes.\n */\n minimumSample?: number;\n}\n\nexport interface TelemetrySamplingConfig {\n rate: number;\n conditions?: string[];\n}\n\nexport interface TelemetryRetentionConfig {\n days: number;\n policy?: 'archive' | 'delete';\n}\n\nexport interface TelemetryEventDef {\n /** Name of the event (should match EventSpec.name for cross-reference). */\n name: string;\n /** Version of the underlying event. */\n version: number;\n /** High-level semantics for docs/analyzers. */\n semantics: {\n who?: string;\n what: string;\n why?: string;\n };\n /** Detailed property metadata keyed by property name. */\n properties: Record<string, TelemetryPropertyDef>;\n /** Privacy level for the entire event. */\n privacy: TelemetryPrivacyLevel;\n /** Retention policy overrides. */\n retention?: TelemetryRetentionConfig;\n /** Sampling rules, defaulting to spec.config defaults. */\n sampling?: TelemetrySamplingConfig;\n /** Anomaly detection overrides. */\n anomalyDetection?: TelemetryAnomalyDetectionConfig;\n /** Optional tags for analytics/AI hints. */\n tags?: string[];\n}\n\nexport interface TelemetryProviderConfig {\n type: 'posthog' | 'segment' | 'opentelemetry' | 'internal';\n config: Record<string, unknown>;\n}\n\nexport interface TelemetryConfig {\n defaultRetentionDays?: number;\n defaultSamplingRate?: number;\n providers?: TelemetryProviderConfig[];\n anomalyDetection?: {\n enabled: boolean;\n checkIntervalMs?: number;\n };\n}\n\nexport interface TelemetrySpec {\n meta: TelemetryMeta;\n events: TelemetryEventDef[];\n config?: TelemetryConfig;\n}\n\nconst telemetryKey = (meta: TelemetryMeta) => `${meta.name}.v${meta.version}`;\n\nexport class TelemetryRegistry {\n private readonly items = new Map<string, TelemetrySpec>();\n private readonly eventsByKey = new Map<EventKey, TelemetryEventDef>();\n private readonly specByEventKey = new Map<EventKey, TelemetrySpec>();\n\n register(spec: TelemetrySpec): this {\n const key = telemetryKey(spec.meta);\n if (this.items.has(key)) {\n throw new Error(`Duplicate TelemetrySpec registration for ${key}`);\n }\n this.items.set(key, spec);\n for (const event of spec.events) {\n this.eventsByKey.set(`${event.name}.v${event.version}`, event);\n this.specByEventKey.set(`${event.name}.v${event.version}`, spec);\n }\n return this;\n }\n\n list(): TelemetrySpec[] {\n return [...this.items.values()];\n }\n\n get(name: string, version?: number): TelemetrySpec | undefined {\n if (version != null) {\n return this.items.get(`${name}.v${version}`);\n }\n let latest: TelemetrySpec | undefined;\n let maxVersion = -Infinity;\n for (const item of this.items.values()) {\n if (item.meta.name !== name) continue;\n if (item.meta.version > maxVersion) {\n maxVersion = item.meta.version;\n latest = item;\n }\n }\n return latest;\n }\n\n findEventDef(name: string, version?: number): TelemetryEventDef | undefined {\n if (version != null) {\n return this.eventsByKey.get(`${name}.v${version}`);\n }\n let latest: TelemetryEventDef | undefined;\n let maxVersion = -Infinity;\n for (const [key, event] of this.eventsByKey.entries()) {\n const [eventName, versionPart] = key.split('.v');\n if (eventName !== name) continue;\n const ver = Number(versionPart);\n if (Number.isFinite(ver) && ver > maxVersion) {\n maxVersion = ver;\n latest = event;\n }\n }\n return latest;\n }\n\n getSpecForEvent(name: string, version?: number): TelemetrySpec | undefined {\n if (version != null) {\n return this.specByEventKey.get(`${name}.v${version}`);\n }\n let latest: TelemetrySpec | undefined;\n let maxVersion = -Infinity;\n for (const [key, spec] of this.specByEventKey.entries()) {\n const [eventName, versionPart] = key.split('.v');\n if (eventName !== name) continue;\n const ver = Number(versionPart);\n if (Number.isFinite(ver) && ver > maxVersion) {\n maxVersion = ver;\n latest = spec;\n }\n }\n return latest;\n }\n}\n\nexport function makeTelemetryKey(meta: TelemetryMeta) {\n return telemetryKey(meta);\n}\n"],"mappings":"AAiGA,MAAM,EAAgB,GAAwB,GAAG,EAAK,KAAK,IAAI,EAAK,UAEpE,IAAa,EAAb,KAA+B,CAC7B,MAAyB,IAAI,IAC7B,YAA+B,IAAI,IACnC,eAAkC,IAAI,IAEtC,SAAS,EAA2B,CAClC,IAAM,EAAM,EAAa,EAAK,KAAK,CACnC,GAAI,KAAK,MAAM,IAAI,EAAI,CACrB,MAAU,MAAM,4CAA4C,IAAM,CAEpE,KAAK,MAAM,IAAI,EAAK,EAAK,CACzB,IAAK,IAAM,KAAS,EAAK,OACvB,KAAK,YAAY,IAAI,GAAG,EAAM,KAAK,IAAI,EAAM,UAAW,EAAM,CAC9D,KAAK,eAAe,IAAI,GAAG,EAAM,KAAK,IAAI,EAAM,UAAW,EAAK,CAElE,OAAO,KAGT,MAAwB,CACtB,MAAO,CAAC,GAAG,KAAK,MAAM,QAAQ,CAAC,CAGjC,IAAI,EAAc,EAA6C,CAC7D,GAAI,GAAW,KACb,OAAO,KAAK,MAAM,IAAI,GAAG,EAAK,IAAI,IAAU,CAE9C,IAAIA,EACA,EAAa,KACjB,IAAK,IAAM,KAAQ,KAAK,MAAM,QAAQ,CAChC,EAAK,KAAK,OAAS,GACnB,EAAK,KAAK,QAAU,IACtB,EAAa,EAAK,KAAK,QACvB,EAAS,GAGb,OAAO,EAGT,aAAa,EAAc,EAAiD,CAC1E,GAAI,GAAW,KACb,OAAO,KAAK,YAAY,IAAI,GAAG,EAAK,IAAI,IAAU,CAEpD,IAAIC,EACA,EAAa,KACjB,IAAK,GAAM,CAAC,EAAK,KAAU,KAAK,YAAY,SAAS,CAAE,CACrD,GAAM,CAAC,EAAW,GAAe,EAAI,MAAM,KAAK,CAChD,GAAI,IAAc,EAAM,SACxB,IAAM,EAAM,OAAO,EAAY,CAC3B,OAAO,SAAS,EAAI,EAAI,EAAM,IAChC,EAAa,EACb,EAAS,GAGb,OAAO,EAGT,gBAAgB,EAAc,EAA6C,CACzE,GAAI,GAAW,KACb,OAAO,KAAK,eAAe,IAAI,GAAG,EAAK,IAAI,IAAU,CAEvD,IAAID,EACA,EAAa,KACjB,IAAK,GAAM,CAAC,EAAK,KAAS,KAAK,eAAe,SAAS,CAAE,CACvD,GAAM,CAAC,EAAW,GAAe,EAAI,MAAM,KAAK,CAChD,GAAI,IAAc,EAAM,SACxB,IAAM,EAAM,OAAO,EAAY,CAC3B,OAAO,SAAS,EAAI,EAAI,EAAM,IAChC,EAAa,EACb,EAAS,GAGb,OAAO,IAIX,SAAgB,EAAiB,EAAqB,CACpD,OAAO,EAAa,EAAK"}
@@ -1,52 +0,0 @@
1
- import { TelemetryEventDef, TelemetryRegistry, TelemetrySpec } from "./spec.js";
2
- import { TelemetryAnomalyMonitor } from "./anomaly.js";
3
-
4
- //#region src/telemetry/tracker.d.ts
5
- interface TelemetryEventContext {
6
- tenantId?: string;
7
- organizationId?: string | null;
8
- userId?: string | null;
9
- sessionId?: string | null;
10
- actor?: 'anonymous' | 'user' | 'admin';
11
- channel?: 'web' | 'mobile' | 'job' | 'agent';
12
- metadata?: Record<string, unknown>;
13
- }
14
- interface TelemetryDispatch {
15
- id: string;
16
- name: string;
17
- version: number;
18
- occurredAt: string;
19
- properties: Record<string, unknown>;
20
- privacy: TelemetryEventDef['privacy'];
21
- context: TelemetryEventContext;
22
- tags?: string[];
23
- spec: TelemetrySpec;
24
- definition: TelemetryEventDef;
25
- }
26
- interface RuntimeTelemetryProvider {
27
- id: string;
28
- send(event: TelemetryDispatch): Promise<void>;
29
- }
30
- interface TelemetryTrackerOptions {
31
- registry: TelemetryRegistry;
32
- providers?: RuntimeTelemetryProvider[];
33
- anomalyMonitor?: TelemetryAnomalyMonitor;
34
- random?: () => number;
35
- clock?: () => Date;
36
- }
37
- declare class TelemetryTracker {
38
- private readonly providers;
39
- private readonly registry;
40
- private readonly anomalyMonitor?;
41
- private readonly random;
42
- private readonly clock;
43
- constructor(options: TelemetryTrackerOptions);
44
- registerProvider(provider: RuntimeTelemetryProvider): void;
45
- unregisterProvider(providerId: string): void;
46
- track(name: string, version: number, properties: Record<string, unknown>, context?: TelemetryEventContext): Promise<boolean>;
47
- private shouldSample;
48
- private redactProperties;
49
- }
50
- //#endregion
51
- export { RuntimeTelemetryProvider, TelemetryDispatch, TelemetryEventContext, TelemetryTracker, TelemetryTrackerOptions };
52
- //# sourceMappingURL=tracker.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tracker.d.ts","names":[],"sources":["../../src/telemetry/tracker.ts"],"sourcesContent":[],"mappings":";;;;UASiB,qBAAA;;EAAA,cAAA,CAAA,EAAA,MAAA,GAAqB,IAAA;EAUrB,MAAA,CAAA,EAAA,MAAA,GAAA,IAAiB;EAKpB,SAAA,CAAA,EAAA,MAAA,GAAA,IAAA;EACH,KAAA,CAAA,EAAA,WAAA,GAAA,MAAA,GAAA,OAAA;EACA,OAAA,CAAA,EAAA,KAAA,GAAA,QAAA,GAAA,KAAA,GAAA,OAAA;EAEH,QAAA,CAAA,EAZK,MAYL,CAAA,MAAA,EAAA,OAAA,CAAA;;AACuB,UAVd,iBAAA,CAUc;EAGd,EAAA,EAAA,MAAA;EAKA,IAAA,EAAA,MAAA;EACL,OAAA,EAAA,MAAA;EACE,UAAA,EAAA,MAAA;EACK,UAAA,EAhBL,MAgBK,CAAA,MAAA,EAAA,OAAA,CAAA;EAEH,OAAA,EAjBL,iBAiBK,CAAA,SAAA,CAAA;EAAI,OAAA,EAhBT,qBAgBS;EAoBP,IAAA,CAAA,EAAA,MAAA,EAAA;EAOU,IAAA,EAzCf,aAyCe;EAWM,UAAA,EAnDf,iBAmDe;;AAYhB,UA5DI,wBAAA,CA4DJ;EACR,EAAA,EAAA,MAAA;EAAO,IAAA,CAAA,KAAA,EA3DE,iBA2DF,CAAA,EA3DsB,OA2DtB,CAAA,IAAA,CAAA;;UAxDK,uBAAA;YACL;cACE;mBACK;;gBAEH;;cAoBH,gBAAA;;;;;;uBAOU;6BAWM;;mDAWb,mCACH,wBACR"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tracker.js","names":["dispatch: TelemetryDispatch","result: Record<string, unknown>"],"sources":["../../src/telemetry/tracker.ts"],"sourcesContent":["import { randomUUID } from 'crypto';\nimport type { TelemetryAnomalyMonitor } from './anomaly';\nimport type {\n TelemetryEventDef,\n TelemetryRegistry,\n TelemetrySamplingConfig,\n TelemetrySpec,\n} from './spec';\n\nexport interface TelemetryEventContext {\n tenantId?: string;\n organizationId?: string | null;\n userId?: string | null;\n sessionId?: string | null;\n actor?: 'anonymous' | 'user' | 'admin';\n channel?: 'web' | 'mobile' | 'job' | 'agent';\n metadata?: Record<string, unknown>;\n}\n\nexport interface TelemetryDispatch {\n id: string;\n name: string;\n version: number;\n occurredAt: string;\n properties: Record<string, unknown>;\n privacy: TelemetryEventDef['privacy'];\n context: TelemetryEventContext;\n tags?: string[];\n spec: TelemetrySpec;\n definition: TelemetryEventDef;\n}\n\nexport interface RuntimeTelemetryProvider {\n id: string;\n send(event: TelemetryDispatch): Promise<void>;\n}\n\nexport interface TelemetryTrackerOptions {\n registry: TelemetryRegistry;\n providers?: RuntimeTelemetryProvider[];\n anomalyMonitor?: TelemetryAnomalyMonitor;\n random?: () => number;\n clock?: () => Date;\n}\n\nconst maskValue = (value: unknown) => {\n if (value == null) return value;\n if (typeof value === 'string') return 'REDACTED';\n if (typeof value === 'number') return 0;\n if (typeof value === 'boolean') return false;\n if (Array.isArray(value)) return value.map(() => 'REDACTED');\n if (typeof value === 'object') {\n return Object.fromEntries(\n Object.keys(value as Record<string, unknown>).map((key) => [\n key,\n 'REDACTED',\n ])\n );\n }\n return 'REDACTED';\n};\n\nexport class TelemetryTracker {\n private readonly providers = new Map<string, RuntimeTelemetryProvider>();\n private readonly registry: TelemetryRegistry;\n private readonly anomalyMonitor?: TelemetryAnomalyMonitor;\n private readonly random: () => number;\n private readonly clock: () => Date;\n\n constructor(options: TelemetryTrackerOptions) {\n this.registry = options.registry;\n this.anomalyMonitor = options.anomalyMonitor;\n this.random = options.random ?? Math.random;\n this.clock = options.clock ?? (() => new Date());\n\n for (const provider of options.providers ?? []) {\n this.providers.set(provider.id, provider);\n }\n }\n\n registerProvider(provider: RuntimeTelemetryProvider) {\n this.providers.set(provider.id, provider);\n }\n\n unregisterProvider(providerId: string) {\n this.providers.delete(providerId);\n }\n\n async track(\n name: string,\n version: number,\n properties: Record<string, unknown>,\n context: TelemetryEventContext = {}\n ): Promise<boolean> {\n const definition = this.registry.findEventDef(name, version);\n if (!definition) return false;\n\n const spec = this.registry.getSpecForEvent(\n definition.name,\n definition.version\n );\n if (!spec) return false;\n\n if (\n !this.shouldSample(\n definition.sampling ?? spec.config?.defaultSamplingRate\n )\n ) {\n return false;\n }\n\n const redactedProperties = this.redactProperties(definition, properties);\n const dispatch: TelemetryDispatch = {\n id: randomUUID(),\n name: definition.name,\n version: definition.version,\n occurredAt: this.clock().toISOString(),\n properties: redactedProperties,\n privacy: definition.privacy,\n context,\n tags: definition.tags,\n spec,\n definition,\n };\n\n await Promise.all(\n [...this.providers.values()].map((provider) => provider.send(dispatch))\n );\n\n this.anomalyMonitor?.observe(dispatch);\n return true;\n }\n\n private shouldSample(\n sampling: TelemetrySamplingConfig | number | undefined\n ): boolean {\n if (typeof sampling === 'number') {\n return this.random() < sampling;\n }\n if (!sampling) return true;\n return this.random() < sampling.rate;\n }\n\n private redactProperties(\n definition: TelemetryEventDef,\n properties: Record<string, unknown>\n ): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(properties)) {\n const def = definition.properties[key];\n if (!def) {\n result[key] = value;\n continue;\n }\n if (def.redact || def.pii || definition.privacy === 'sensitive') {\n result[key] = maskValue(value);\n } else {\n result[key] = value;\n }\n }\n return result;\n }\n}\n"],"mappings":"oCA6CA,MAAM,EAAa,GACb,GAAS,KAAa,EACtB,OAAO,GAAU,SAAiB,WAClC,OAAO,GAAU,SAAiB,EAClC,OAAO,GAAU,UAAkB,GACnC,MAAM,QAAQ,EAAM,CAAS,EAAM,QAAU,WAAW,CACxD,OAAO,GAAU,SACZ,OAAO,YACZ,OAAO,KAAK,EAAiC,CAAC,IAAK,GAAQ,CACzD,EACA,WACD,CAAC,CACH,CAEI,WAGT,IAAa,EAAb,KAA8B,CAC5B,UAA6B,IAAI,IACjC,SACA,eACA,OACA,MAEA,YAAY,EAAkC,CAC5C,KAAK,SAAW,EAAQ,SACxB,KAAK,eAAiB,EAAQ,eAC9B,KAAK,OAAS,EAAQ,QAAU,KAAK,OACrC,KAAK,MAAQ,EAAQ,YAAgB,IAAI,MAEzC,IAAK,IAAM,KAAY,EAAQ,WAAa,EAAE,CAC5C,KAAK,UAAU,IAAI,EAAS,GAAI,EAAS,CAI7C,iBAAiB,EAAoC,CACnD,KAAK,UAAU,IAAI,EAAS,GAAI,EAAS,CAG3C,mBAAmB,EAAoB,CACrC,KAAK,UAAU,OAAO,EAAW,CAGnC,MAAM,MACJ,EACA,EACA,EACA,EAAiC,EAAE,CACjB,CAClB,IAAM,EAAa,KAAK,SAAS,aAAa,EAAM,EAAQ,CAC5D,GAAI,CAAC,EAAY,MAAO,GAExB,IAAM,EAAO,KAAK,SAAS,gBACzB,EAAW,KACX,EAAW,QACZ,CAGD,GAFI,CAAC,GAGH,CAAC,KAAK,aACJ,EAAW,UAAY,EAAK,QAAQ,oBACrC,CAED,MAAO,GAGT,IAAM,EAAqB,KAAK,iBAAiB,EAAY,EAAW,CAClEA,EAA8B,CAClC,GAAI,GAAY,CAChB,KAAM,EAAW,KACjB,QAAS,EAAW,QACpB,WAAY,KAAK,OAAO,CAAC,aAAa,CACtC,WAAY,EACZ,QAAS,EAAW,QACpB,UACA,KAAM,EAAW,KACjB,OACA,aACD,CAOD,OALA,MAAM,QAAQ,IACZ,CAAC,GAAG,KAAK,UAAU,QAAQ,CAAC,CAAC,IAAK,GAAa,EAAS,KAAK,EAAS,CAAC,CACxE,CAED,KAAK,gBAAgB,QAAQ,EAAS,CAC/B,GAGT,aACE,EACS,CAKT,OAJI,OAAO,GAAa,SACf,KAAK,QAAQ,CAAG,EAEpB,EACE,KAAK,QAAQ,CAAG,EAAS,KADV,GAIxB,iBACE,EACA,EACyB,CACzB,IAAMC,EAAkC,EAAE,CAC1C,IAAK,GAAM,CAAC,EAAK,KAAU,OAAO,QAAQ,EAAW,CAAE,CACrD,IAAM,EAAM,EAAW,WAAW,GAClC,GAAI,CAAC,EAAK,CACR,EAAO,GAAO,EACd,SAEE,EAAI,QAAU,EAAI,KAAO,EAAW,UAAY,YAClD,EAAO,GAAO,EAAU,EAAM,CAE9B,EAAO,GAAO,EAGlB,OAAO"}
@@ -1,3 +0,0 @@
1
- import { Action, Assertion, CoverageRequirement, ExpectErrorAssertion, ExpectEventsAssertion, ExpectOutputAssertion, ExpectedEvent, Fixture, OperationTargetRef, TestRegistry, TestScenario, TestSpec, TestSpecMeta, TestSpecRef, TestTarget, WorkflowTargetRef, makeTestKey } from "./spec.js";
2
- import { AssertionResult, ScenarioRunResult, TestRunResult, TestRunner, TestRunnerConfig } from "./runner.js";
3
- export { Action, Assertion, AssertionResult, CoverageRequirement, ExpectErrorAssertion, ExpectEventsAssertion, ExpectOutputAssertion, ExpectedEvent, Fixture, OperationTargetRef, ScenarioRunResult, TestRegistry, TestRunResult, TestRunner, TestRunnerConfig, TestScenario, TestSpec, TestSpecMeta, TestSpecRef, TestTarget, WorkflowTargetRef, makeTestKey };
@@ -1,44 +0,0 @@
1
- import { Assertion, TestScenario, TestSpec } from "./spec.js";
2
- import { HandlerCtx } from "../types.js";
3
- import { SpecRegistry } from "../registry.js";
4
- import "../index.js";
5
-
6
- //#region src/tests/runner.d.ts
7
- interface ScenarioRunResult {
8
- scenario: TestScenario;
9
- status: 'passed' | 'failed';
10
- error?: Error;
11
- assertionResults: AssertionResult[];
12
- }
13
- interface AssertionResult {
14
- assertion: Assertion;
15
- status: 'passed' | 'failed';
16
- message?: string;
17
- }
18
- interface TestRunResult {
19
- spec: TestSpec;
20
- scenarios: ScenarioRunResult[];
21
- passed: number;
22
- failed: number;
23
- }
24
- interface TestRunnerConfig {
25
- registry: SpecRegistry;
26
- createContext?: () => HandlerCtx | Promise<HandlerCtx>;
27
- beforeEach?: (scenario: TestScenario) => void | Promise<void>;
28
- afterEach?: (scenario: TestScenario, result: ScenarioRunResult) => void | Promise<void>;
29
- }
30
- declare class TestRunner {
31
- private readonly config;
32
- constructor(config: TestRunnerConfig);
33
- run(spec: TestSpec): Promise<TestRunResult>;
34
- private runScenario;
35
- private createContext;
36
- private executeOperation;
37
- private evaluateAssertion;
38
- private evaluateOutputAssertion;
39
- private evaluateErrorAssertion;
40
- private evaluateEventsAssertion;
41
- }
42
- //#endregion
43
- export { AssertionResult, ScenarioRunResult, TestRunResult, TestRunner, TestRunnerConfig };
44
- //# sourceMappingURL=runner.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runner.d.ts","names":[],"sources":["../../src/tests/runner.ts"],"sourcesContent":[],"mappings":";;;;;;UAciB,iBAAA;YACL;;EADK,KAAA,CAAA,EAGP,KAHO;EACL,gBAAA,EAGQ,eAHR,EAAA;;AAGQ,UAGH,eAAA,CAHG;EAAe,SAAA,EAItB,SAJsB;EAGlB,MAAA,EAAA,QAAA,GAAe,QAAA;EAMf,OAAA,CAAA,EAAA,MAAa;AAO9B;AACY,UARK,aAAA,CAQL;EACY,IAAA,EARhB,QAQgB;EAAqB,SAAA,EAPhC,iBAOgC,EAAA;EAAR,MAAA,EAAA,MAAA;EACX,MAAA,EAAA,MAAA;;AAEZ,UALG,gBAAA,CAKH;EACF,QAAA,EALA,YAKA;EACE,aAAA,CAAA,EAAA,GAAA,GALU,UAKV,GALuB,OAKvB,CAL+B,UAK/B,CAAA;EAAO,UAAA,CAAA,EAAA,CAAA,QAAA,EAJK,YAIL,EAAA,GAAA,IAAA,GAJ6B,OAI7B,CAAA,IAAA,CAAA;EAeR,SAAA,CAAA,EAAA,CAAU,QAAA,EAjBT,YAiBS,EAAA,MAAA,EAhBX,iBAgBW,EAAA,GAAA,IAAA,GAfT,OAeS,CAAA,IAAA,CAAA;;AAGL,cAHL,UAAA,CAGK;EAAmB,iBAAA,MAAA;EAAR,WAAA,CAAA,MAAA,EAFU,gBAEV;EAAO,GAAA,CAAA,IAAA,EAAlB,QAAkB,CAAA,EAAP,OAAO,CAAC,aAAD,CAAA"}