@lssm/lib.feature-flags 0.0.0-canary-20251207013726 → 0.0.0-canary-20251207043720

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 (112) hide show
  1. package/README.md +1 -0
  2. package/dist/contracts/index.js +1 -1
  3. package/dist/entities/index.js +1 -1
  4. package/dist/events.js +1 -1
  5. package/package.json +15 -7
  6. package/dist/contracts/dist/capabilities/openbanking.js +0 -1
  7. package/dist/contracts/dist/client/index.js +0 -1
  8. package/dist/contracts/dist/client/react/feature-render.js +0 -1
  9. package/dist/contracts/dist/client/react/form-render.js +0 -1
  10. package/dist/contracts/dist/client/react/index.js +0 -1
  11. package/dist/contracts/dist/events.js +0 -1
  12. package/dist/contracts/dist/experiments/evaluator.js +0 -1
  13. package/dist/contracts/dist/graphql-federation/dist/index.js +0 -1
  14. package/dist/contracts/dist/index.js +0 -1
  15. package/dist/contracts/dist/install.js +0 -1
  16. package/dist/contracts/dist/integrations/contracts.js +0 -1
  17. package/dist/contracts/dist/integrations/index.js +0 -1
  18. package/dist/contracts/dist/integrations/openbanking/contracts/accounts.js +0 -1
  19. package/dist/contracts/dist/integrations/openbanking/contracts/balances.js +0 -1
  20. package/dist/contracts/dist/integrations/openbanking/contracts/index.js +0 -1
  21. package/dist/contracts/dist/integrations/openbanking/contracts/transactions.js +0 -1
  22. package/dist/contracts/dist/integrations/openbanking/models.js +0 -1
  23. package/dist/contracts/dist/integrations/openbanking/telemetry.js +0 -1
  24. package/dist/contracts/dist/integrations/providers/elevenlabs.js +0 -1
  25. package/dist/contracts/dist/integrations/providers/gcs-storage.js +0 -1
  26. package/dist/contracts/dist/integrations/providers/gmail.js +0 -1
  27. package/dist/contracts/dist/integrations/providers/google-calendar.js +0 -1
  28. package/dist/contracts/dist/integrations/providers/impls/elevenlabs-voice.js +0 -1
  29. package/dist/contracts/dist/integrations/providers/impls/gcs-storage.js +0 -1
  30. package/dist/contracts/dist/integrations/providers/impls/gmail-inbound.js +0 -1
  31. package/dist/contracts/dist/integrations/providers/impls/gmail-outbound.js +0 -1
  32. package/dist/contracts/dist/integrations/providers/impls/google-calendar.js +0 -1
  33. package/dist/contracts/dist/integrations/providers/impls/index.js +0 -1
  34. package/dist/contracts/dist/integrations/providers/impls/mistral-embedding.js +0 -1
  35. package/dist/contracts/dist/integrations/providers/impls/mistral-llm.js +0 -1
  36. package/dist/contracts/dist/integrations/providers/impls/postmark-email.js +0 -1
  37. package/dist/contracts/dist/integrations/providers/impls/powens-client.js +0 -1
  38. package/dist/contracts/dist/integrations/providers/impls/powens-openbanking.js +0 -1
  39. package/dist/contracts/dist/integrations/providers/impls/provider-factory.js +0 -1
  40. package/dist/contracts/dist/integrations/providers/impls/qdrant-vector.js +0 -1
  41. package/dist/contracts/dist/integrations/providers/impls/stripe-payments.js +0 -1
  42. package/dist/contracts/dist/integrations/providers/impls/twilio-sms.js +0 -1
  43. package/dist/contracts/dist/integrations/providers/index.js +0 -1
  44. package/dist/contracts/dist/integrations/providers/mistral.js +0 -1
  45. package/dist/contracts/dist/integrations/providers/postmark.js +0 -1
  46. package/dist/contracts/dist/integrations/providers/powens.js +0 -1
  47. package/dist/contracts/dist/integrations/providers/qdrant.js +0 -1
  48. package/dist/contracts/dist/integrations/providers/stripe.js +0 -1
  49. package/dist/contracts/dist/integrations/providers/twilio-sms.js +0 -1
  50. package/dist/contracts/dist/integrations/runtime.js +0 -1
  51. package/dist/contracts/dist/integrations/secrets/env-secret-provider.js +0 -1
  52. package/dist/contracts/dist/integrations/secrets/gcp-secret-manager.js +0 -1
  53. package/dist/contracts/dist/integrations/secrets/index.js +0 -1
  54. package/dist/contracts/dist/integrations/secrets/manager.js +0 -1
  55. package/dist/contracts/dist/integrations/secrets/provider.js +0 -1
  56. package/dist/contracts/dist/jsonschema.js +0 -1
  57. package/dist/contracts/dist/knowledge/contracts.js +0 -1
  58. package/dist/contracts/dist/knowledge/index.js +0 -1
  59. package/dist/contracts/dist/knowledge/spaces/email-threads.js +0 -1
  60. package/dist/contracts/dist/knowledge/spaces/financial-docs.js +0 -1
  61. package/dist/contracts/dist/knowledge/spaces/financial-overview.js +0 -1
  62. package/dist/contracts/dist/knowledge/spaces/index.js +0 -1
  63. package/dist/contracts/dist/knowledge/spaces/product-canon.js +0 -1
  64. package/dist/contracts/dist/knowledge/spaces/support-faq.js +0 -1
  65. package/dist/contracts/dist/knowledge/spaces/uploaded-docs.js +0 -1
  66. package/dist/contracts/dist/onboarding-base.js +0 -1
  67. package/dist/contracts/dist/ownership.js +0 -1
  68. package/dist/contracts/dist/presentations.js +0 -1
  69. package/dist/contracts/dist/presentations.v2.js +0 -1
  70. package/dist/contracts/dist/prompt.js +0 -1
  71. package/dist/contracts/dist/promptRegistry.js +0 -1
  72. package/dist/contracts/dist/regenerator/index.js +0 -1
  73. package/dist/contracts/dist/regenerator/service.js +0 -1
  74. package/dist/contracts/dist/registry.js +0 -1
  75. package/dist/contracts/dist/resources.js +0 -1
  76. package/dist/contracts/dist/schema/dist/EnumType.js +0 -1
  77. package/dist/contracts/dist/schema/dist/FieldType.js +0 -1
  78. package/dist/contracts/dist/schema/dist/ScalarTypeEnum.js +0 -1
  79. package/dist/contracts/dist/schema/dist/SchemaModel.js +0 -1
  80. package/dist/contracts/dist/schema/dist/entity/defineEntity.js +0 -1
  81. package/dist/contracts/dist/schema/dist/entity/index.js +0 -1
  82. package/dist/contracts/dist/schema/dist/entity/types.js +0 -1
  83. package/dist/contracts/dist/schema/dist/index.js +0 -1
  84. package/dist/contracts/dist/server/graphql-pothos.js +0 -1
  85. package/dist/contracts/dist/server/graphql-schema-export.js +0 -1
  86. package/dist/contracts/dist/server/index.js +0 -1
  87. package/dist/contracts/dist/server/provider-mcp.js +0 -1
  88. package/dist/contracts/dist/server/rest-elysia.js +0 -1
  89. package/dist/contracts/dist/server/rest-express.js +0 -1
  90. package/dist/contracts/dist/server/rest-generic.js +0 -1
  91. package/dist/contracts/dist/server/rest-next-app.js +0 -1
  92. package/dist/contracts/dist/server/rest-next-pages.js +0 -1
  93. package/dist/contracts/dist/spec.js +0 -1
  94. package/dist/contracts/dist/telemetry/index.js +0 -1
  95. package/dist/contracts/dist/telemetry/tracker.js +0 -1
  96. package/dist/contracts/dist/tests/index.js +0 -1
  97. package/dist/contracts/dist/tests/runner.js +0 -1
  98. package/dist/contracts/dist/workflow/index.js +0 -1
  99. package/dist/contracts/dist/workflow/runner.js +0 -1
  100. package/dist/contracts/index.d.ts +0 -1006
  101. package/dist/entities/index.d.ts +0 -200
  102. package/dist/evaluation/index.d.ts +0 -162
  103. package/dist/events.d.ts +0 -624
  104. package/dist/index.d.ts +0 -5
  105. package/dist/schema/dist/EnumType.js +0 -1
  106. package/dist/schema/dist/FieldType.js +0 -1
  107. package/dist/schema/dist/ScalarTypeEnum.js +0 -1
  108. package/dist/schema/dist/SchemaModel.js +0 -1
  109. package/dist/schema/dist/entity/defineEntity.js +0 -1
  110. package/dist/schema/dist/entity/index.js +0 -1
  111. package/dist/schema/dist/entity/types.js +0 -1
  112. package/dist/schema/dist/index.js +0 -1
package/README.md CHANGED
@@ -157,3 +157,4 @@ export const schemaComposition = {
157
157
 
158
158
 
159
159
 
160
+
@@ -1 +1 @@
1
- import{l as e}from"../schema/dist/ScalarTypeEnum.js";import{n as t}from"../schema/dist/SchemaModel.js";import"../schema/dist/index.js";import{n,t as r}from"./dist/spec.js";import"./dist/index.js";const i=[`platform.feature-flags`],a=t({name:`FeatureFlag`,description:`Represents a feature flag`,fields:{id:{type:e.String_unsecure(),isOptional:!1},key:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!1},description:{type:e.String_unsecure(),isOptional:!0},status:{type:e.String_unsecure(),isOptional:!1},defaultValue:{type:e.Boolean(),isOptional:!1},variants:{type:e.JSON(),isOptional:!0},orgId:{type:e.String_unsecure(),isOptional:!0},tags:{type:e.JSON(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1},updatedAt:{type:e.DateTime(),isOptional:!1}}}),o=t({name:`TargetingRule`,description:`Represents a targeting rule`,fields:{id:{type:e.String_unsecure(),isOptional:!1},flagId:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!0},priority:{type:e.Int_unsecure(),isOptional:!1},enabled:{type:e.Boolean(),isOptional:!1},attribute:{type:e.String_unsecure(),isOptional:!1},operator:{type:e.String_unsecure(),isOptional:!1},value:{type:e.JSON(),isOptional:!1},rolloutPercentage:{type:e.Int_unsecure(),isOptional:!0},serveValue:{type:e.Boolean(),isOptional:!0},serveVariant:{type:e.String_unsecure(),isOptional:!0}}}),s=t({name:`Experiment`,description:`Represents an experiment`,fields:{id:{type:e.String_unsecure(),isOptional:!1},key:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!1},description:{type:e.String_unsecure(),isOptional:!0},hypothesis:{type:e.String_unsecure(),isOptional:!0},flagId:{type:e.String_unsecure(),isOptional:!1},status:{type:e.String_unsecure(),isOptional:!1},variants:{type:e.JSON(),isOptional:!1},metrics:{type:e.JSON(),isOptional:!0},audiencePercentage:{type:e.Int_unsecure(),isOptional:!1},startedAt:{type:e.DateTime(),isOptional:!0},endedAt:{type:e.DateTime(),isOptional:!0},winningVariant:{type:e.String_unsecure(),isOptional:!0},results:{type:e.JSON(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1}}}),c=t({name:`EvaluationResult`,description:`Result of flag evaluation`,fields:{enabled:{type:e.Boolean(),isOptional:!1},variant:{type:e.String_unsecure(),isOptional:!0},reason:{type:e.String_unsecure(),isOptional:!1},ruleId:{type:e.String_unsecure(),isOptional:!0},experimentId:{type:e.String_unsecure(),isOptional:!0}}}),l=t({name:`CreateFlagInput`,description:`Input for creating a feature flag`,fields:{key:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!1},description:{type:e.String_unsecure(),isOptional:!0},defaultValue:{type:e.Boolean(),isOptional:!0},variants:{type:e.JSON(),isOptional:!0},orgId:{type:e.String_unsecure(),isOptional:!0},tags:{type:e.JSON(),isOptional:!0}}}),u=t({name:`UpdateFlagInput`,description:`Input for updating a feature flag`,fields:{flagId:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!0},description:{type:e.String_unsecure(),isOptional:!0},defaultValue:{type:e.Boolean(),isOptional:!0},variants:{type:e.JSON(),isOptional:!0},tags:{type:e.JSON(),isOptional:!0}}}),d=t({name:`DeleteFlagInput`,description:`Input for deleting a feature flag`,fields:{flagId:{type:e.String_unsecure(),isOptional:!1}}}),f=t({name:`ToggleFlagInput`,description:`Input for toggling a feature flag`,fields:{flagId:{type:e.String_unsecure(),isOptional:!1},status:{type:e.String_unsecure(),isOptional:!1}}}),p=t({name:`GetFlagInput`,description:`Input for getting a feature flag`,fields:{key:{type:e.String_unsecure(),isOptional:!1},orgId:{type:e.String_unsecure(),isOptional:!0}}}),m=t({name:`ListFlagsInput`,description:`Input for listing feature flags`,fields:{orgId:{type:e.String_unsecure(),isOptional:!0},status:{type:e.String_unsecure(),isOptional:!0},tags:{type:e.JSON(),isOptional:!0},limit:{type:e.Int_unsecure(),isOptional:!0},offset:{type:e.Int_unsecure(),isOptional:!0}}}),h=t({name:`ListFlagsOutput`,description:`Output for listing feature flags`,fields:{flags:{type:a,isArray:!0,isOptional:!1},total:{type:e.Int_unsecure(),isOptional:!1}}}),g=t({name:`EvaluateFlagInput`,description:`Input for evaluating a feature flag`,fields:{key:{type:e.String_unsecure(),isOptional:!1},context:{type:e.JSON(),isOptional:!1}}}),_=t({name:`CreateRuleInput`,description:`Input for creating a targeting rule`,fields:{flagId:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!0},priority:{type:e.Int_unsecure(),isOptional:!0},attribute:{type:e.String_unsecure(),isOptional:!1},operator:{type:e.String_unsecure(),isOptional:!1},value:{type:e.JSON(),isOptional:!1},rolloutPercentage:{type:e.Int_unsecure(),isOptional:!0},serveValue:{type:e.Boolean(),isOptional:!0},serveVariant:{type:e.String_unsecure(),isOptional:!0}}}),v=t({name:`DeleteRuleInput`,description:`Input for deleting a targeting rule`,fields:{ruleId:{type:e.String_unsecure(),isOptional:!1}}}),y=t({name:`CreateExperimentInput`,description:`Input for creating an experiment`,fields:{key:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!1},description:{type:e.String_unsecure(),isOptional:!0},hypothesis:{type:e.String_unsecure(),isOptional:!0},flagId:{type:e.String_unsecure(),isOptional:!1},variants:{type:e.JSON(),isOptional:!1},metrics:{type:e.JSON(),isOptional:!0},audiencePercentage:{type:e.Int_unsecure(),isOptional:!0},scheduledStartAt:{type:e.DateTime(),isOptional:!0},scheduledEndAt:{type:e.DateTime(),isOptional:!0},orgId:{type:e.String_unsecure(),isOptional:!0}}}),b=t({name:`StartExperimentInput`,description:`Input for starting an experiment`,fields:{experimentId:{type:e.String_unsecure(),isOptional:!1}}}),x=t({name:`StopExperimentInput`,description:`Input for stopping an experiment`,fields:{experimentId:{type:e.String_unsecure(),isOptional:!1},reason:{type:e.String_unsecure(),isOptional:!1},winningVariant:{type:e.String_unsecure(),isOptional:!0}}}),S=t({name:`GetExperimentInput`,description:`Input for getting an experiment`,fields:{experimentId:{type:e.String_unsecure(),isOptional:!1}}}),C=t({name:`SuccessOutput`,description:`Generic success output`,fields:{success:{type:e.Boolean(),isOptional:!1}}}),w=r({meta:{name:`flag.create`,version:1,stability:`stable`,owners:[...i],tags:[`feature-flags`,`create`],description:`Create a new feature flag.`,goal:`Define a new feature flag for toggling features.`,context:`Called when setting up a new feature flag.`},io:{input:l,output:a,errors:{KEY_ALREADY_EXISTS:{description:`Flag key already exists`,http:409,gqlCode:`FLAG_KEY_EXISTS`,when:`A flag with this key already exists`}}},policy:{auth:`admin`}}),T=r({meta:{name:`flag.update`,version:1,stability:`stable`,owners:[...i],tags:[`feature-flags`,`update`],description:`Update an existing feature flag.`,goal:`Modify flag configuration.`,context:`Called when adjusting flag settings.`},io:{input:u,output:a,errors:{FLAG_NOT_FOUND:{description:`Flag does not exist`,http:404,gqlCode:`FLAG_NOT_FOUND`,when:`Flag ID is invalid`}}},policy:{auth:`admin`}}),E=r({meta:{name:`flag.delete`,version:1,stability:`stable`,owners:[...i],tags:[`feature-flags`,`delete`],description:`Delete a feature flag.`,goal:`Remove a feature flag and all its rules.`,context:`Called when a flag is no longer needed.`},io:{input:d,output:C,errors:{FLAG_NOT_FOUND:{description:`Flag does not exist`,http:404,gqlCode:`FLAG_NOT_FOUND`,when:`Flag ID is invalid`},FLAG_HAS_ACTIVE_EXPERIMENT:{description:`Flag has an active experiment`,http:409,gqlCode:`FLAG_HAS_ACTIVE_EXPERIMENT`,when:`Cannot delete flag with running experiment`}}},policy:{auth:`admin`}}),D=r({meta:{name:`flag.toggle`,version:1,stability:`stable`,owners:[...i],tags:[`feature-flags`,`toggle`],description:`Toggle a feature flag status.`,goal:`Quickly enable or disable a feature.`,context:`Called when turning a feature on or off.`},io:{input:f,output:a,errors:{FLAG_NOT_FOUND:{description:`Flag does not exist`,http:404,gqlCode:`FLAG_NOT_FOUND`,when:`Flag ID is invalid`},INVALID_STATUS:{description:`Invalid status value`,http:400,gqlCode:`INVALID_STATUS`,when:`Status must be OFF, ON, or GRADUAL`}}},policy:{auth:`admin`}}),O=n({meta:{name:`flag.get`,version:1,stability:`stable`,owners:[...i],tags:[`feature-flags`,`get`],description:`Get a feature flag by key.`,goal:`Retrieve flag configuration.`,context:`Called to inspect flag details.`},io:{input:p,output:a,errors:{FLAG_NOT_FOUND:{description:`Flag does not exist`,http:404,gqlCode:`FLAG_NOT_FOUND`,when:`Flag key is invalid`}}},policy:{auth:`user`}}),k=n({meta:{name:`flag.list`,version:1,stability:`stable`,owners:[...i],tags:[`feature-flags`,`list`],description:`List all feature flags.`,goal:`View all configured flags.`,context:`Admin dashboard.`},io:{input:m,output:h},policy:{auth:`admin`}}),A=n({meta:{name:`flag.evaluate`,version:1,stability:`stable`,owners:[...i],tags:[`feature-flags`,`evaluate`],description:`Evaluate a feature flag for a given context.`,goal:`Determine if a feature should be enabled.`,context:`Called at runtime to check feature availability.`},io:{input:g,output:c,errors:{FLAG_NOT_FOUND:{description:`Flag does not exist`,http:404,gqlCode:`FLAG_NOT_FOUND`,when:`Flag key is invalid`}}},policy:{auth:`anonymous`}}),j=r({meta:{name:`flag.rule.create`,version:1,stability:`stable`,owners:[...i],tags:[`feature-flags`,`rule`,`create`],description:`Create a targeting rule for a flag.`,goal:`Add conditional targeting to a flag.`,context:`Called when setting up targeting.`},io:{input:_,output:o,errors:{FLAG_NOT_FOUND:{description:`Flag does not exist`,http:404,gqlCode:`FLAG_NOT_FOUND`,when:`Flag ID is invalid`},INVALID_OPERATOR:{description:`Invalid operator`,http:400,gqlCode:`INVALID_OPERATOR`,when:`Operator is not supported`}}},policy:{auth:`admin`}}),M=r({meta:{name:`flag.rule.delete`,version:1,stability:`stable`,owners:[...i],tags:[`feature-flags`,`rule`,`delete`],description:`Delete a targeting rule.`,goal:`Remove a targeting rule from a flag.`,context:`Called when removing targeting conditions.`},io:{input:v,output:C,errors:{RULE_NOT_FOUND:{description:`Rule does not exist`,http:404,gqlCode:`RULE_NOT_FOUND`,when:`Rule ID is invalid`}}},policy:{auth:`admin`}}),N=r({meta:{name:`experiment.create`,version:1,stability:`stable`,owners:[...i],tags:[`feature-flags`,`experiment`,`create`],description:`Create an A/B test experiment.`,goal:`Set up an experiment with variants.`,context:`Called when setting up A/B testing.`},io:{input:y,output:s,errors:{FLAG_NOT_FOUND:{description:`Flag does not exist`,http:404,gqlCode:`FLAG_NOT_FOUND`,when:`Flag ID is invalid`},EXPERIMENT_KEY_EXISTS:{description:`Experiment key already exists`,http:409,gqlCode:`EXPERIMENT_KEY_EXISTS`,when:`An experiment with this key already exists`},INVALID_VARIANTS:{description:`Invalid variant configuration`,http:400,gqlCode:`INVALID_VARIANTS`,when:`Variant percentages must sum to 100`}}},policy:{auth:`admin`}}),P=r({meta:{name:`experiment.start`,version:1,stability:`stable`,owners:[...i],tags:[`feature-flags`,`experiment`,`start`],description:`Start an experiment.`,goal:`Begin collecting data for an experiment.`,context:`Called when ready to run an A/B test.`},io:{input:b,output:s,errors:{EXPERIMENT_NOT_FOUND:{description:`Experiment does not exist`,http:404,gqlCode:`EXPERIMENT_NOT_FOUND`,when:`Experiment ID is invalid`},EXPERIMENT_ALREADY_RUNNING:{description:`Experiment is already running`,http:409,gqlCode:`EXPERIMENT_ALREADY_RUNNING`,when:`Cannot start an experiment that is already running`}}},policy:{auth:`admin`}}),F=r({meta:{name:`experiment.stop`,version:1,stability:`stable`,owners:[...i],tags:[`feature-flags`,`experiment`,`stop`],description:`Stop an experiment.`,goal:`End an experiment and optionally declare a winner.`,context:`Called when concluding an A/B test.`},io:{input:x,output:s,errors:{EXPERIMENT_NOT_FOUND:{description:`Experiment does not exist`,http:404,gqlCode:`EXPERIMENT_NOT_FOUND`,when:`Experiment ID is invalid`},EXPERIMENT_NOT_RUNNING:{description:`Experiment is not running`,http:409,gqlCode:`EXPERIMENT_NOT_RUNNING`,when:`Cannot stop an experiment that is not running`}}},policy:{auth:`admin`}}),I=n({meta:{name:`experiment.get`,version:1,stability:`stable`,owners:[...i],tags:[`feature-flags`,`experiment`,`get`],description:`Get experiment details.`,goal:`View experiment configuration and results.`,context:`Called to inspect experiment status.`},io:{input:S,output:s,errors:{EXPERIMENT_NOT_FOUND:{description:`Experiment does not exist`,http:404,gqlCode:`EXPERIMENT_NOT_FOUND`,when:`Experiment ID is invalid`}}},policy:{auth:`user`}});export{N as CreateExperimentContract,w as CreateFlagContract,j as CreateRuleContract,E as DeleteFlagContract,M as DeleteRuleContract,A as EvaluateFlagContract,c as EvaluationResultModel,s as ExperimentModel,a as FeatureFlagModel,I as GetExperimentContract,O as GetFlagContract,k as ListFlagsContract,P as StartExperimentContract,F as StopExperimentContract,o as TargetingRuleModel,D as ToggleFlagContract,T as UpdateFlagContract};
1
+ import{ScalarTypeEnum as e,defineSchemaModel as t}from"@lssm/lib.schema";import{defineCommand as n,defineQuery as r}from"@lssm/lib.contracts";const i=[`platform.feature-flags`],a=t({name:`FeatureFlag`,description:`Represents a feature flag`,fields:{id:{type:e.String_unsecure(),isOptional:!1},key:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!1},description:{type:e.String_unsecure(),isOptional:!0},status:{type:e.String_unsecure(),isOptional:!1},defaultValue:{type:e.Boolean(),isOptional:!1},variants:{type:e.JSON(),isOptional:!0},orgId:{type:e.String_unsecure(),isOptional:!0},tags:{type:e.JSON(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1},updatedAt:{type:e.DateTime(),isOptional:!1}}}),o=t({name:`TargetingRule`,description:`Represents a targeting rule`,fields:{id:{type:e.String_unsecure(),isOptional:!1},flagId:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!0},priority:{type:e.Int_unsecure(),isOptional:!1},enabled:{type:e.Boolean(),isOptional:!1},attribute:{type:e.String_unsecure(),isOptional:!1},operator:{type:e.String_unsecure(),isOptional:!1},value:{type:e.JSON(),isOptional:!1},rolloutPercentage:{type:e.Int_unsecure(),isOptional:!0},serveValue:{type:e.Boolean(),isOptional:!0},serveVariant:{type:e.String_unsecure(),isOptional:!0}}}),s=t({name:`Experiment`,description:`Represents an experiment`,fields:{id:{type:e.String_unsecure(),isOptional:!1},key:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!1},description:{type:e.String_unsecure(),isOptional:!0},hypothesis:{type:e.String_unsecure(),isOptional:!0},flagId:{type:e.String_unsecure(),isOptional:!1},status:{type:e.String_unsecure(),isOptional:!1},variants:{type:e.JSON(),isOptional:!1},metrics:{type:e.JSON(),isOptional:!0},audiencePercentage:{type:e.Int_unsecure(),isOptional:!1},startedAt:{type:e.DateTime(),isOptional:!0},endedAt:{type:e.DateTime(),isOptional:!0},winningVariant:{type:e.String_unsecure(),isOptional:!0},results:{type:e.JSON(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1}}}),c=t({name:`EvaluationResult`,description:`Result of flag evaluation`,fields:{enabled:{type:e.Boolean(),isOptional:!1},variant:{type:e.String_unsecure(),isOptional:!0},reason:{type:e.String_unsecure(),isOptional:!1},ruleId:{type:e.String_unsecure(),isOptional:!0},experimentId:{type:e.String_unsecure(),isOptional:!0}}}),l=t({name:`CreateFlagInput`,description:`Input for creating a feature flag`,fields:{key:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!1},description:{type:e.String_unsecure(),isOptional:!0},defaultValue:{type:e.Boolean(),isOptional:!0},variants:{type:e.JSON(),isOptional:!0},orgId:{type:e.String_unsecure(),isOptional:!0},tags:{type:e.JSON(),isOptional:!0}}}),u=t({name:`UpdateFlagInput`,description:`Input for updating a feature flag`,fields:{flagId:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!0},description:{type:e.String_unsecure(),isOptional:!0},defaultValue:{type:e.Boolean(),isOptional:!0},variants:{type:e.JSON(),isOptional:!0},tags:{type:e.JSON(),isOptional:!0}}}),d=t({name:`DeleteFlagInput`,description:`Input for deleting a feature flag`,fields:{flagId:{type:e.String_unsecure(),isOptional:!1}}}),f=t({name:`ToggleFlagInput`,description:`Input for toggling a feature flag`,fields:{flagId:{type:e.String_unsecure(),isOptional:!1},status:{type:e.String_unsecure(),isOptional:!1}}}),p=t({name:`GetFlagInput`,description:`Input for getting a feature flag`,fields:{key:{type:e.String_unsecure(),isOptional:!1},orgId:{type:e.String_unsecure(),isOptional:!0}}}),m=t({name:`ListFlagsInput`,description:`Input for listing feature flags`,fields:{orgId:{type:e.String_unsecure(),isOptional:!0},status:{type:e.String_unsecure(),isOptional:!0},tags:{type:e.JSON(),isOptional:!0},limit:{type:e.Int_unsecure(),isOptional:!0},offset:{type:e.Int_unsecure(),isOptional:!0}}}),h=t({name:`ListFlagsOutput`,description:`Output for listing feature flags`,fields:{flags:{type:a,isArray:!0,isOptional:!1},total:{type:e.Int_unsecure(),isOptional:!1}}}),g=t({name:`EvaluateFlagInput`,description:`Input for evaluating a feature flag`,fields:{key:{type:e.String_unsecure(),isOptional:!1},context:{type:e.JSON(),isOptional:!1}}}),_=t({name:`CreateRuleInput`,description:`Input for creating a targeting rule`,fields:{flagId:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!0},priority:{type:e.Int_unsecure(),isOptional:!0},attribute:{type:e.String_unsecure(),isOptional:!1},operator:{type:e.String_unsecure(),isOptional:!1},value:{type:e.JSON(),isOptional:!1},rolloutPercentage:{type:e.Int_unsecure(),isOptional:!0},serveValue:{type:e.Boolean(),isOptional:!0},serveVariant:{type:e.String_unsecure(),isOptional:!0}}}),v=t({name:`DeleteRuleInput`,description:`Input for deleting a targeting rule`,fields:{ruleId:{type:e.String_unsecure(),isOptional:!1}}}),y=t({name:`CreateExperimentInput`,description:`Input for creating an experiment`,fields:{key:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!1},description:{type:e.String_unsecure(),isOptional:!0},hypothesis:{type:e.String_unsecure(),isOptional:!0},flagId:{type:e.String_unsecure(),isOptional:!1},variants:{type:e.JSON(),isOptional:!1},metrics:{type:e.JSON(),isOptional:!0},audiencePercentage:{type:e.Int_unsecure(),isOptional:!0},scheduledStartAt:{type:e.DateTime(),isOptional:!0},scheduledEndAt:{type:e.DateTime(),isOptional:!0},orgId:{type:e.String_unsecure(),isOptional:!0}}}),b=t({name:`StartExperimentInput`,description:`Input for starting an experiment`,fields:{experimentId:{type:e.String_unsecure(),isOptional:!1}}}),x=t({name:`StopExperimentInput`,description:`Input for stopping an experiment`,fields:{experimentId:{type:e.String_unsecure(),isOptional:!1},reason:{type:e.String_unsecure(),isOptional:!1},winningVariant:{type:e.String_unsecure(),isOptional:!0}}}),S=t({name:`GetExperimentInput`,description:`Input for getting an experiment`,fields:{experimentId:{type:e.String_unsecure(),isOptional:!1}}}),C=t({name:`SuccessOutput`,description:`Generic success output`,fields:{success:{type:e.Boolean(),isOptional:!1}}}),w=n({meta:{name:`flag.create`,version:1,stability:`stable`,owners:[...i],tags:[`feature-flags`,`create`],description:`Create a new feature flag.`,goal:`Define a new feature flag for toggling features.`,context:`Called when setting up a new feature flag.`},io:{input:l,output:a,errors:{KEY_ALREADY_EXISTS:{description:`Flag key already exists`,http:409,gqlCode:`FLAG_KEY_EXISTS`,when:`A flag with this key already exists`}}},policy:{auth:`admin`}}),T=n({meta:{name:`flag.update`,version:1,stability:`stable`,owners:[...i],tags:[`feature-flags`,`update`],description:`Update an existing feature flag.`,goal:`Modify flag configuration.`,context:`Called when adjusting flag settings.`},io:{input:u,output:a,errors:{FLAG_NOT_FOUND:{description:`Flag does not exist`,http:404,gqlCode:`FLAG_NOT_FOUND`,when:`Flag ID is invalid`}}},policy:{auth:`admin`}}),E=n({meta:{name:`flag.delete`,version:1,stability:`stable`,owners:[...i],tags:[`feature-flags`,`delete`],description:`Delete a feature flag.`,goal:`Remove a feature flag and all its rules.`,context:`Called when a flag is no longer needed.`},io:{input:d,output:C,errors:{FLAG_NOT_FOUND:{description:`Flag does not exist`,http:404,gqlCode:`FLAG_NOT_FOUND`,when:`Flag ID is invalid`},FLAG_HAS_ACTIVE_EXPERIMENT:{description:`Flag has an active experiment`,http:409,gqlCode:`FLAG_HAS_ACTIVE_EXPERIMENT`,when:`Cannot delete flag with running experiment`}}},policy:{auth:`admin`}}),D=n({meta:{name:`flag.toggle`,version:1,stability:`stable`,owners:[...i],tags:[`feature-flags`,`toggle`],description:`Toggle a feature flag status.`,goal:`Quickly enable or disable a feature.`,context:`Called when turning a feature on or off.`},io:{input:f,output:a,errors:{FLAG_NOT_FOUND:{description:`Flag does not exist`,http:404,gqlCode:`FLAG_NOT_FOUND`,when:`Flag ID is invalid`},INVALID_STATUS:{description:`Invalid status value`,http:400,gqlCode:`INVALID_STATUS`,when:`Status must be OFF, ON, or GRADUAL`}}},policy:{auth:`admin`}}),O=r({meta:{name:`flag.get`,version:1,stability:`stable`,owners:[...i],tags:[`feature-flags`,`get`],description:`Get a feature flag by key.`,goal:`Retrieve flag configuration.`,context:`Called to inspect flag details.`},io:{input:p,output:a,errors:{FLAG_NOT_FOUND:{description:`Flag does not exist`,http:404,gqlCode:`FLAG_NOT_FOUND`,when:`Flag key is invalid`}}},policy:{auth:`user`}}),k=r({meta:{name:`flag.list`,version:1,stability:`stable`,owners:[...i],tags:[`feature-flags`,`list`],description:`List all feature flags.`,goal:`View all configured flags.`,context:`Admin dashboard.`},io:{input:m,output:h},policy:{auth:`admin`}}),A=r({meta:{name:`flag.evaluate`,version:1,stability:`stable`,owners:[...i],tags:[`feature-flags`,`evaluate`],description:`Evaluate a feature flag for a given context.`,goal:`Determine if a feature should be enabled.`,context:`Called at runtime to check feature availability.`},io:{input:g,output:c,errors:{FLAG_NOT_FOUND:{description:`Flag does not exist`,http:404,gqlCode:`FLAG_NOT_FOUND`,when:`Flag key is invalid`}}},policy:{auth:`anonymous`}}),j=n({meta:{name:`flag.rule.create`,version:1,stability:`stable`,owners:[...i],tags:[`feature-flags`,`rule`,`create`],description:`Create a targeting rule for a flag.`,goal:`Add conditional targeting to a flag.`,context:`Called when setting up targeting.`},io:{input:_,output:o,errors:{FLAG_NOT_FOUND:{description:`Flag does not exist`,http:404,gqlCode:`FLAG_NOT_FOUND`,when:`Flag ID is invalid`},INVALID_OPERATOR:{description:`Invalid operator`,http:400,gqlCode:`INVALID_OPERATOR`,when:`Operator is not supported`}}},policy:{auth:`admin`}}),M=n({meta:{name:`flag.rule.delete`,version:1,stability:`stable`,owners:[...i],tags:[`feature-flags`,`rule`,`delete`],description:`Delete a targeting rule.`,goal:`Remove a targeting rule from a flag.`,context:`Called when removing targeting conditions.`},io:{input:v,output:C,errors:{RULE_NOT_FOUND:{description:`Rule does not exist`,http:404,gqlCode:`RULE_NOT_FOUND`,when:`Rule ID is invalid`}}},policy:{auth:`admin`}}),N=n({meta:{name:`experiment.create`,version:1,stability:`stable`,owners:[...i],tags:[`feature-flags`,`experiment`,`create`],description:`Create an A/B test experiment.`,goal:`Set up an experiment with variants.`,context:`Called when setting up A/B testing.`},io:{input:y,output:s,errors:{FLAG_NOT_FOUND:{description:`Flag does not exist`,http:404,gqlCode:`FLAG_NOT_FOUND`,when:`Flag ID is invalid`},EXPERIMENT_KEY_EXISTS:{description:`Experiment key already exists`,http:409,gqlCode:`EXPERIMENT_KEY_EXISTS`,when:`An experiment with this key already exists`},INVALID_VARIANTS:{description:`Invalid variant configuration`,http:400,gqlCode:`INVALID_VARIANTS`,when:`Variant percentages must sum to 100`}}},policy:{auth:`admin`}}),P=n({meta:{name:`experiment.start`,version:1,stability:`stable`,owners:[...i],tags:[`feature-flags`,`experiment`,`start`],description:`Start an experiment.`,goal:`Begin collecting data for an experiment.`,context:`Called when ready to run an A/B test.`},io:{input:b,output:s,errors:{EXPERIMENT_NOT_FOUND:{description:`Experiment does not exist`,http:404,gqlCode:`EXPERIMENT_NOT_FOUND`,when:`Experiment ID is invalid`},EXPERIMENT_ALREADY_RUNNING:{description:`Experiment is already running`,http:409,gqlCode:`EXPERIMENT_ALREADY_RUNNING`,when:`Cannot start an experiment that is already running`}}},policy:{auth:`admin`}}),F=n({meta:{name:`experiment.stop`,version:1,stability:`stable`,owners:[...i],tags:[`feature-flags`,`experiment`,`stop`],description:`Stop an experiment.`,goal:`End an experiment and optionally declare a winner.`,context:`Called when concluding an A/B test.`},io:{input:x,output:s,errors:{EXPERIMENT_NOT_FOUND:{description:`Experiment does not exist`,http:404,gqlCode:`EXPERIMENT_NOT_FOUND`,when:`Experiment ID is invalid`},EXPERIMENT_NOT_RUNNING:{description:`Experiment is not running`,http:409,gqlCode:`EXPERIMENT_NOT_RUNNING`,when:`Cannot stop an experiment that is not running`}}},policy:{auth:`admin`}}),I=r({meta:{name:`experiment.get`,version:1,stability:`stable`,owners:[...i],tags:[`feature-flags`,`experiment`,`get`],description:`Get experiment details.`,goal:`View experiment configuration and results.`,context:`Called to inspect experiment status.`},io:{input:S,output:s,errors:{EXPERIMENT_NOT_FOUND:{description:`Experiment does not exist`,http:404,gqlCode:`EXPERIMENT_NOT_FOUND`,when:`Experiment ID is invalid`}}},policy:{auth:`user`}});export{N as CreateExperimentContract,w as CreateFlagContract,j as CreateRuleContract,E as DeleteFlagContract,M as DeleteRuleContract,A as EvaluateFlagContract,c as EvaluationResultModel,s as ExperimentModel,a as FeatureFlagModel,I as GetExperimentContract,O as GetFlagContract,k as ListFlagsContract,P as StartExperimentContract,F as StopExperimentContract,o as TargetingRuleModel,D as ToggleFlagContract,T as UpdateFlagContract};
@@ -1 +1 @@
1
- import{i as e,n as t,r as n,t as r}from"../schema/dist/entity/defineEntity.js";import"../schema/dist/index.js";const i=t({name:`FlagStatus`,values:[`OFF`,`ON`,`GRADUAL`],schema:`lssm_feature_flags`,description:`Status of a feature flag.`}),a=t({name:`RuleOperator`,values:[`EQ`,`NEQ`,`IN`,`NIN`,`CONTAINS`,`NOT_CONTAINS`,`GT`,`GTE`,`LT`,`LTE`,`PERCENTAGE`],schema:`lssm_feature_flags`,description:`Operator for targeting rule conditions.`}),o=t({name:`ExperimentStatus`,values:[`DRAFT`,`RUNNING`,`PAUSED`,`COMPLETED`,`CANCELLED`],schema:`lssm_feature_flags`,description:`Status of an experiment.`}),s=r({name:`FeatureFlag`,description:`A feature flag for controlling feature availability.`,schema:`lssm_feature_flags`,map:`feature_flag`,fields:{id:n.id({description:`Unique flag identifier`}),key:n.string({isUnique:!0,description:`Flag key (e.g., new_dashboard)`}),name:n.string({description:`Human-readable name`}),description:n.string({isOptional:!0,description:`Description of the flag`}),status:n.enum(`FlagStatus`,{default:`OFF`,description:`Flag status`}),defaultValue:n.boolean({default:!1,description:`Default value when no rules match`}),variants:n.json({isOptional:!0,description:`Variant definitions for multivariate flags`}),orgId:n.string({isOptional:!0,description:`Organization scope (null = global)`}),tags:n.json({isOptional:!0,description:`Tags for categorization`}),metadata:n.json({isOptional:!0,description:`Additional metadata`}),createdAt:n.createdAt(),updatedAt:n.updatedAt(),targetingRules:n.hasMany(`FlagTargetingRule`),experiments:n.hasMany(`Experiment`),evaluations:n.hasMany(`FlagEvaluation`)},indexes:[e.on([`orgId`,`key`]),e.on([`status`])],enums:[i]}),c=r({name:`FlagTargetingRule`,description:`A targeting rule for conditional flag evaluation.`,schema:`lssm_feature_flags`,map:`flag_targeting_rule`,fields:{id:n.id({description:`Unique rule identifier`}),flagId:n.foreignKey({description:`Parent feature flag`}),name:n.string({isOptional:!0,description:`Rule name for debugging`}),priority:n.int({default:0,description:`Rule priority (lower = higher priority)`}),enabled:n.boolean({default:!0,description:`Whether rule is active`}),attribute:n.string({description:`Target attribute (userId, orgId, plan, segment, etc.)`}),operator:n.enum(`RuleOperator`,{description:`Comparison operator`}),value:n.json({description:`Target value(s)`}),rolloutPercentage:n.int({isOptional:!0,description:`Percentage for gradual rollout (0-100)`}),serveValue:n.boolean({isOptional:!0,description:`Boolean value to serve`}),serveVariant:n.string({isOptional:!0,description:`Variant key to serve (for multivariate)`}),createdAt:n.createdAt(),updatedAt:n.updatedAt(),flag:n.belongsTo(`FeatureFlag`,[`flagId`],[`id`],{onDelete:`Cascade`})},indexes:[e.on([`flagId`,`priority`]),e.on([`attribute`])],enums:[a]}),l=r({name:`Experiment`,description:`An A/B test experiment.`,schema:`lssm_feature_flags`,map:`experiment`,fields:{id:n.id({description:`Unique experiment identifier`}),key:n.string({isUnique:!0,description:`Experiment key`}),name:n.string({description:`Human-readable name`}),description:n.string({isOptional:!0,description:`Experiment description`}),hypothesis:n.string({isOptional:!0,description:`Experiment hypothesis`}),flagId:n.foreignKey({description:`Associated feature flag`}),status:n.enum(`ExperimentStatus`,{default:`DRAFT`,description:`Experiment status`}),variants:n.json({description:`Variant definitions with split ratios`}),metrics:n.json({isOptional:!0,description:`Metrics to track`}),audiencePercentage:n.int({default:100,description:`Percentage of audience to include`}),audienceFilter:n.json({isOptional:!0,description:`Audience filter criteria`}),scheduledStartAt:n.dateTime({isOptional:!0,description:`Scheduled start time`}),scheduledEndAt:n.dateTime({isOptional:!0,description:`Scheduled end time`}),startedAt:n.dateTime({isOptional:!0,description:`Actual start time`}),endedAt:n.dateTime({isOptional:!0,description:`Actual end time`}),winningVariant:n.string({isOptional:!0,description:`Declared winning variant`}),results:n.json({isOptional:!0,description:`Experiment results summary`}),orgId:n.string({isOptional:!0,description:`Organization scope`}),createdAt:n.createdAt(),updatedAt:n.updatedAt(),flag:n.belongsTo(`FeatureFlag`,[`flagId`],[`id`],{onDelete:`Cascade`}),assignments:n.hasMany(`ExperimentAssignment`)},indexes:[e.on([`status`]),e.on([`orgId`,`status`]),e.on([`flagId`])],enums:[o]}),u=r({name:`ExperimentAssignment`,description:`Tracks experiment variant assignments.`,schema:`lssm_feature_flags`,map:`experiment_assignment`,fields:{id:n.id({description:`Unique assignment identifier`}),experimentId:n.foreignKey({description:`Parent experiment`}),subjectType:n.string({description:`Subject type (user, org, session)`}),subjectId:n.string({description:`Subject identifier`}),variant:n.string({description:`Assigned variant key`}),bucket:n.int({description:`Hash bucket (0-99)`}),context:n.json({isOptional:!0,description:`Context at assignment time`}),assignedAt:n.dateTime({description:`Assignment timestamp`}),experiment:n.belongsTo(`Experiment`,[`experimentId`],[`id`],{onDelete:`Cascade`})},indexes:[e.unique([`experimentId`,`subjectType`,`subjectId`],{name:`experiment_assignment_unique`}),e.on([`subjectType`,`subjectId`])]}),d=r({name:`FlagEvaluation`,description:`Log of flag evaluations for debugging and analytics.`,schema:`lssm_feature_flags`,map:`flag_evaluation`,fields:{id:n.id({description:`Unique evaluation identifier`}),flagId:n.foreignKey({description:`Evaluated flag`}),flagKey:n.string({description:`Flag key (denormalized for queries)`}),subjectType:n.string({description:`Subject type (user, org, anonymous)`}),subjectId:n.string({description:`Subject identifier`}),result:n.boolean({description:`Evaluation result`}),variant:n.string({isOptional:!0,description:`Served variant (for multivariate)`}),matchedRuleId:n.string({isOptional:!0,description:`Rule that matched (if any)`}),reason:n.string({description:`Evaluation reason (default, rule, experiment, etc.)`}),context:n.json({isOptional:!0,description:`Evaluation context`}),evaluatedAt:n.dateTime({description:`Evaluation timestamp`}),flag:n.belongsTo(`FeatureFlag`,[`flagId`],[`id`],{onDelete:`Cascade`})},indexes:[e.on([`flagKey`,`evaluatedAt`]),e.on([`subjectType`,`subjectId`,`evaluatedAt`]),e.on([`flagId`,`evaluatedAt`])]}),f=[s,c,l,u,d],p={moduleId:`@lssm/lib.feature-flags`,entities:f,enums:[i,a,o]};export{u as ExperimentAssignmentEntity,l as ExperimentEntity,o as ExperimentStatusEnum,s as FeatureFlagEntity,d as FlagEvaluationEntity,i as FlagStatusEnum,c as FlagTargetingRuleEntity,a as RuleOperatorEnum,f as featureFlagEntities,p as featureFlagsSchemaContribution};
1
+ import{defineEntity as e,defineEntityEnum as t,field as n,index as r}from"@lssm/lib.schema";const i=t({name:`FlagStatus`,values:[`OFF`,`ON`,`GRADUAL`],schema:`lssm_feature_flags`,description:`Status of a feature flag.`}),a=t({name:`RuleOperator`,values:[`EQ`,`NEQ`,`IN`,`NIN`,`CONTAINS`,`NOT_CONTAINS`,`GT`,`GTE`,`LT`,`LTE`,`PERCENTAGE`],schema:`lssm_feature_flags`,description:`Operator for targeting rule conditions.`}),o=t({name:`ExperimentStatus`,values:[`DRAFT`,`RUNNING`,`PAUSED`,`COMPLETED`,`CANCELLED`],schema:`lssm_feature_flags`,description:`Status of an experiment.`}),s=e({name:`FeatureFlag`,description:`A feature flag for controlling feature availability.`,schema:`lssm_feature_flags`,map:`feature_flag`,fields:{id:n.id({description:`Unique flag identifier`}),key:n.string({isUnique:!0,description:`Flag key (e.g., new_dashboard)`}),name:n.string({description:`Human-readable name`}),description:n.string({isOptional:!0,description:`Description of the flag`}),status:n.enum(`FlagStatus`,{default:`OFF`,description:`Flag status`}),defaultValue:n.boolean({default:!1,description:`Default value when no rules match`}),variants:n.json({isOptional:!0,description:`Variant definitions for multivariate flags`}),orgId:n.string({isOptional:!0,description:`Organization scope (null = global)`}),tags:n.json({isOptional:!0,description:`Tags for categorization`}),metadata:n.json({isOptional:!0,description:`Additional metadata`}),createdAt:n.createdAt(),updatedAt:n.updatedAt(),targetingRules:n.hasMany(`FlagTargetingRule`),experiments:n.hasMany(`Experiment`),evaluations:n.hasMany(`FlagEvaluation`)},indexes:[r.on([`orgId`,`key`]),r.on([`status`])],enums:[i]}),c=e({name:`FlagTargetingRule`,description:`A targeting rule for conditional flag evaluation.`,schema:`lssm_feature_flags`,map:`flag_targeting_rule`,fields:{id:n.id({description:`Unique rule identifier`}),flagId:n.foreignKey({description:`Parent feature flag`}),name:n.string({isOptional:!0,description:`Rule name for debugging`}),priority:n.int({default:0,description:`Rule priority (lower = higher priority)`}),enabled:n.boolean({default:!0,description:`Whether rule is active`}),attribute:n.string({description:`Target attribute (userId, orgId, plan, segment, etc.)`}),operator:n.enum(`RuleOperator`,{description:`Comparison operator`}),value:n.json({description:`Target value(s)`}),rolloutPercentage:n.int({isOptional:!0,description:`Percentage for gradual rollout (0-100)`}),serveValue:n.boolean({isOptional:!0,description:`Boolean value to serve`}),serveVariant:n.string({isOptional:!0,description:`Variant key to serve (for multivariate)`}),createdAt:n.createdAt(),updatedAt:n.updatedAt(),flag:n.belongsTo(`FeatureFlag`,[`flagId`],[`id`],{onDelete:`Cascade`})},indexes:[r.on([`flagId`,`priority`]),r.on([`attribute`])],enums:[a]}),l=e({name:`Experiment`,description:`An A/B test experiment.`,schema:`lssm_feature_flags`,map:`experiment`,fields:{id:n.id({description:`Unique experiment identifier`}),key:n.string({isUnique:!0,description:`Experiment key`}),name:n.string({description:`Human-readable name`}),description:n.string({isOptional:!0,description:`Experiment description`}),hypothesis:n.string({isOptional:!0,description:`Experiment hypothesis`}),flagId:n.foreignKey({description:`Associated feature flag`}),status:n.enum(`ExperimentStatus`,{default:`DRAFT`,description:`Experiment status`}),variants:n.json({description:`Variant definitions with split ratios`}),metrics:n.json({isOptional:!0,description:`Metrics to track`}),audiencePercentage:n.int({default:100,description:`Percentage of audience to include`}),audienceFilter:n.json({isOptional:!0,description:`Audience filter criteria`}),scheduledStartAt:n.dateTime({isOptional:!0,description:`Scheduled start time`}),scheduledEndAt:n.dateTime({isOptional:!0,description:`Scheduled end time`}),startedAt:n.dateTime({isOptional:!0,description:`Actual start time`}),endedAt:n.dateTime({isOptional:!0,description:`Actual end time`}),winningVariant:n.string({isOptional:!0,description:`Declared winning variant`}),results:n.json({isOptional:!0,description:`Experiment results summary`}),orgId:n.string({isOptional:!0,description:`Organization scope`}),createdAt:n.createdAt(),updatedAt:n.updatedAt(),flag:n.belongsTo(`FeatureFlag`,[`flagId`],[`id`],{onDelete:`Cascade`}),assignments:n.hasMany(`ExperimentAssignment`)},indexes:[r.on([`status`]),r.on([`orgId`,`status`]),r.on([`flagId`])],enums:[o]}),u=e({name:`ExperimentAssignment`,description:`Tracks experiment variant assignments.`,schema:`lssm_feature_flags`,map:`experiment_assignment`,fields:{id:n.id({description:`Unique assignment identifier`}),experimentId:n.foreignKey({description:`Parent experiment`}),subjectType:n.string({description:`Subject type (user, org, session)`}),subjectId:n.string({description:`Subject identifier`}),variant:n.string({description:`Assigned variant key`}),bucket:n.int({description:`Hash bucket (0-99)`}),context:n.json({isOptional:!0,description:`Context at assignment time`}),assignedAt:n.dateTime({description:`Assignment timestamp`}),experiment:n.belongsTo(`Experiment`,[`experimentId`],[`id`],{onDelete:`Cascade`})},indexes:[r.unique([`experimentId`,`subjectType`,`subjectId`],{name:`experiment_assignment_unique`}),r.on([`subjectType`,`subjectId`])]}),d=e({name:`FlagEvaluation`,description:`Log of flag evaluations for debugging and analytics.`,schema:`lssm_feature_flags`,map:`flag_evaluation`,fields:{id:n.id({description:`Unique evaluation identifier`}),flagId:n.foreignKey({description:`Evaluated flag`}),flagKey:n.string({description:`Flag key (denormalized for queries)`}),subjectType:n.string({description:`Subject type (user, org, anonymous)`}),subjectId:n.string({description:`Subject identifier`}),result:n.boolean({description:`Evaluation result`}),variant:n.string({isOptional:!0,description:`Served variant (for multivariate)`}),matchedRuleId:n.string({isOptional:!0,description:`Rule that matched (if any)`}),reason:n.string({description:`Evaluation reason (default, rule, experiment, etc.)`}),context:n.json({isOptional:!0,description:`Evaluation context`}),evaluatedAt:n.dateTime({description:`Evaluation timestamp`}),flag:n.belongsTo(`FeatureFlag`,[`flagId`],[`id`],{onDelete:`Cascade`})},indexes:[r.on([`flagKey`,`evaluatedAt`]),r.on([`subjectType`,`subjectId`,`evaluatedAt`]),r.on([`flagId`,`evaluatedAt`])]}),f=[s,c,l,u,d],p={moduleId:`@lssm/lib.feature-flags`,entities:f,enums:[i,a,o]};export{u as ExperimentAssignmentEntity,l as ExperimentEntity,o as ExperimentStatusEnum,s as FeatureFlagEntity,d as FlagEvaluationEntity,i as FlagStatusEnum,c as FlagTargetingRuleEntity,a as RuleOperatorEnum,f as featureFlagEntities,p as featureFlagsSchemaContribution};
package/dist/events.js CHANGED
@@ -1 +1 @@
1
- import{l as e}from"./schema/dist/ScalarTypeEnum.js";import{n as t}from"./schema/dist/SchemaModel.js";import"./schema/dist/index.js";import{e as n}from"./contracts/dist/events.js";import"./contracts/dist/index.js";const r=t({name:`FlagCreatedEventPayload`,description:`Payload when a feature flag is created`,fields:{flagId:{type:e.String_unsecure(),isOptional:!1},key:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!1},status:{type:e.String_unsecure(),isOptional:!1},orgId:{type:e.String_unsecure(),isOptional:!0},createdBy:{type:e.String_unsecure(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1}}}),i=t({name:`FlagUpdatedEventPayload`,description:`Payload when a feature flag is updated`,fields:{flagId:{type:e.String_unsecure(),isOptional:!1},key:{type:e.String_unsecure(),isOptional:!1},changes:{type:e.JSON(),isOptional:!1},updatedBy:{type:e.String_unsecure(),isOptional:!0},updatedAt:{type:e.DateTime(),isOptional:!1}}}),a=t({name:`FlagDeletedEventPayload`,description:`Payload when a feature flag is deleted`,fields:{flagId:{type:e.String_unsecure(),isOptional:!1},key:{type:e.String_unsecure(),isOptional:!1},deletedBy:{type:e.String_unsecure(),isOptional:!0},deletedAt:{type:e.DateTime(),isOptional:!1}}}),o=t({name:`FlagToggledEventPayload`,description:`Payload when a feature flag status is toggled`,fields:{flagId:{type:e.String_unsecure(),isOptional:!1},key:{type:e.String_unsecure(),isOptional:!1},previousStatus:{type:e.String_unsecure(),isOptional:!1},newStatus:{type:e.String_unsecure(),isOptional:!1},toggledBy:{type:e.String_unsecure(),isOptional:!0},toggledAt:{type:e.DateTime(),isOptional:!1}}}),s=t({name:`RuleCreatedEventPayload`,description:`Payload when a targeting rule is created`,fields:{ruleId:{type:e.String_unsecure(),isOptional:!1},flagId:{type:e.String_unsecure(),isOptional:!1},flagKey:{type:e.String_unsecure(),isOptional:!1},attribute:{type:e.String_unsecure(),isOptional:!1},operator:{type:e.String_unsecure(),isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1}}}),c=t({name:`RuleDeletedEventPayload`,description:`Payload when a targeting rule is deleted`,fields:{ruleId:{type:e.String_unsecure(),isOptional:!1},flagId:{type:e.String_unsecure(),isOptional:!1},flagKey:{type:e.String_unsecure(),isOptional:!1},deletedAt:{type:e.DateTime(),isOptional:!1}}}),l=t({name:`ExperimentCreatedEventPayload`,description:`Payload when an experiment is created`,fields:{experimentId:{type:e.String_unsecure(),isOptional:!1},key:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!1},flagId:{type:e.String_unsecure(),isOptional:!1},variants:{type:e.JSON(),isOptional:!1},createdBy:{type:e.String_unsecure(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1}}}),u=t({name:`ExperimentStartedEventPayload`,description:`Payload when an experiment starts`,fields:{experimentId:{type:e.String_unsecure(),isOptional:!1},key:{type:e.String_unsecure(),isOptional:!1},flagId:{type:e.String_unsecure(),isOptional:!1},variants:{type:e.JSON(),isOptional:!1},audiencePercentage:{type:e.Int_unsecure(),isOptional:!1},startedBy:{type:e.String_unsecure(),isOptional:!0},startedAt:{type:e.DateTime(),isOptional:!1}}}),d=t({name:`ExperimentStoppedEventPayload`,description:`Payload when an experiment stops`,fields:{experimentId:{type:e.String_unsecure(),isOptional:!1},key:{type:e.String_unsecure(),isOptional:!1},reason:{type:e.String_unsecure(),isOptional:!1},winningVariant:{type:e.String_unsecure(),isOptional:!0},stoppedBy:{type:e.String_unsecure(),isOptional:!0},stoppedAt:{type:e.DateTime(),isOptional:!1}}}),f=t({name:`FlagEvaluatedEventPayload`,description:`Payload when a flag is evaluated (for analytics)`,fields:{flagId:{type:e.String_unsecure(),isOptional:!1},flagKey:{type:e.String_unsecure(),isOptional:!1},subjectType:{type:e.String_unsecure(),isOptional:!1},subjectId:{type:e.String_unsecure(),isOptional:!1},result:{type:e.Boolean(),isOptional:!1},variant:{type:e.String_unsecure(),isOptional:!0},reason:{type:e.String_unsecure(),isOptional:!1},evaluatedAt:{type:e.DateTime(),isOptional:!1}}}),p=t({name:`VariantAssignedEventPayload`,description:`Payload when a subject is assigned to an experiment variant`,fields:{experimentId:{type:e.String_unsecure(),isOptional:!1},experimentKey:{type:e.String_unsecure(),isOptional:!1},subjectType:{type:e.String_unsecure(),isOptional:!1},subjectId:{type:e.String_unsecure(),isOptional:!1},variant:{type:e.String_unsecure(),isOptional:!1},bucket:{type:e.Int_unsecure(),isOptional:!1},assignedAt:{type:e.DateTime(),isOptional:!1}}}),m=n({name:`flag.created`,version:1,description:`A feature flag has been created.`,payload:r}),h=n({name:`flag.updated`,version:1,description:`A feature flag has been updated.`,payload:i}),g=n({name:`flag.deleted`,version:1,description:`A feature flag has been deleted.`,payload:a}),_=n({name:`flag.toggled`,version:1,description:`A feature flag status has been toggled.`,payload:o}),v=n({name:`flag.rule_created`,version:1,description:`A targeting rule has been created.`,payload:s}),y=n({name:`flag.rule_deleted`,version:1,description:`A targeting rule has been deleted.`,payload:c}),b=n({name:`experiment.created`,version:1,description:`An experiment has been created.`,payload:l}),x=n({name:`experiment.started`,version:1,description:`An experiment has started.`,payload:u}),S=n({name:`experiment.stopped`,version:1,description:`An experiment has stopped.`,payload:d}),C=n({name:`flag.evaluated`,version:1,description:`A feature flag has been evaluated.`,payload:f}),w=n({name:`experiment.variant_assigned`,version:1,description:`A subject has been assigned to an experiment variant.`,payload:p}),T={FlagCreatedEvent:m,FlagUpdatedEvent:h,FlagDeletedEvent:g,FlagToggledEvent:_,RuleCreatedEvent:v,RuleDeletedEvent:y,ExperimentCreatedEvent:b,ExperimentStartedEvent:x,ExperimentStoppedEvent:S,FlagEvaluatedEvent:C,VariantAssignedEvent:w};export{b as ExperimentCreatedEvent,x as ExperimentStartedEvent,S as ExperimentStoppedEvent,T as FeatureFlagEvents,m as FlagCreatedEvent,g as FlagDeletedEvent,C as FlagEvaluatedEvent,_ as FlagToggledEvent,h as FlagUpdatedEvent,v as RuleCreatedEvent,y as RuleDeletedEvent,w as VariantAssignedEvent};
1
+ import{ScalarTypeEnum as e,defineSchemaModel as t}from"@lssm/lib.schema";import{defineEvent as n}from"@lssm/lib.contracts";const r=t({name:`FlagCreatedEventPayload`,description:`Payload when a feature flag is created`,fields:{flagId:{type:e.String_unsecure(),isOptional:!1},key:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!1},status:{type:e.String_unsecure(),isOptional:!1},orgId:{type:e.String_unsecure(),isOptional:!0},createdBy:{type:e.String_unsecure(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1}}}),i=t({name:`FlagUpdatedEventPayload`,description:`Payload when a feature flag is updated`,fields:{flagId:{type:e.String_unsecure(),isOptional:!1},key:{type:e.String_unsecure(),isOptional:!1},changes:{type:e.JSON(),isOptional:!1},updatedBy:{type:e.String_unsecure(),isOptional:!0},updatedAt:{type:e.DateTime(),isOptional:!1}}}),a=t({name:`FlagDeletedEventPayload`,description:`Payload when a feature flag is deleted`,fields:{flagId:{type:e.String_unsecure(),isOptional:!1},key:{type:e.String_unsecure(),isOptional:!1},deletedBy:{type:e.String_unsecure(),isOptional:!0},deletedAt:{type:e.DateTime(),isOptional:!1}}}),o=t({name:`FlagToggledEventPayload`,description:`Payload when a feature flag status is toggled`,fields:{flagId:{type:e.String_unsecure(),isOptional:!1},key:{type:e.String_unsecure(),isOptional:!1},previousStatus:{type:e.String_unsecure(),isOptional:!1},newStatus:{type:e.String_unsecure(),isOptional:!1},toggledBy:{type:e.String_unsecure(),isOptional:!0},toggledAt:{type:e.DateTime(),isOptional:!1}}}),s=t({name:`RuleCreatedEventPayload`,description:`Payload when a targeting rule is created`,fields:{ruleId:{type:e.String_unsecure(),isOptional:!1},flagId:{type:e.String_unsecure(),isOptional:!1},flagKey:{type:e.String_unsecure(),isOptional:!1},attribute:{type:e.String_unsecure(),isOptional:!1},operator:{type:e.String_unsecure(),isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1}}}),c=t({name:`RuleDeletedEventPayload`,description:`Payload when a targeting rule is deleted`,fields:{ruleId:{type:e.String_unsecure(),isOptional:!1},flagId:{type:e.String_unsecure(),isOptional:!1},flagKey:{type:e.String_unsecure(),isOptional:!1},deletedAt:{type:e.DateTime(),isOptional:!1}}}),l=t({name:`ExperimentCreatedEventPayload`,description:`Payload when an experiment is created`,fields:{experimentId:{type:e.String_unsecure(),isOptional:!1},key:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!1},flagId:{type:e.String_unsecure(),isOptional:!1},variants:{type:e.JSON(),isOptional:!1},createdBy:{type:e.String_unsecure(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1}}}),u=t({name:`ExperimentStartedEventPayload`,description:`Payload when an experiment starts`,fields:{experimentId:{type:e.String_unsecure(),isOptional:!1},key:{type:e.String_unsecure(),isOptional:!1},flagId:{type:e.String_unsecure(),isOptional:!1},variants:{type:e.JSON(),isOptional:!1},audiencePercentage:{type:e.Int_unsecure(),isOptional:!1},startedBy:{type:e.String_unsecure(),isOptional:!0},startedAt:{type:e.DateTime(),isOptional:!1}}}),d=t({name:`ExperimentStoppedEventPayload`,description:`Payload when an experiment stops`,fields:{experimentId:{type:e.String_unsecure(),isOptional:!1},key:{type:e.String_unsecure(),isOptional:!1},reason:{type:e.String_unsecure(),isOptional:!1},winningVariant:{type:e.String_unsecure(),isOptional:!0},stoppedBy:{type:e.String_unsecure(),isOptional:!0},stoppedAt:{type:e.DateTime(),isOptional:!1}}}),f=t({name:`FlagEvaluatedEventPayload`,description:`Payload when a flag is evaluated (for analytics)`,fields:{flagId:{type:e.String_unsecure(),isOptional:!1},flagKey:{type:e.String_unsecure(),isOptional:!1},subjectType:{type:e.String_unsecure(),isOptional:!1},subjectId:{type:e.String_unsecure(),isOptional:!1},result:{type:e.Boolean(),isOptional:!1},variant:{type:e.String_unsecure(),isOptional:!0},reason:{type:e.String_unsecure(),isOptional:!1},evaluatedAt:{type:e.DateTime(),isOptional:!1}}}),p=t({name:`VariantAssignedEventPayload`,description:`Payload when a subject is assigned to an experiment variant`,fields:{experimentId:{type:e.String_unsecure(),isOptional:!1},experimentKey:{type:e.String_unsecure(),isOptional:!1},subjectType:{type:e.String_unsecure(),isOptional:!1},subjectId:{type:e.String_unsecure(),isOptional:!1},variant:{type:e.String_unsecure(),isOptional:!1},bucket:{type:e.Int_unsecure(),isOptional:!1},assignedAt:{type:e.DateTime(),isOptional:!1}}}),m=n({name:`flag.created`,version:1,description:`A feature flag has been created.`,payload:r}),h=n({name:`flag.updated`,version:1,description:`A feature flag has been updated.`,payload:i}),g=n({name:`flag.deleted`,version:1,description:`A feature flag has been deleted.`,payload:a}),_=n({name:`flag.toggled`,version:1,description:`A feature flag status has been toggled.`,payload:o}),v=n({name:`flag.rule_created`,version:1,description:`A targeting rule has been created.`,payload:s}),y=n({name:`flag.rule_deleted`,version:1,description:`A targeting rule has been deleted.`,payload:c}),b=n({name:`experiment.created`,version:1,description:`An experiment has been created.`,payload:l}),x=n({name:`experiment.started`,version:1,description:`An experiment has started.`,payload:u}),S=n({name:`experiment.stopped`,version:1,description:`An experiment has stopped.`,payload:d}),C=n({name:`flag.evaluated`,version:1,description:`A feature flag has been evaluated.`,payload:f}),w=n({name:`experiment.variant_assigned`,version:1,description:`A subject has been assigned to an experiment variant.`,payload:p}),T={FlagCreatedEvent:m,FlagUpdatedEvent:h,FlagDeletedEvent:g,FlagToggledEvent:_,RuleCreatedEvent:v,RuleDeletedEvent:y,ExperimentCreatedEvent:b,ExperimentStartedEvent:x,ExperimentStoppedEvent:S,FlagEvaluatedEvent:C,VariantAssignedEvent:w};export{b as ExperimentCreatedEvent,x as ExperimentStartedEvent,S as ExperimentStoppedEvent,T as FeatureFlagEvents,m as FlagCreatedEvent,g as FlagDeletedEvent,C as FlagEvaluatedEvent,_ as FlagToggledEvent,h as FlagUpdatedEvent,v as RuleCreatedEvent,y as RuleDeletedEvent,w as VariantAssignedEvent};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lssm/lib.feature-flags",
3
- "version": "0.0.0-canary-20251207013726",
3
+ "version": "0.0.0-canary-20251207043720",
4
4
  "description": "Feature flags and experiments module for ContractSpec applications",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -27,11 +27,11 @@
27
27
  "typescript": "^5.9.3"
28
28
  },
29
29
  "exports": {
30
- ".": "./dist/index.js",
31
- "./contracts": "./dist/contracts/index.js",
32
- "./entities": "./dist/entities/index.js",
33
- "./evaluation": "./dist/evaluation/index.js",
34
- "./events": "./dist/events.js",
30
+ ".": "./src/index.ts",
31
+ "./contracts": "./src/contracts/index.ts",
32
+ "./entities": "./src/entities/index.ts",
33
+ "./evaluation": "./src/evaluation/index.ts",
34
+ "./events": "./src/events.ts",
35
35
  "./*": "./*"
36
36
  },
37
37
  "module": "./dist/index.js",
@@ -40,6 +40,14 @@
40
40
  "README.md"
41
41
  ],
42
42
  "publishConfig": {
43
- "access": "public"
43
+ "access": "public",
44
+ "exports": {
45
+ ".": "./dist/index.js",
46
+ "./contracts": "./dist/contracts/index.js",
47
+ "./entities": "./dist/entities/index.js",
48
+ "./evaluation": "./dist/evaluation/index.js",
49
+ "./events": "./dist/events.js",
50
+ "./*": "./*"
51
+ }
44
52
  }
45
53
  }
@@ -1 +0,0 @@
1
- import{e}from"../ownership.js";const t=[`platform.finance`],n=[`open-banking`,`finance`];[...t],[...n],e.Experimental,[...t],[...n],e.Experimental,[...t],[...n],e.Experimental;
@@ -1 +0,0 @@
1
- "use client";import"./react/feature-render.js";import"./react/form-render.js";import"./react/index.js";
@@ -1 +0,0 @@
1
- import"../../presentations.v2.js";import"react";
@@ -1 +0,0 @@
1
- import"react";import"react-hook-form";import"@hookform/resolvers/zod";import"react/jsx-runtime";
@@ -1 +0,0 @@
1
- "use client";import"./feature-render.js";import"./form-render.js";
@@ -1 +0,0 @@
1
- import"./schema/dist/index.js";function e(e){return e}export{e};
@@ -1 +0,0 @@
1
- import"node:crypto";
@@ -1 +0,0 @@
1
- import"@pothos/plugin-federation";import"@apollo/subgraph";
@@ -1 +0,0 @@
1
- import"./schema/dist/SchemaModel.js";import"./schema/dist/index.js";import{e}from"./events.js";import"./presentations.v2.js";import"./client/react/feature-render.js";import"./client/react/form-render.js";import"./client/index.js";import"./jsonschema.js";import"./server/graphql-pothos.js";import"./server/graphql-schema-export.js";import"./presentations.js";import"./server/provider-mcp.js";import"./server/rest-generic.js";import"./server/rest-elysia.js";import"./server/rest-express.js";import"./server/rest-next-app.js";import"./server/rest-next-pages.js";import"./server/index.js";import{n as t,t as n}from"./spec.js";import"./registry.js";import"./install.js";import"./prompt.js";import"./promptRegistry.js";import"./resources.js";import{e as r,r as i,t as a}from"./ownership.js";import{d as o,l as s,m as c,o as l,p as u,s as d}from"./onboarding-base.js";import"./capabilities/openbanking.js";import"./telemetry/tracker.js";import"./telemetry/index.js";import"./tests/runner.js";import"./tests/index.js";import"./experiments/evaluator.js";import"./integrations/providers/stripe.js";import"./integrations/providers/postmark.js";import"./integrations/providers/qdrant.js";import"./integrations/providers/mistral.js";import"./integrations/providers/elevenlabs.js";import"./integrations/providers/gmail.js";import"./integrations/providers/google-calendar.js";import"./integrations/providers/twilio-sms.js";import"./integrations/providers/gcs-storage.js";import"./integrations/providers/powens.js";import"./integrations/providers/impls/mistral-llm.js";import"./integrations/providers/impls/mistral-embedding.js";import"./integrations/providers/impls/qdrant-vector.js";import"./integrations/providers/impls/gmail-inbound.js";import"./integrations/providers/impls/gmail-outbound.js";import"./integrations/providers/impls/google-calendar.js";import"./integrations/providers/impls/elevenlabs-voice.js";import"./integrations/providers/impls/gcs-storage.js";import"./integrations/providers/impls/stripe-payments.js";import"./integrations/providers/impls/postmark-email.js";import"./integrations/providers/impls/twilio-sms.js";import"./integrations/providers/impls/powens-client.js";import"./integrations/providers/impls/powens-openbanking.js";import"./integrations/providers/impls/provider-factory.js";import"./integrations/secrets/provider.js";import"./integrations/secrets/gcp-secret-manager.js";import"./integrations/secrets/env-secret-provider.js";import"./integrations/secrets/manager.js";import"./integrations/runtime.js";import{i as f,n as p,r as m}from"./integrations/openbanking/models.js";import{t as h}from"./integrations/openbanking/telemetry.js";import{d as g,f as _,p as v}from"./integrations/openbanking/contracts/accounts.js";import{d as y,u as b}from"./integrations/openbanking/contracts/transactions.js";import{d as x,u as S}from"./integrations/openbanking/contracts/balances.js";import"./integrations/openbanking/contracts/index.js";import"./integrations/index.js";import"./knowledge/spaces/product-canon.js";import"./knowledge/spaces/support-faq.js";import"./knowledge/spaces/email-threads.js";import"./knowledge/spaces/uploaded-docs.js";import"./knowledge/spaces/financial-docs.js";import"./knowledge/spaces/financial-overview.js";import"./knowledge/index.js";import{_ as C,g as w,h as T,m as E,p as D}from"./integrations/contracts.js";import{_ as O,g as k,h as A,m as j,v as M}from"./knowledge/contracts.js";import"./regenerator/service.js";import"./regenerator/index.js";import"./workflow/runner.js";import"./workflow/index.js";
@@ -1 +0,0 @@
1
- import"./registry.js";import{z as e}from"zod";
@@ -1 +0,0 @@
1
- import{t as e}from"../schema/dist/SchemaModel.js";import{l as t}from"../schema/dist/ScalarTypeEnum.js";import"../schema/dist/index.js";import{n,t as r}from"../spec.js";const i=new e({name:`IntegrationConnectionRecord`,fields:{id:{type:t.ID(),isOptional:!1},tenantId:{type:t.ID(),isOptional:!1},integrationKey:{type:t.NonEmptyString(),isOptional:!1},integrationVersion:{type:t.Int_unsecure(),isOptional:!1},label:{type:t.String_unsecure(),isOptional:!1},ownershipMode:{type:t.String_unsecure(),isOptional:!1},externalAccountId:{type:t.String_unsecure(),isOptional:!0},secretProvider:{type:t.String_unsecure(),isOptional:!1},secretRef:{type:t.String_unsecure(),isOptional:!1},status:{type:t.String_unsecure(),isOptional:!1},environment:{type:t.String_unsecure(),isOptional:!0},healthStatus:{type:t.String_unsecure(),isOptional:!0},healthCheckedAt:{type:t.DateTime(),isOptional:!0},healthLatencyMs:{type:t.Float_unsecure(),isOptional:!0},healthErrorCode:{type:t.String_unsecure(),isOptional:!0},healthErrorMessage:{type:t.String_unsecure(),isOptional:!0},usageRequestCount:{type:t.Int_unsecure(),isOptional:!0},usageSuccessCount:{type:t.Int_unsecure(),isOptional:!0},usageErrorCount:{type:t.Int_unsecure(),isOptional:!0},usageLastUsedAt:{type:t.DateTime(),isOptional:!0},usageLastErrorAt:{type:t.DateTime(),isOptional:!0},usageLastErrorCode:{type:t.String_unsecure(),isOptional:!0},createdAt:{type:t.DateTime(),isOptional:!0},updatedAt:{type:t.DateTime(),isOptional:!0}}}),a=new e({name:`CreateIntegrationConnectionInput`,fields:{tenantId:{type:t.ID(),isOptional:!1},integrationKey:{type:t.NonEmptyString(),isOptional:!1},integrationVersion:{type:t.Int_unsecure(),isOptional:!1},label:{type:t.String_unsecure(),isOptional:!1},ownershipMode:{type:t.String_unsecure(),isOptional:!1},externalAccountId:{type:t.String_unsecure(),isOptional:!0},secretProvider:{type:t.String_unsecure(),isOptional:!1},secretRef:{type:t.String_unsecure(),isOptional:!1},environment:{type:t.String_unsecure(),isOptional:!0},config:{type:t.JSONObject(),isOptional:!1}}}),o=new e({name:`UpdateIntegrationConnectionInput`,fields:{connectionId:{type:t.ID(),isOptional:!1},label:{type:t.String_unsecure(),isOptional:!0},status:{type:t.String_unsecure(),isOptional:!0},ownershipMode:{type:t.String_unsecure(),isOptional:!0},externalAccountId:{type:t.String_unsecure(),isOptional:!0},secretProvider:{type:t.String_unsecure(),isOptional:!0},secretRef:{type:t.String_unsecure(),isOptional:!0},config:{type:t.JSONObject(),isOptional:!0}}}),s=new e({name:`DeleteIntegrationConnectionInput`,fields:{connectionId:{type:t.ID(),isOptional:!1}}}),c=new e({name:`ListIntegrationConnectionsInput`,fields:{tenantId:{type:t.ID(),isOptional:!1},category:{type:t.String_unsecure(),isOptional:!0},status:{type:t.String_unsecure(),isOptional:!0}}}),l=new e({name:`ListIntegrationConnectionsOutput`,fields:{connections:{type:i,isOptional:!1,isArray:!0}}}),u=new e({name:`TestIntegrationConnectionInput`,fields:{connectionId:{type:t.ID(),isOptional:!1}}}),d=new e({name:`TestIntegrationConnectionOutput`,fields:{success:{type:t.Boolean(),isOptional:!1},status:{type:t.String_unsecure(),isOptional:!0},latencyMs:{type:t.Float_unsecure(),isOptional:!0},error:{type:t.String_unsecure(),isOptional:!0},errorCode:{type:t.String_unsecure(),isOptional:!0}}}),f=new e({name:`DeleteIntegrationConnectionOutput`,fields:{success:{type:t.Boolean(),isOptional:!1}}}),p=r({meta:{name:`integrations.connection.create`,version:1,description:`Create a new integration connection for a tenant.`,goal:`Provision a tenant-scoped connection to an external provider.`,context:`Used by Ops or the App Studio to configure external integrations such as Stripe or Qdrant.`,owners:[`platform.integrations`],tags:[`integration`,`connections`],stability:`experimental`},io:{input:a,output:i},policy:{auth:`admin`,policies:[{name:`platform.integration.manage`,version:1}]}}),m=r({meta:{name:`integrations.connection.update`,version:1,description:`Update metadata or credentials for an integration connection.`,goal:`Allow secure rotation of credentials and metadata adjustments.`,context:`Supports rotating API keys, toggling status, or updating labels for tenant integrations.`,owners:[`platform.integrations`],tags:[`integration`,`connections`],stability:`experimental`},io:{input:o,output:i},policy:{auth:`admin`,policies:[{name:`platform.integration.manage`,version:1}]}}),h=r({meta:{name:`integrations.connection.delete`,version:1,description:`Delete an integration connection for a tenant.`,goal:`Safely remove credentials and disable connector usage.`,context:`Ensures connections are de-provisioned when no longer needed or breached.`,owners:[`platform.integrations`],tags:[`integration`,`connections`],stability:`experimental`},io:{input:s,output:f},policy:{auth:`admin`,policies:[{name:`platform.integration.manage`,version:1}]}}),g=n({meta:{name:`integrations.connection.list`,version:1,description:`List integration connections for a tenant.`,goal:`Provide visibility into configured integrations and their status.`,context:`Used by the App Studio and Ops flows to show bindings and health.`,owners:[`platform.integrations`],tags:[`integration`,`connections`],stability:`experimental`},io:{input:c,output:l},policy:{auth:`admin`,policies:[{name:`platform.integration.read`,version:1}]}}),_=r({meta:{name:`integrations.connection.test`,version:1,description:`Run a health check against a configured integration connection.`,goal:`Validate credentials and connectivity for external providers.`,context:`Triggered manually or by background monitors to confirm provider availability.`,owners:[`platform.integrations`],tags:[`integration`,`connections`],stability:`experimental`},io:{input:u,output:d},policy:{auth:`admin`,policies:[{name:`platform.integration.manage`,version:1}]}});export{_,g,h,m,p};
@@ -1 +0,0 @@
1
- import"./providers/stripe.js";import"./providers/postmark.js";import"./providers/qdrant.js";import"./providers/mistral.js";import"./providers/elevenlabs.js";import"./providers/gmail.js";import"./providers/google-calendar.js";import"./providers/twilio-sms.js";import"./providers/gcs-storage.js";import"./providers/powens.js";import"./providers/impls/mistral-llm.js";import"./providers/impls/mistral-embedding.js";import"./providers/impls/qdrant-vector.js";import"./providers/impls/gmail-inbound.js";import"./providers/impls/gmail-outbound.js";import"./providers/impls/google-calendar.js";import"./providers/impls/elevenlabs-voice.js";import"./providers/impls/gcs-storage.js";import"./providers/impls/stripe-payments.js";import"./providers/impls/postmark-email.js";import"./providers/impls/twilio-sms.js";import"./providers/impls/powens-client.js";import"./providers/impls/powens-openbanking.js";import"./providers/impls/provider-factory.js";import"./secrets/provider.js";import"./secrets/gcp-secret-manager.js";import"./secrets/env-secret-provider.js";import"./secrets/manager.js";import"./runtime.js";import{i as e,n as t,r as n}from"./openbanking/models.js";import{t as r}from"./openbanking/telemetry.js";import{d as i,f as a,p as o}from"./openbanking/contracts/accounts.js";import{d as s,u as c}from"./openbanking/contracts/transactions.js";import{d as l,u}from"./openbanking/contracts/balances.js";import"./openbanking/contracts/index.js";import"./providers/index.js";import"./secrets/index.js";
@@ -1 +0,0 @@
1
- import{t as e}from"../../../schema/dist/SchemaModel.js";import{l as t}from"../../../schema/dist/ScalarTypeEnum.js";import"../../../schema/dist/index.js";import{n,t as r}from"../../../spec.js";import{n as i}from"../models.js";import{t as a}from"../telemetry.js";const o=new e({name:`OpenBankingListAccountsInput`,description:`Parameters for listing bank accounts through the open banking provider.`,fields:{tenantId:{type:t.ID(),isOptional:!1},userId:{type:t.ID(),isOptional:!1},connectionId:{type:t.ID(),isOptional:!0},includeBalances:{type:t.Boolean(),isOptional:!0},institutionId:{type:t.String_unsecure(),isOptional:!0},cursor:{type:t.String_unsecure(),isOptional:!0},pageSize:{type:t.Int_unsecure(),isOptional:!0}}}),s=new e({name:`OpenBankingListAccountsOutput`,description:`Paginated list of bank accounts available to the tenant and user.`,fields:{accounts:{type:i,isOptional:!1,isArray:!0},nextCursor:{type:t.String_unsecure(),isOptional:!0},hasMore:{type:t.Boolean(),isOptional:!0}}}),c=new e({name:`OpenBankingGetAccountInput`,description:`Parameters for retrieving a specific bank account.`,fields:{tenantId:{type:t.ID(),isOptional:!1},accountId:{type:t.ID(),isOptional:!1},includeBalances:{type:t.Boolean(),isOptional:!0},includeLatestTransactions:{type:t.Boolean(),isOptional:!0}}}),l=new e({name:`OpenBankingSyncAccountsInput`,description:`Command payload to trigger an account synchronisation against the open banking provider.`,fields:{tenantId:{type:t.ID(),isOptional:!1},userId:{type:t.ID(),isOptional:!0},connectionId:{type:t.ID(),isOptional:!1},accountIds:{type:t.ID(),isArray:!0,isOptional:!0},forceFullRefresh:{type:t.Boolean(),isOptional:!0},triggerWorkflows:{type:t.Boolean(),isOptional:!0}}}),u=new e({name:`OpenBankingSyncAccountsOutput`,description:`Result of a bank account synchronisation run.`,fields:{synced:{type:t.Int_unsecure(),isOptional:!1},failed:{type:t.Int_unsecure(),isOptional:!1},errors:{type:t.String_unsecure(),isArray:!0,isOptional:!0},nextSyncSuggestedAt:{type:t.DateTime(),isOptional:!0}}}),d=n({meta:{name:`openbanking.accounts.list`,version:1,description:`List bank accounts available to a tenant/user via Powens Open Banking.`,goal:`Provide downstream workflows with the set of accounts accessible via the configured open banking connection.`,context:`Used by Pocket Family Office dashboards and sync workflows to enumerate bank accounts prior to syncing balances or transactions.`,owners:[`platform.finance`],tags:[`open-banking`,`powens`,`accounts`],stability:`experimental`},io:{input:o,output:s},policy:{auth:`user`}}),f=n({meta:{name:`openbanking.accounts.get`,version:1,description:`Retrieve the canonical bank account record for the given account identifier.`,goal:`Allow user-facing experiences and automations to display up-to-date account metadata.`,context:`Invoked by UI surfaces and workflow automation steps that require detailed metadata for a specific bank account.`,owners:[`platform.finance`],tags:[`open-banking`,`powens`,`accounts`],stability:`experimental`},io:{input:c,output:i},policy:{auth:`user`}}),p=r({meta:{name:`openbanking.accounts.sync`,version:1,description:`Initiate a synchronisation run to refresh bank account metadata from Powens.`,goal:`Keep canonical bank account records aligned with the external open banking provider.`,context:`Triggered by scheduled workflows or manual operator actions to reconcile account metadata prior to transaction/balance syncs.`,owners:[`platform.finance`],tags:[`open-banking`,`powens`,`accounts`],stability:`experimental`},io:{input:l,output:u},policy:{auth:`admin`},telemetry:{success:{event:{name:a.accountsSynced},properties:({input:e,output:t})=>{let n=e,r=t;return{tenantId:n?.tenantId,connectionId:n?.connectionId,synced:r?.synced,failed:r?.failed}}},failure:{event:{name:a.accountsSyncFailed},properties:({input:e,error:t})=>{let n=e;return{tenantId:n?.tenantId,connectionId:n?.connectionId,error:t instanceof Error?t.message:String(t??`unknown`)}}}}});export{d,f,p};
@@ -1 +0,0 @@
1
- import{t as e}from"../../../schema/dist/SchemaModel.js";import{l as t}from"../../../schema/dist/ScalarTypeEnum.js";import"../../../schema/dist/index.js";import{n,t as r}from"../../../spec.js";import{i}from"../models.js";import{t as a}from"../telemetry.js";const o=new e({name:`OpenBankingGetBalancesInput`,description:`Parameters for retrieving bank account balances from the canonical ledger.`,fields:{tenantId:{type:t.ID(),isOptional:!1},accountId:{type:t.ID(),isOptional:!1},balanceTypes:{type:t.String_unsecure(),isArray:!0,isOptional:!0}}}),s=new e({name:`OpenBankingGetBalancesOutput`,description:`Canonical balances for a bank account.`,fields:{balances:{type:i,isOptional:!1,isArray:!0},asOf:{type:t.DateTime(),isOptional:!0}}}),c=new e({name:`OpenBankingRefreshBalancesInput`,description:`Command payload to refresh balances for a bank account via the open banking provider.`,fields:{tenantId:{type:t.ID(),isOptional:!1},accountId:{type:t.ID(),isOptional:!1},connectionId:{type:t.ID(),isOptional:!0},balanceTypes:{type:t.String_unsecure(),isArray:!0,isOptional:!0},forceRefresh:{type:t.Boolean(),isOptional:!0}}}),l=new e({name:`OpenBankingRefreshBalancesOutput`,description:`Result of a balance refresh against the open banking provider.`,fields:{balances:{type:i,isOptional:!1,isArray:!0},refreshedAt:{type:t.DateTime(),isOptional:!1},errors:{type:t.String_unsecure(),isArray:!0,isOptional:!0}}}),u=n({meta:{name:`openbanking.balances.get`,version:1,description:`Retrieve the latest cached balances for a bank account.`,goal:`Expose current and available balances required by dashboards and analytics.`,context:`Used by Pocket Family Office UI surfaces and automation steps that require balance totals prior to generating summaries.`,owners:[`platform.finance`],tags:[`open-banking`,`powens`,`balances`],stability:`experimental`},io:{input:o,output:s},policy:{auth:`user`}}),d=r({meta:{name:`openbanking.balances.refresh`,version:1,description:`Refresh balances for a bank account via the configured open banking provider.`,goal:`Ensure canonical balance records reflect the latest values from Powens.`,context:`Triggered by scheduled workflows before generating summaries or forecasting cashflow.`,owners:[`platform.finance`],tags:[`open-banking`,`powens`,`balances`],stability:`experimental`},io:{input:c,output:l},policy:{auth:`admin`},telemetry:{success:{event:{name:a.balancesRefreshed},properties:({input:e,output:t})=>{let n=e,r=t;return{tenantId:n?.tenantId,accountId:n?.accountId,refreshedAt:r?.refreshedAt,balanceCount:Array.isArray(r?.balances)?r?.balances.length:void 0}}},failure:{event:{name:a.balancesRefreshFailed},properties:({input:e,error:t})=>{let n=e;return{tenantId:n?.tenantId,accountId:n?.accountId,error:t instanceof Error?t.message:String(t??`unknown`)}}}}});export{d,u};
@@ -1 +0,0 @@
1
- import{d as e,f as t,p as n}from"./accounts.js";import{d as r,u as i}from"./transactions.js";import{d as a,u as o}from"./balances.js";
@@ -1 +0,0 @@
1
- import{t as e}from"../../../schema/dist/SchemaModel.js";import{l as t}from"../../../schema/dist/ScalarTypeEnum.js";import"../../../schema/dist/index.js";import{n,t as r}from"../../../spec.js";import{r as i}from"../models.js";import{t as a}from"../telemetry.js";const o=new e({name:`OpenBankingListTransactionsInput`,description:`Parameters for listing bank transactions from the canonical ledger.`,fields:{tenantId:{type:t.ID(),isOptional:!1},accountId:{type:t.ID(),isOptional:!1},from:{type:t.DateTime(),isOptional:!0},to:{type:t.DateTime(),isOptional:!0},cursor:{type:t.String_unsecure(),isOptional:!0},pageSize:{type:t.Int_unsecure(),isOptional:!0},direction:{type:t.String_unsecure(),isOptional:!0},minimumAmount:{type:t.Float_unsecure(),isOptional:!0},maximumAmount:{type:t.Float_unsecure(),isOptional:!0},category:{type:t.String_unsecure(),isOptional:!0}}}),s=new e({name:`OpenBankingListTransactionsOutput`,description:`Paginated list of transactions for a bank account.`,fields:{transactions:{type:i,isOptional:!1,isArray:!0},nextCursor:{type:t.String_unsecure(),isOptional:!0},hasMore:{type:t.Boolean(),isOptional:!0}}}),c=new e({name:`OpenBankingSyncTransactionsInput`,description:`Command payload to synchronise transactions from the open banking provider into the canonical ledger.`,fields:{tenantId:{type:t.ID(),isOptional:!1},accountId:{type:t.ID(),isOptional:!1},from:{type:t.DateTime(),isOptional:!0},to:{type:t.DateTime(),isOptional:!0},connectionId:{type:t.ID(),isOptional:!0},includePending:{type:t.Boolean(),isOptional:!0},backfillDays:{type:t.Int_unsecure(),isOptional:!0}}}),l=new e({name:`OpenBankingSyncTransactionsOutput`,description:`Result of a transaction synchronisation run.`,fields:{synced:{type:t.Int_unsecure(),isOptional:!1},failed:{type:t.Int_unsecure(),isOptional:!1},earliestSyncedAt:{type:t.DateTime(),isOptional:!0},latestSyncedAt:{type:t.DateTime(),isOptional:!0},nextSinceToken:{type:t.String_unsecure(),isOptional:!0},errors:{type:t.String_unsecure(),isArray:!0,isOptional:!0}}}),u=n({meta:{name:`openbanking.transactions.list`,version:1,description:`List bank transactions that have been normalised into the canonical ledger.`,goal:`Allow downstream analytics and UI surfaces to page through canonical bank transactions.`,context:`Used by Pocket Family Office dashboards, reconciliation workflows, and analytics data views.`,owners:[`platform.finance`],tags:[`open-banking`,`powens`,`transactions`],stability:`experimental`},io:{input:o,output:s},policy:{auth:`user`}}),d=r({meta:{name:`openbanking.transactions.sync`,version:1,description:`Synchronise transactions for a bank account by calling the configured open banking provider.`,goal:`Ensure the canonical transaction ledger stays aligned with the external provider.`,context:`Triggered by scheduled workflows or on-demand actions when activity is expected on an account.`,owners:[`platform.finance`],tags:[`open-banking`,`powens`,`transactions`],stability:`experimental`},io:{input:c,output:l},policy:{auth:`admin`},telemetry:{success:{event:{name:a.transactionsSynced},properties:({input:e,output:t})=>{let n=e,r=t;return{tenantId:n?.tenantId,accountId:n?.accountId,synced:r?.synced,failed:r?.failed,earliestSyncedAt:r?.earliestSyncedAt,latestSyncedAt:r?.latestSyncedAt}}},failure:{event:{name:a.transactionsSyncFailed},properties:({input:e,error:t})=>{let n=e;return{tenantId:n?.tenantId,accountId:n?.accountId,error:t instanceof Error?t.message:String(t??`unknown`)}}}}});export{d,u};
@@ -1 +0,0 @@
1
- import{t as e}from"../../schema/dist/SchemaModel.js";import{l as t}from"../../schema/dist/ScalarTypeEnum.js";import"../../schema/dist/index.js";const n=new e({name:`BankAccountRecord`,description:`Canonical representation of a bank account synced from an open banking provider.`,fields:{id:{type:t.ID(),isOptional:!1},tenantId:{type:t.ID(),isOptional:!1},userId:{type:t.ID(),isOptional:!1},connectionId:{type:t.ID(),isOptional:!1},externalId:{type:t.NonEmptyString(),isOptional:!1},institutionId:{type:t.NonEmptyString(),isOptional:!1},institutionName:{type:t.NonEmptyString(),isOptional:!1},institutionLogoUrl:{type:t.URL(),isOptional:!0},iban:{type:t.String_unsecure(),isOptional:!0},bic:{type:t.String_unsecure(),isOptional:!0},accountType:{type:t.NonEmptyString(),isOptional:!1},currency:{type:t.Currency(),isOptional:!1},displayName:{type:t.NonEmptyString(),isOptional:!1},accountNumberMasked:{type:t.String_unsecure(),isOptional:!0},productCode:{type:t.String_unsecure(),isOptional:!0},balance:{type:t.Float_unsecure(),isOptional:!0},availableBalance:{type:t.Float_unsecure(),isOptional:!0},lastSyncedAt:{type:t.DateTime(),isOptional:!1},createdAt:{type:t.DateTime(),isOptional:!1},updatedAt:{type:t.DateTime(),isOptional:!1},metadata:{type:t.JSONObject(),isOptional:!0}}}),r=new e({name:`BankTransactionRecord`,description:`Canonical transaction entry mapped from Powens into the open banking ledger.`,fields:{id:{type:t.ID(),isOptional:!1},accountId:{type:t.ID(),isOptional:!1},tenantId:{type:t.ID(),isOptional:!1},connectionId:{type:t.ID(),isOptional:!1},externalId:{type:t.NonEmptyString(),isOptional:!1},amount:{type:t.Float_unsecure(),isOptional:!1},currency:{type:t.Currency(),isOptional:!1},date:{type:t.DateTime(),isOptional:!1},bookingDate:{type:t.DateTime(),isOptional:!0},valueDate:{type:t.DateTime(),isOptional:!0},description:{type:t.String_unsecure(),isOptional:!0},counterpartyName:{type:t.String_unsecure(),isOptional:!0},counterpartyAccount:{type:t.String_unsecure(),isOptional:!0},merchantCategoryCode:{type:t.String_unsecure(),isOptional:!0},rawCategory:{type:t.String_unsecure(),isOptional:!0},standardizedCategory:{type:t.String_unsecure(),isOptional:!0},transactionType:{type:t.NonEmptyString(),isOptional:!1},status:{type:t.NonEmptyString(),isOptional:!1},runningBalance:{type:t.Float_unsecure(),isOptional:!0},metadata:{type:t.JSONObject(),isOptional:!0},createdAt:{type:t.DateTime(),isOptional:!1},updatedAt:{type:t.DateTime(),isOptional:!1}}}),i=new e({name:`AccountBalanceRecord`,description:`Canonical balance snapshot computed from Powens balance payloads.`,fields:{id:{type:t.ID(),isOptional:!1},accountId:{type:t.ID(),isOptional:!1},tenantId:{type:t.ID(),isOptional:!1},connectionId:{type:t.ID(),isOptional:!1},balanceType:{type:t.NonEmptyString(),isOptional:!1},currentBalance:{type:t.Float_unsecure(),isOptional:!1},availableBalance:{type:t.Float_unsecure(),isOptional:!0},currency:{type:t.Currency(),isOptional:!1},lastUpdatedAt:{type:t.DateTime(),isOptional:!1},createdAt:{type:t.DateTime(),isOptional:!1},metadata:{type:t.JSONObject(),isOptional:!0}}});export{i,n,r};
@@ -1 +0,0 @@
1
- const e={accountsSynced:`openbanking.accounts.synced`,accountsSyncFailed:`openbanking.accounts.sync_failed`,transactionsSynced:`openbanking.transactions.synced`,transactionsSyncFailed:`openbanking.transactions.sync_failed`,balancesRefreshed:`openbanking.balances.refreshed`,balancesRefreshFailed:`openbanking.balances.refresh_failed`,overviewGenerated:`openbanking.overview.generated`};export{e as t};
@@ -1 +0,0 @@
1
- import{e}from"../../ownership.js";e.Beta;
@@ -1 +0,0 @@
1
- import{e}from"../../ownership.js";e.Beta;
@@ -1 +0,0 @@
1
- import{e}from"../../ownership.js";e.Beta;
@@ -1 +0,0 @@
1
- import{e}from"../../ownership.js";e.Beta;
@@ -1 +0,0 @@
1
- import"@elevenlabs/elevenlabs-js";
@@ -1 +0,0 @@
1
- import"@google-cloud/storage";
@@ -1 +0,0 @@
1
- import"googleapis";
@@ -1 +0,0 @@
1
- import"googleapis";
@@ -1 +0,0 @@
1
- import"googleapis";
@@ -1 +0,0 @@
1
- import"./mistral-llm.js";import"./mistral-embedding.js";import"./qdrant-vector.js";import"./gmail-inbound.js";import"./gmail-outbound.js";import"./google-calendar.js";import"./elevenlabs-voice.js";import"./gcs-storage.js";import"./stripe-payments.js";import"./postmark-email.js";import"./twilio-sms.js";import"./powens-client.js";import"./powens-openbanking.js";import"./provider-factory.js";
@@ -1 +0,0 @@
1
- import"@mistralai/mistralai";
@@ -1 +0,0 @@
1
- import"@mistralai/mistralai";
@@ -1 +0,0 @@
1
- import"./powens-client.js";
@@ -1 +0,0 @@
1
- import"./mistral-llm.js";import"./mistral-embedding.js";import"./qdrant-vector.js";import"./elevenlabs-voice.js";import"./gcs-storage.js";import"./stripe-payments.js";import"./postmark-email.js";import"./twilio-sms.js";import"./powens-openbanking.js";import"node:buffer";
@@ -1 +0,0 @@
1
- import"@qdrant/js-client-rest";
@@ -1 +0,0 @@
1
- import"./stripe.js";import"./postmark.js";import"./qdrant.js";import"./mistral.js";import"./elevenlabs.js";import"./gmail.js";import"./google-calendar.js";import"./twilio-sms.js";import"./gcs-storage.js";import"./powens.js";import"./impls/mistral-llm.js";import"./impls/mistral-embedding.js";import"./impls/qdrant-vector.js";import"./impls/gmail-inbound.js";import"./impls/gmail-outbound.js";import"./impls/google-calendar.js";import"./impls/elevenlabs-voice.js";import"./impls/gcs-storage.js";import"./impls/stripe-payments.js";import"./impls/postmark-email.js";import"./impls/twilio-sms.js";import"./impls/powens-client.js";import"./impls/powens-openbanking.js";import"./impls/provider-factory.js";import"./impls/index.js";
@@ -1 +0,0 @@
1
- import{e}from"../../ownership.js";e.Experimental;
@@ -1 +0,0 @@
1
- import{e}from"../../ownership.js";e.Stable;
@@ -1 +0,0 @@
1
- import{e}from"../../ownership.js";e.Experimental;
@@ -1 +0,0 @@
1
- import{e}from"../../ownership.js";e.Experimental;
@@ -1 +0,0 @@
1
- import{e}from"../../ownership.js";e.Stable;
@@ -1 +0,0 @@
1
- import{e}from"../../ownership.js";e.Stable;
@@ -1 +0,0 @@
1
- import"node:perf_hooks";
@@ -1 +0,0 @@
1
- import"./provider.js";
@@ -1 +0,0 @@
1
- import"./provider.js";import"@google-cloud/secret-manager";
@@ -1 +0,0 @@
1
- import"./provider.js";import"./gcp-secret-manager.js";import"./env-secret-provider.js";import"./manager.js";
@@ -1 +0,0 @@
1
- import"./provider.js";
@@ -1 +0,0 @@
1
- import"node:buffer";
@@ -1 +0,0 @@
1
- import"zod";
@@ -1 +0,0 @@
1
- import{t as e}from"../schema/dist/SchemaModel.js";import{l as t}from"../schema/dist/ScalarTypeEnum.js";import"../schema/dist/index.js";import{n,t as r}from"../spec.js";const i=new e({name:`KnowledgeSyncSchedule`,fields:{enabled:{type:t.Boolean(),isOptional:!1},cron:{type:t.String_unsecure(),isOptional:!0},intervalMs:{type:t.Int_unsecure(),isOptional:!0}}}),a=new e({name:`KnowledgeSourceRecord`,fields:{id:{type:t.ID(),isOptional:!1},tenantId:{type:t.ID(),isOptional:!1},spaceKey:{type:t.NonEmptyString(),isOptional:!1},spaceVersion:{type:t.Int_unsecure(),isOptional:!1},label:{type:t.String_unsecure(),isOptional:!1},sourceType:{type:t.String_unsecure(),isOptional:!1},syncSchedule:{type:i,isOptional:!0},lastSyncStatus:{type:t.String_unsecure(),isOptional:!0},lastSyncAt:{type:t.DateTime(),isOptional:!0},itemsProcessed:{type:t.Int_unsecure(),isOptional:!0},createdAt:{type:t.DateTime(),isOptional:!0},updatedAt:{type:t.DateTime(),isOptional:!0}}}),o=new e({name:`CreateKnowledgeSourceInput`,fields:{tenantId:{type:t.ID(),isOptional:!1},spaceKey:{type:t.NonEmptyString(),isOptional:!1},spaceVersion:{type:t.Int_unsecure(),isOptional:!1},label:{type:t.String_unsecure(),isOptional:!1},sourceType:{type:t.NonEmptyString(),isOptional:!1},config:{type:t.JSONObject(),isOptional:!1},syncSchedule:{type:i,isOptional:!0}}}),s=new e({name:`UpdateKnowledgeSourceInput`,fields:{sourceId:{type:t.ID(),isOptional:!1},label:{type:t.String_unsecure(),isOptional:!0},config:{type:t.JSONObject(),isOptional:!0},syncSchedule:{type:i,isOptional:!0}}}),c=new e({name:`DeleteKnowledgeSourceInput`,fields:{sourceId:{type:t.ID(),isOptional:!1}}}),l=new e({name:`DeleteKnowledgeSourceOutput`,fields:{success:{type:t.Boolean(),isOptional:!1}}}),u=new e({name:`ListKnowledgeSourcesInput`,fields:{tenantId:{type:t.ID(),isOptional:!1},spaceKey:{type:t.NonEmptyString(),isOptional:!0}}}),d=new e({name:`ListKnowledgeSourcesOutput`,fields:{sources:{type:a,isOptional:!1,isArray:!0}}}),f=new e({name:`TriggerKnowledgeSyncInput`,fields:{sourceId:{type:t.ID(),isOptional:!1}}}),p=new e({name:`TriggerKnowledgeSyncOutput`,fields:{success:{type:t.Boolean(),isOptional:!1},itemsProcessed:{type:t.Int_unsecure(),isOptional:!0},error:{type:t.String_unsecure(),isOptional:!0}}}),m=r({meta:{name:`knowledge.source.create`,version:1,description:`Create a knowledge source binding for a tenant.`,goal:`Onboard a new knowledge ingestion source such as Notion or uploads.`,context:`Used by Ops and App Studio to configure knowledge ingestion per tenant and space.`,owners:[`platform.knowledge`],tags:[`knowledge`,`sources`],stability:`experimental`},io:{input:o,output:a},policy:{auth:`admin`,policies:[{name:`platform.knowledge.manage`,version:1}]}}),h=r({meta:{name:`knowledge.source.update`,version:1,description:`Update metadata or configuration for a knowledge source.`,goal:`Allow rotation of credentials, sync schedules, and labels.`,context:`Supports editing how a tenant ingests knowledge (e.g., toggling sync cadence).`,owners:[`platform.knowledge`],tags:[`knowledge`,`sources`],stability:`experimental`},io:{input:s,output:a},policy:{auth:`admin`,policies:[{name:`platform.knowledge.manage`,version:1}]}}),g=r({meta:{name:`knowledge.source.delete`,version:1,description:`Delete a knowledge source binding for a tenant.`,goal:`Remove obsolete or compromised knowledge ingestion paths.`,context:`Ensures ephemeral or external sources can be removed cleanly without leaving residual bindings.`,owners:[`platform.knowledge`],tags:[`knowledge`,`sources`],stability:`experimental`},io:{input:c,output:l},policy:{auth:`admin`,policies:[{name:`platform.knowledge.manage`,version:1}]}}),_=n({meta:{name:`knowledge.source.list`,version:1,description:`List knowledge sources configured for a tenant.`,goal:`Provide visibility into knowledge ingest configuration and schedules.`,context:`Used by App Studio and Ops flows to surface knowledge sources and their health.`,owners:[`platform.knowledge`],tags:[`knowledge`,`sources`],stability:`experimental`},io:{input:u,output:d},policy:{auth:`admin`,policies:[{name:`platform.knowledge.read`,version:1}]}}),v=r({meta:{name:`knowledge.source.triggerSync`,version:1,description:`Trigger an immediate sync for a knowledge source.`,goal:`Support manual or automated sync retries for knowledge ingestion.`,context:`Invoked by Ops tooling or monitors when knowledge content must be refreshed or reprocessed.`,owners:[`platform.knowledge`],tags:[`knowledge`,`sources`],stability:`experimental`},io:{input:f,output:p},policy:{auth:`admin`,policies:[{name:`platform.knowledge.manage`,version:1}]}});export{_,g,h,m,v};
@@ -1 +0,0 @@
1
- import"./spaces/product-canon.js";import"./spaces/support-faq.js";import"./spaces/email-threads.js";import"./spaces/uploaded-docs.js";import"./spaces/financial-docs.js";import"./spaces/financial-overview.js";import"./spaces/index.js";
@@ -1 +0,0 @@
1
- import{e}from"../../ownership.js";e.Beta;
@@ -1 +0,0 @@
1
- import{e}from"../../ownership.js";e.Beta;
@@ -1 +0,0 @@
1
- import{e}from"../../ownership.js";e.Experimental;
@@ -1 +0,0 @@
1
- import"./product-canon.js";import"./support-faq.js";import"./email-threads.js";import"./uploaded-docs.js";import"./financial-docs.js";import"./financial-overview.js";
@@ -1 +0,0 @@
1
- import{e}from"../../ownership.js";e.Stable;
@@ -1 +0,0 @@
1
- import{e}from"../../ownership.js";e.Beta;
@@ -1 +0,0 @@
1
- import{e}from"../../ownership.js";e.Beta;
@@ -1 +0,0 @@
1
- import{t as e}from"./schema/dist/SchemaModel.js";import{l as t}from"./schema/dist/ScalarTypeEnum.js";import"./schema/dist/index.js";import{n,t as r}from"./spec.js";import{e as i,t as a}from"./ownership.js";const o=new e({name:`SaveOnboardingDraftInput`,description:`Input for saving onboarding draft`,fields:{data:{type:t.JSON(),isOptional:!1}}}),s=new e({name:`SaveOnboardingDraftOutput`,description:`Output for saving onboarding draft`,fields:{id:{type:t.ID(),isOptional:!1},organizationId:{type:t.ID(),isOptional:!1}}});r({meta:{name:`base.onboarding.saveDraft`,version:1,stability:i.Beta,owners:[a.PlatformSigil],tags:[`onboarding`,`draft`],description:`Save or update onboarding draft for active organization`,goal:`Persist onboarding progress incrementally for resumption and safety`,context:`Auto-saves every few seconds during onboarding; enables users to leave and resume`},io:{input:o,output:s},policy:{auth:`user`,escalate:null},transport:{gql:{field:`saveOnboardingDraft`},rest:{method:`POST`}}});const c=new e({name:`GetOnboardingDraftOutput`,description:`Onboarding draft payload`,fields:{id:{type:t.ID(),isOptional:!0},organizationId:{type:t.ID(),isOptional:!0},data:{type:t.JSON(),isOptional:!0},createdAt:{type:t.DateTime(),isOptional:!0},updatedAt:{type:t.DateTime(),isOptional:!0}}});n({meta:{name:`base.onboarding.getDraft`,version:1,stability:i.Beta,owners:[a.PlatformSigil],tags:[`onboarding`,`draft`],description:`Get onboarding draft for active organization`,goal:`Retrieve saved onboarding progress`,context:`Called on mount to restore in-progress onboarding`},io:{input:null,output:c},policy:{auth:`user`,escalate:null},transport:{gql:{field:`getOnboardingDraft`},rest:{method:`GET`}}});const l=new e({name:`DeleteOnboardingDraftOutput`,description:`Result of delete operation`,fields:{ok:{type:t.Boolean(),isOptional:!1}}});r({meta:{name:`base.onboarding.deleteDraft`,version:1,stability:i.Beta,owners:[a.PlatformSigil],tags:[`onboarding`,`draft`],description:`Delete onboarding draft for active organization`,goal:`Clear draft after completion or if user wants to restart`,context:`Called after successful onboarding or explicit user reset`},io:{input:null,output:l},policy:{auth:`user`,escalate:null},transport:{gql:{field:`deleteOnboardingDraft`},rest:{method:`POST`}}});const u=new e({name:`CompleteOnboardingBaseInput`,description:`Input for completing onboarding`,fields:{data:{type:t.JSON(),isOptional:!1}}}),d=new e({name:`CompleteOnboardingBaseOutput`,description:`Result of onboarding completion`,fields:{success:{type:t.Boolean(),isOptional:!1},userId:{type:t.ID(),isOptional:!0},organizationId:{type:t.ID(),isOptional:!0}}});r({meta:{name:`base.onboarding.complete`,version:1,stability:i.Beta,owners:[a.PlatformSigil],tags:[`onboarding`],description:`Complete onboarding and finalize user/organization setup`,goal:`Transition from draft to active profile`,context:`Validates all required fields, creates/updates entities, marks onboarding complete`},io:{input:u,output:d},policy:{auth:`user`,escalate:null},transport:{gql:{field:`completeOnboarding`},rest:{method:`POST`}}});export{l as d,c as l,d as m,o,u as p,s};
@@ -1 +0,0 @@
1
- const e={Idea:`idea`,InCreation:`in_creation`,Experimental:`experimental`,Beta:`beta`,Stable:`stable`,Deprecated:`deprecated`},t={ProductColiving:`product.coliving`,ProductStrit:`product.strit`,ProductArtisanos:`product.artisanos`,PlatformSigil:`platform.sigil`,PlatformMarketplace:`platform.marketplace`,PlatformContent:`platform.content`,PlatformFeatureFlags:`platform.featureflags`},n={Spots:`spots`,Collectivity:`collectivity`,Marketplace:`marketplace`,Sellers:`sellers`,Auth:`auth`,Login:`login`,Signup:`signup`,Guide:`guide`,Docs:`docs`,I18n:`i18n`,AtomicPages:`atomic:pages`,Incident:`incident`,Hygiene:`hygiene`,WeeklyPulse:`weekly_pulse`,WebAuth:`webauth`};export{e,n as r,t};
@@ -1 +0,0 @@
1
- import"zod";
@@ -1 +0,0 @@
1
- import"react";import"turndown";
@@ -1 +0,0 @@
1
- import{z as e}from"zod";
@@ -1 +0,0 @@
1
- import{z as e}from"zod";
@@ -1 +0,0 @@
1
- import"./service.js";
@@ -1 +0,0 @@
1
- import"node:timers/promises";
@@ -1 +0,0 @@
1
- import"./events.js";
@@ -1 +0,0 @@
1
- import{z as e}from"zod";
@@ -1 +0,0 @@
1
- import{z as e}from"zod";import"graphql";
@@ -1 +0,0 @@
1
- import{z as e}from"zod";import{GraphQLScalarType as t}from"graphql";var n=class extends t{zodSchema;jsonSchemaDef;constructor(e){super(e),this.zodSchema=e.zod,this.jsonSchemaDef=e.jsonSchema}getZod(){return this.zodSchema}getPothos(){return this}getJson(){return typeof this.jsonSchemaDef==`function`?this.jsonSchemaDef():this.jsonSchemaDef}getJsonSchemaDef(){return this.jsonSchemaDef}getJsonSchema(){let e=t=>{let n=typeof t==`function`?t():t;if(Array.isArray(n))return n.map(t=>e(t));if(n&&typeof n==`object`){let t={};for(let[r,i]of Object.entries(n))t[r]=e(i);return t}return n};return e(this.getJson())}};export{n};
@@ -1 +0,0 @@
1
- import{n as e}from"./FieldType.js";import{z as t}from"zod";import{Kind as n}from"graphql";const r=/^[A-Za-z]{2}(?:-[A-Za-z0-9]{2,8})*$/,i=/^(?:UTC|[A-Za-z_]+\/[A-Za-z_]+)$/,a=/^[+]?\d[\d\s().-]{3,}$/,o=/^[A-Z]{3}$/,s=/^[A-Z]{2}$/,c=-180,l={String_unsecure:()=>new e({name:`String_unsecure`,description:`Unvalidated string scalar`,zod:t.string(),parseValue:e=>t.string().parse(e),serialize:e=>String(e),parseLiteral:e=>{if(e.kind!==n.STRING)throw TypeError(`Invalid literal`);return e.value},jsonSchema:{type:`string`}}),Int_unsecure:()=>new e({name:`Int_unsecure`,description:`Unvalidated integer scalar`,zod:t.number().int(),parseValue:e=>{let n=typeof e==`number`?e:Number(e);return t.number().int().parse(n)},serialize:e=>Math.trunc(typeof e==`number`?e:Number(e)),parseLiteral:e=>{if(e.kind!==n.INT)throw TypeError(`Invalid literal`);return Number(e.value)},jsonSchema:{type:`integer`}}),Float_unsecure:()=>new e({name:`Float_unsecure`,description:`Unvalidated float scalar`,zod:t.number(),parseValue:e=>{let n=typeof e==`number`?e:Number(e);return t.number().parse(n)},serialize:e=>Number(e),parseLiteral:e=>{if(e.kind!==n.FLOAT&&e.kind!==n.INT)throw TypeError(`Invalid literal`);return Number(e.value)},jsonSchema:{type:`number`}}),Boolean:()=>new e({name:`Boolean`,description:`Unvalidated boolean scalar`,zod:t.boolean(),parseValue:e=>t.coerce.boolean().parse(e),serialize:e=>!!e,parseLiteral:e=>{if(e.kind!==n.BOOLEAN)throw TypeError(`Invalid literal`);return e.value},jsonSchema:{type:`boolean`}}),ID:()=>new e({name:`ID`,description:`Unvalidated id scalar`,zod:t.string(),parseValue:e=>t.string().parse(e),serialize:e=>String(e),parseLiteral:e=>{if(e.kind!==n.STRING)throw TypeError(`Invalid literal`);return e.value},jsonSchema:{type:`string`}}),JSON:()=>new e({name:`JSON`,zod:t.any(),parseValue:e=>e,serialize:e=>e,jsonSchema:{}}),JSONObject:()=>new e({name:`JSONObject`,zod:t.record(t.string(),t.any()),parseValue:e=>t.record(t.string(),t.any()).parse(e),serialize:e=>e??{},jsonSchema:{type:`object`}}),Date:()=>new e({name:`Date`,zod:t.date(),parseValue:e=>e instanceof Date?e:new Date(String(e)),serialize:e=>e instanceof Date?e.toISOString().split(`T`)[0]:String(e),jsonSchema:{type:`string`,format:`date`}}),DateTime:()=>new e({name:`DateTime`,zod:t.date(),parseValue:e=>e instanceof Date?e:new Date(String(e)),serialize:e=>e instanceof Date?e.toISOString():String(e),jsonSchema:{type:`string`,format:`date-time`}}),Time:()=>new e({name:`Time`,zod:t.string().regex(/^\d{2}:\d{2}(:\d{2})?$/),parseValue:e=>t.string().regex(/^\d{2}:\d{2}(:\d{2})?$/).parse(e),serialize:e=>String(e),jsonSchema:{type:`string`,pattern:`^\\d{2}:\\d{2}(:\\d{2})?$`}}),EmailAddress:()=>new e({name:`EmailAddress`,zod:t.string().email(),parseValue:e=>t.string().email().parse(e),serialize:e=>String(e),jsonSchema:{type:`string`,format:`email`}}),URL:()=>new e({name:`URL`,zod:t.string().url(),parseValue:e=>t.string().url().parse(e),serialize:e=>String(e),jsonSchema:{type:`string`,format:`uri`}}),PhoneNumber:()=>new e({name:`PhoneNumber`,zod:t.string().regex(a),parseValue:e=>t.string().regex(a).parse(e),serialize:e=>String(e),jsonSchema:{type:`string`,pattern:a.source}}),NonEmptyString:()=>new e({name:`NonEmptyString`,zod:t.string().min(1),parseValue:e=>t.string().min(1).parse(e),serialize:e=>String(e),jsonSchema:{type:`string`,minLength:1}}),Locale:()=>new e({name:`Locale`,zod:t.string().regex(r),parseValue:e=>t.string().regex(r).parse(e),serialize:e=>String(e),jsonSchema:{type:`string`,pattern:r.source}}),TimeZone:()=>new e({name:`TimeZone`,zod:t.string().regex(i),parseValue:e=>t.string().regex(i).parse(e),serialize:e=>String(e),jsonSchema:{type:`string`,pattern:i.source}}),Latitude:()=>new e({name:`Latitude`,zod:t.number().min(-90).max(90),parseValue:e=>t.coerce.number().min(-90).max(90).parse(e),serialize:e=>Number(e),jsonSchema:{type:`number`,minimum:-90,maximum:90}}),Longitude:()=>new e({name:`Longitude`,zod:t.number().min(c).max(180),parseValue:e=>t.coerce.number().min(c).max(180).parse(e),serialize:e=>Number(e),jsonSchema:{type:`number`,minimum:c,maximum:180}}),Currency:()=>new e({name:`Currency`,zod:t.string().regex(o),parseValue:e=>t.string().regex(o).parse(e),serialize:e=>String(e),jsonSchema:{type:`string`,pattern:o.source}}),CountryCode:()=>new e({name:`CountryCode`,zod:t.string().regex(s),parseValue:e=>t.string().regex(s).parse(e),serialize:e=>String(e),jsonSchema:{type:`string`,pattern:s.source}})};export{l};
@@ -1 +0,0 @@
1
- import"./EnumType.js";import"./FieldType.js";import{z as e}from"zod";var t=class{constructor(e){this.config=e}getZod(){let t=Object.entries(this.config.fields).reduce((t,[n,r])=>{let i=r.type.getZod(),a=r.isArray?e.array(i):i;return t[n]=r.isOptional?a.optional():a,t},{});return e.object(t)}getPothosInput(){return this.config.name}};export{t};
@@ -1 +0,0 @@
1
- import{z as e}from"zod";
@@ -1 +0,0 @@
1
- import"./defineEntity.js";import"./types.js";
@@ -1 +0,0 @@
1
- import{z as e}from"zod";
@@ -1 +0,0 @@
1
- import"./EnumType.js";import"./FieldType.js";import"./SchemaModel.js";import"./ScalarTypeEnum.js";import"./entity/defineEntity.js";import"./entity/index.js";
@@ -1 +0,0 @@
1
- import"../jsonschema.js";import"@pothos/plugin-prisma";import"@pothos/plugin-complexity";import"@pothos/plugin-relay";import"@pothos/plugin-dataloader";import"@pothos/plugin-tracing";
@@ -1 +0,0 @@
1
- "use server";import"../graphql-federation/dist/index.js";import"graphql";
@@ -1 +0,0 @@
1
- import"./graphql-pothos.js";import"./graphql-schema-export.js";import"./provider-mcp.js";import"./rest-generic.js";import"./rest-elysia.js";import"./rest-express.js";import"./rest-next-app.js";import"./rest-next-pages.js";
@@ -1 +0,0 @@
1
- import"../presentations.v2.js";import"../jsonschema.js";import"../presentations.js";import"zod";import"@modelcontextprotocol/sdk/server/mcp.js";import"zod-to-json-schema";
@@ -1 +0,0 @@
1
- import"./rest-generic.js";
@@ -1 +0,0 @@
1
- import"./rest-generic.js";
@@ -1 +0,0 @@
1
- import"../jsonschema.js";
@@ -1 +0,0 @@
1
- import"./rest-generic.js";
@@ -1 +0,0 @@
1
- import"./rest-generic.js";
@@ -1 +0,0 @@
1
- const e=e=>({...e,meta:{...e.meta,kind:`command`},policy:{...e.policy,idempotent:e.policy?.policy?.idempotent??!1}}),t=e=>({...e,meta:{...e.meta,kind:`query`},policy:{...e.policy,idempotent:!0}});export{t as n,e as t};