@lssm/lib.metering 0.0.0-canary-20251217060804 → 0.0.0-canary-20251217062139
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/contracts/dist/capabilities/openbanking.js +1 -0
- package/dist/contracts/dist/client/index.js +1 -0
- package/dist/contracts/dist/client/react/feature-render.js +1 -0
- package/dist/contracts/dist/client/react/form-render.js +1 -0
- package/dist/contracts/dist/client/react/index.js +1 -0
- package/dist/contracts/dist/contract-registry/index.js +1 -0
- package/dist/contracts/dist/contract-registry/schemas.js +1 -0
- package/dist/contracts/dist/docs/PUBLISHING.docblock.js +76 -0
- package/dist/contracts/dist/docs/accessibility_wcag_compliance_specs.docblock.js +350 -0
- package/dist/contracts/dist/docs/index.js +1 -0
- package/dist/contracts/dist/docs/presentations.js +1 -0
- package/dist/contracts/dist/docs/registry.js +1 -0
- package/dist/contracts/dist/docs/tech/PHASE_1_QUICKSTART.docblock.js +383 -0
- package/dist/contracts/dist/docs/tech/PHASE_2_AI_NATIVE_OPERATIONS.docblock.js +68 -0
- package/dist/contracts/dist/docs/tech/PHASE_3_AUTO_EVOLUTION.docblock.js +140 -0
- package/dist/contracts/dist/docs/tech/PHASE_4_PERSONALIZATION_ENGINE.docblock.js +86 -0
- package/dist/contracts/dist/docs/tech/PHASE_5_ZERO_TOUCH_OPERATIONS.docblock.js +1 -0
- package/dist/contracts/dist/docs/tech/auth/better-auth-nextjs.docblock.js +58 -0
- package/dist/contracts/dist/docs/tech/contracts/openapi-export.docblock.js +38 -0
- package/dist/contracts/dist/docs/tech/lifecycle-stage-system.docblock.js +213 -0
- package/dist/contracts/dist/docs/tech/llm/llm-integration.docblock.js +289 -0
- package/dist/contracts/dist/docs/tech/mcp-endpoints.docblock.js +1 -0
- package/dist/contracts/dist/docs/tech/presentation-runtime.docblock.js +1 -0
- package/dist/contracts/dist/docs/tech/schema/README.docblock.js +262 -0
- package/dist/contracts/dist/docs/tech/studio/learning-events.docblock.js +1 -0
- package/dist/contracts/dist/docs/tech/studio/learning-journeys.docblock.js +57 -0
- package/dist/contracts/dist/docs/tech/studio/platform-admin-panel.docblock.js +63 -0
- package/dist/contracts/dist/docs/tech/studio/project-access-teams.docblock.js +36 -0
- package/dist/contracts/dist/docs/tech/studio/project-routing.docblock.js +1 -0
- package/dist/contracts/dist/docs/tech/studio/sandbox-unlogged.docblock.js +20 -0
- package/dist/contracts/dist/docs/tech/studio/team-invitations.docblock.js +65 -0
- package/dist/contracts/dist/docs/tech/studio/workspace-ops.docblock.js +1 -0
- package/dist/contracts/dist/docs/tech/studio/workspaces.docblock.js +41 -0
- package/dist/contracts/dist/docs/tech/telemetry-ingest.docblock.js +122 -0
- package/dist/contracts/dist/docs/tech/templates/runtime.docblock.js +1 -0
- package/dist/contracts/dist/docs/tech/vscode-extension.docblock.js +68 -0
- package/dist/contracts/dist/docs/tech/workflows/overview.docblock.js +1 -0
- package/dist/contracts/dist/events.js +1 -0
- package/dist/contracts/dist/experiments/evaluator.js +1 -0
- package/dist/contracts/dist/index.js +1 -0
- package/dist/contracts/dist/install.js +1 -0
- package/dist/contracts/dist/integrations/contracts.js +1 -0
- package/dist/contracts/dist/integrations/index.js +1 -0
- package/dist/contracts/dist/integrations/openbanking/contracts/accounts.js +1 -0
- package/dist/contracts/dist/integrations/openbanking/contracts/balances.js +1 -0
- package/dist/contracts/dist/integrations/openbanking/contracts/index.js +1 -0
- package/dist/contracts/dist/integrations/openbanking/contracts/transactions.js +1 -0
- package/dist/contracts/dist/integrations/openbanking/models.js +1 -0
- package/dist/contracts/dist/integrations/openbanking/telemetry.js +1 -0
- package/dist/contracts/dist/integrations/providers/elevenlabs.js +1 -0
- package/dist/contracts/dist/integrations/providers/gcs-storage.js +1 -0
- package/dist/contracts/dist/integrations/providers/gmail.js +1 -0
- package/dist/contracts/dist/integrations/providers/google-calendar.js +1 -0
- package/dist/contracts/dist/integrations/providers/index.js +1 -0
- package/dist/contracts/dist/integrations/providers/mistral.js +1 -0
- package/dist/contracts/dist/integrations/providers/postmark.js +1 -0
- package/dist/contracts/dist/integrations/providers/powens.js +1 -0
- package/dist/contracts/dist/integrations/providers/qdrant.js +1 -0
- package/dist/contracts/dist/integrations/providers/registry.js +1 -0
- package/dist/contracts/dist/integrations/providers/stripe.js +1 -0
- package/dist/contracts/dist/integrations/providers/twilio-sms.js +1 -0
- package/dist/contracts/dist/jsonschema.js +1 -0
- package/dist/contracts/dist/knowledge/contracts.js +1 -0
- package/dist/contracts/dist/knowledge/index.js +1 -0
- package/dist/contracts/dist/knowledge/spaces/email-threads.js +1 -0
- package/dist/contracts/dist/knowledge/spaces/financial-docs.js +1 -0
- package/dist/contracts/dist/knowledge/spaces/financial-overview.js +1 -0
- package/dist/contracts/dist/knowledge/spaces/index.js +1 -0
- package/dist/contracts/dist/knowledge/spaces/product-canon.js +1 -0
- package/dist/contracts/dist/knowledge/spaces/support-faq.js +1 -0
- package/dist/contracts/dist/knowledge/spaces/uploaded-docs.js +1 -0
- package/dist/contracts/dist/llm/exporters.js +1 -0
- package/dist/contracts/dist/llm/index.js +1 -0
- package/dist/contracts/dist/llm/prompts.js +1 -0
- package/dist/contracts/dist/onboarding-base.js +1 -0
- package/dist/contracts/dist/openapi.js +1 -0
- package/dist/contracts/dist/ownership.js +1 -0
- package/dist/contracts/dist/presentations.js +1 -0
- package/dist/contracts/dist/presentations.v2.js +1 -0
- package/dist/contracts/dist/prompt.js +1 -0
- package/dist/contracts/dist/promptRegistry.js +1 -0
- package/dist/contracts/dist/regenerator/index.js +1 -0
- package/dist/contracts/dist/regenerator/service.js +1 -0
- package/dist/contracts/dist/registry.js +1 -0
- package/dist/contracts/dist/resources.js +1 -0
- package/dist/contracts/dist/schema/dist/EnumType.js +1 -0
- package/dist/contracts/dist/schema/dist/FieldType.js +1 -0
- package/dist/contracts/dist/schema/dist/ScalarTypeEnum.js +1 -0
- package/dist/contracts/dist/schema/dist/SchemaModel.js +1 -0
- package/dist/contracts/dist/schema/dist/entity/defineEntity.js +1 -0
- package/dist/contracts/dist/schema/dist/entity/index.js +1 -0
- package/dist/contracts/dist/schema/dist/entity/types.js +1 -0
- package/dist/contracts/dist/schema/dist/index.js +1 -0
- package/dist/contracts/dist/server/graphql-pothos.js +1 -0
- package/dist/contracts/dist/server/index.js +1 -0
- package/dist/contracts/dist/server/mcp/createMcpServer.js +1 -0
- package/dist/contracts/dist/server/mcp/registerPresentations.js +1 -0
- package/dist/contracts/dist/server/mcp/registerPrompts.js +1 -0
- package/dist/contracts/dist/server/mcp/registerResources.js +1 -0
- package/dist/contracts/dist/server/mcp/registerTools.js +1 -0
- package/dist/contracts/dist/server/provider-mcp.js +1 -0
- package/dist/contracts/dist/server/rest-elysia.js +1 -0
- package/dist/contracts/dist/server/rest-express.js +1 -0
- package/dist/contracts/dist/server/rest-generic.js +1 -0
- package/dist/contracts/dist/server/rest-next-app.js +1 -0
- package/dist/contracts/dist/server/rest-next-pages.js +1 -0
- package/dist/contracts/dist/spec.js +1 -0
- package/dist/contracts/dist/telemetry/index.js +1 -0
- package/dist/contracts/dist/telemetry/tracker.js +1 -0
- package/dist/contracts/dist/tests/index.js +1 -0
- package/dist/contracts/dist/tests/runner.js +1 -0
- package/dist/contracts/dist/workflow/index.js +1 -0
- package/dist/contracts/dist/workflow/runner.js +1 -0
- package/dist/contracts/index.d.ts +291 -291
- package/dist/contracts/index.js +1 -1
- package/dist/docs/metering.docblock.js +1 -1
- package/dist/entities/index.d.ts +185 -185
- package/dist/entities/index.js +1 -1
- package/dist/events.d.ts +136 -136
- package/dist/events.js +1 -1
- package/dist/schema/dist/EnumType.js +1 -0
- package/dist/schema/dist/FieldType.js +1 -0
- package/dist/schema/dist/ScalarTypeEnum.js +1 -0
- package/dist/schema/dist/SchemaModel.js +1 -0
- package/dist/schema/dist/entity/defineEntity.js +1 -0
- package/dist/schema/dist/entity/index.js +1 -0
- package/dist/schema/dist/entity/types.js +1 -0
- package/dist/schema/dist/index.js +1 -0
- package/package.json +5 -5
package/dist/contracts/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
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.metering`],a=t({name:`MetricDefinition`,description:`Represents a metric definition`,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},unit:{type:e.String_unsecure(),isOptional:!1},aggregationType:{type:e.String_unsecure(),isOptional:!1},resetPeriod:{type:e.String_unsecure(),isOptional:!1},category:{type:e.String_unsecure(),isOptional:!0},isActive:{type:e.Boolean(),isOptional:!1},orgId:{type:e.String_unsecure(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1},updatedAt:{type:e.DateTime(),isOptional:!1}}}),o=t({name:`UsageRecord`,description:`Represents a usage record`,fields:{id:{type:e.String_unsecure(),isOptional:!1},metricKey:{type:e.String_unsecure(),isOptional:!1},subjectType:{type:e.String_unsecure(),isOptional:!1},subjectId:{type:e.String_unsecure(),isOptional:!1},quantity:{type:e.Float_unsecure(),isOptional:!1},source:{type:e.String_unsecure(),isOptional:!0},resourceId:{type:e.String_unsecure(),isOptional:!0},resourceType:{type:e.String_unsecure(),isOptional:!0},metadata:{type:e.JSON(),isOptional:!0},timestamp:{type:e.DateTime(),isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1}}}),s=t({name:`UsageSummary`,description:`Represents aggregated usage`,fields:{id:{type:e.String_unsecure(),isOptional:!1},metricKey:{type:e.String_unsecure(),isOptional:!1},subjectType:{type:e.String_unsecure(),isOptional:!1},subjectId:{type:e.String_unsecure(),isOptional:!1},periodType:{type:e.String_unsecure(),isOptional:!1},periodStart:{type:e.DateTime(),isOptional:!1},periodEnd:{type:e.DateTime(),isOptional:!1},totalQuantity:{type:e.Float_unsecure(),isOptional:!1},recordCount:{type:e.Int_unsecure(),isOptional:!1},minQuantity:{type:e.Float_unsecure(),isOptional:!0},maxQuantity:{type:e.Float_unsecure(),isOptional:!0},avgQuantity:{type:e.Float_unsecure(),isOptional:!0}}}),c=t({name:`UsageThreshold`,description:`Represents a usage threshold`,fields:{id:{type:e.String_unsecure(),isOptional:!1},metricKey:{type:e.String_unsecure(),isOptional:!1},subjectType:{type:e.String_unsecure(),isOptional:!0},subjectId:{type:e.String_unsecure(),isOptional:!0},name:{type:e.String_unsecure(),isOptional:!1},threshold:{type:e.Float_unsecure(),isOptional:!1},warnThreshold:{type:e.Float_unsecure(),isOptional:!0},periodType:{type:e.String_unsecure(),isOptional:!1},action:{type:e.String_unsecure(),isOptional:!1},currentValue:{type:e.Float_unsecure(),isOptional:!1},isActive:{type:e.Boolean(),isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1}}}),l=t({name:`DefineMetricInput`,description:`Input for defining a metric`,fields:{key:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!1},description:{type:e.String_unsecure(),isOptional:!0},unit:{type:e.String_unsecure(),isOptional:!1},aggregationType:{type:e.String_unsecure(),isOptional:!0},resetPeriod:{type:e.String_unsecure(),isOptional:!0},category:{type:e.String_unsecure(),isOptional:!0},orgId:{type:e.String_unsecure(),isOptional:!0},metadata:{type:e.JSON(),isOptional:!0}}}),u=t({name:`UpdateMetricInput`,description:`Input for updating a metric`,fields:{metricId:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!0},description:{type:e.String_unsecure(),isOptional:!0},category:{type:e.String_unsecure(),isOptional:!0},isActive:{type:e.Boolean(),isOptional:!0},metadata:{type:e.JSON(),isOptional:!0}}}),d=t({name:`DeleteMetricInput`,description:`Input for deleting a metric`,fields:{metricId:{type:e.String_unsecure(),isOptional:!1}}}),f=t({name:`GetMetricInput`,description:`Input for getting a metric`,fields:{key:{type:e.String_unsecure(),isOptional:!1},orgId:{type:e.String_unsecure(),isOptional:!0}}}),p=t({name:`ListMetricsInput`,description:`Input for listing metrics`,fields:{orgId:{type:e.String_unsecure(),isOptional:!0},category:{type:e.String_unsecure(),isOptional:!0},isActive:{type:e.Boolean(),isOptional:!0},limit:{type:e.Int_unsecure(),isOptional:!0},offset:{type:e.Int_unsecure(),isOptional:!0}}}),m=t({name:`ListMetricsOutput`,description:`Output for listing metrics`,fields:{metrics:{type:a,isArray:!0,isOptional:!1},total:{type:e.Int_unsecure(),isOptional:!1}}}),h=t({name:`RecordUsageInput`,description:`Input for recording usage`,fields:{metricKey:{type:e.String_unsecure(),isOptional:!1},subjectType:{type:e.String_unsecure(),isOptional:!1},subjectId:{type:e.String_unsecure(),isOptional:!1},quantity:{type:e.Float_unsecure(),isOptional:!1},timestamp:{type:e.DateTime(),isOptional:!0},source:{type:e.String_unsecure(),isOptional:!0},resourceId:{type:e.String_unsecure(),isOptional:!0},resourceType:{type:e.String_unsecure(),isOptional:!0},metadata:{type:e.JSON(),isOptional:!0},idempotencyKey:{type:e.String_unsecure(),isOptional:!0}}}),g=t({name:`RecordBatchUsageInput`,description:`Input for recording batch usage`,fields:{records:{type:h,isArray:!0,isOptional:!1}}}),_=t({name:`RecordBatchUsageOutput`,description:`Output for recording batch usage`,fields:{recordedCount:{type:e.Int_unsecure(),isOptional:!1},skippedCount:{type:e.Int_unsecure(),isOptional:!1},recordIds:{type:e.JSON(),isOptional:!1}}}),v=t({name:`GetUsageInput`,description:`Input for getting usage`,fields:{metricKey:{type:e.String_unsecure(),isOptional:!1},subjectType:{type:e.String_unsecure(),isOptional:!1},subjectId:{type:e.String_unsecure(),isOptional:!1},startDate:{type:e.DateTime(),isOptional:!1},endDate:{type:e.DateTime(),isOptional:!1},limit:{type:e.Int_unsecure(),isOptional:!0},offset:{type:e.Int_unsecure(),isOptional:!0}}}),y=t({name:`GetUsageOutput`,description:`Output for getting usage`,fields:{records:{type:o,isArray:!0,isOptional:!1},total:{type:e.Int_unsecure(),isOptional:!1},totalQuantity:{type:e.Float_unsecure(),isOptional:!1}}}),b=t({name:`GetUsageSummaryInput`,description:`Input for getting usage summary`,fields:{metricKey:{type:e.String_unsecure(),isOptional:!1},subjectType:{type:e.String_unsecure(),isOptional:!1},subjectId:{type:e.String_unsecure(),isOptional:!1},periodType:{type:e.String_unsecure(),isOptional:!1},startDate:{type:e.DateTime(),isOptional:!1},endDate:{type:e.DateTime(),isOptional:!0}}}),x=t({name:`GetUsageSummaryOutput`,description:`Output for getting usage summary`,fields:{summaries:{type:s,isArray:!0,isOptional:!1},total:{type:e.Int_unsecure(),isOptional:!1}}}),S=t({name:`CreateThresholdInput`,description:`Input for creating a threshold`,fields:{metricKey:{type:e.String_unsecure(),isOptional:!1},subjectType:{type:e.String_unsecure(),isOptional:!0},subjectId:{type:e.String_unsecure(),isOptional:!0},name:{type:e.String_unsecure(),isOptional:!1},threshold:{type:e.Float_unsecure(),isOptional:!1},warnThreshold:{type:e.Float_unsecure(),isOptional:!0},periodType:{type:e.String_unsecure(),isOptional:!0},action:{type:e.String_unsecure(),isOptional:!0},notifyEmails:{type:e.JSON(),isOptional:!0},notifyWebhook:{type:e.String_unsecure(),isOptional:!0}}}),C=t({name:`UpdateThresholdInput`,description:`Input for updating a threshold`,fields:{thresholdId:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!0},threshold:{type:e.Float_unsecure(),isOptional:!0},warnThreshold:{type:e.Float_unsecure(),isOptional:!0},action:{type:e.String_unsecure(),isOptional:!0},notifyEmails:{type:e.JSON(),isOptional:!0},notifyWebhook:{type:e.String_unsecure(),isOptional:!0},isActive:{type:e.Boolean(),isOptional:!0}}}),w=t({name:`DeleteThresholdInput`,description:`Input for deleting a threshold`,fields:{thresholdId:{type:e.String_unsecure(),isOptional:!1}}}),T=t({name:`ListThresholdsInput`,description:`Input for listing thresholds`,fields:{metricKey:{type:e.String_unsecure(),isOptional:!0},subjectType:{type:e.String_unsecure(),isOptional:!0},subjectId:{type:e.String_unsecure(),isOptional:!0},isActive:{type:e.Boolean(),isOptional:!0}}}),E=t({name:`ListThresholdsOutput`,description:`Output for listing thresholds`,fields:{thresholds:{type:c,isArray:!0,isOptional:!1},total:{type:e.Int_unsecure(),isOptional:!1}}}),D=t({name:`SuccessOutput`,description:`Generic success output`,fields:{success:{type:e.Boolean(),isOptional:!1}}}),O=n({meta:{name:`metric.define`,version:1,stability:`stable`,owners:[...i],tags:[`metering`,`metric`,`define`],description:`Define a new usage metric.`,goal:`Create a new metric for tracking usage.`,context:`Called when setting up metering.`},io:{input:l,output:a,errors:{METRIC_KEY_EXISTS:{description:`Metric key already exists`,http:409,gqlCode:`METRIC_KEY_EXISTS`,when:`A metric with this key already exists`}}},policy:{auth:`admin`}}),k=n({meta:{name:`metric.update`,version:1,stability:`stable`,owners:[...i],tags:[`metering`,`metric`,`update`],description:`Update a metric definition.`,goal:`Modify metric configuration.`,context:`Called when updating metric settings.`},io:{input:u,output:a,errors:{METRIC_NOT_FOUND:{description:`Metric does not exist`,http:404,gqlCode:`METRIC_NOT_FOUND`,when:`Metric ID is invalid`}}},policy:{auth:`admin`}}),A=n({meta:{name:`metric.delete`,version:1,stability:`stable`,owners:[...i],tags:[`metering`,`metric`,`delete`],description:`Delete a metric definition.`,goal:`Remove a metric and its data.`,context:`Called when removing a metric.`},io:{input:d,output:D,errors:{METRIC_NOT_FOUND:{description:`Metric does not exist`,http:404,gqlCode:`METRIC_NOT_FOUND`,when:`Metric ID is invalid`}}},policy:{auth:`admin`}}),j=r({meta:{name:`metric.get`,version:1,stability:`stable`,owners:[...i],tags:[`metering`,`metric`,`get`],description:`Get a metric by key.`,goal:`Retrieve metric definition.`,context:`Called to inspect metric details.`},io:{input:f,output:a,errors:{METRIC_NOT_FOUND:{description:`Metric does not exist`,http:404,gqlCode:`METRIC_NOT_FOUND`,when:`Metric key is invalid`}}},policy:{auth:`user`}}),M=r({meta:{name:`metric.list`,version:1,stability:`stable`,owners:[...i],tags:[`metering`,`metric`,`list`],description:`List all metrics.`,goal:`View configured metrics.`,context:`Called to browse metrics.`},io:{input:p,output:m},policy:{auth:`user`}}),N=n({meta:{name:`usage.record`,version:1,stability:`stable`,owners:[...i],tags:[`metering`,`usage`,`record`],description:`Record a usage event.`,goal:`Track usage for billing and monitoring.`,context:`Called when usage occurs.`},io:{input:h,output:o,errors:{METRIC_NOT_FOUND:{description:`Metric does not exist`,http:404,gqlCode:`METRIC_NOT_FOUND`,when:`Metric key is invalid`},DUPLICATE_RECORD:{description:`Record already exists`,http:409,gqlCode:`DUPLICATE_RECORD`,when:`Idempotency key already used`}}},policy:{auth:`admin`}}),P=n({meta:{name:`usage.recordBatch`,version:1,stability:`stable`,owners:[...i],tags:[`metering`,`usage`,`batch`],description:`Record multiple usage events.`,goal:`Efficiently track bulk usage.`,context:`Called for batch processing.`},io:{input:g,output:_},policy:{auth:`admin`}}),F=r({meta:{name:`usage.get`,version:1,stability:`stable`,owners:[...i],tags:[`metering`,`usage`,`get`],description:`Get usage records for a subject.`,goal:`View detailed usage history.`,context:`Called to analyze usage.`},io:{input:v,output:y},policy:{auth:`user`}}),I=r({meta:{name:`usage.getSummary`,version:1,stability:`stable`,owners:[...i],tags:[`metering`,`usage`,`summary`],description:`Get aggregated usage summary.`,goal:`View usage totals for billing.`,context:`Called for billing and reporting.`},io:{input:b,output:x},policy:{auth:`user`}}),L=n({meta:{name:`threshold.create`,version:1,stability:`stable`,owners:[...i],tags:[`metering`,`threshold`,`create`],description:`Create a usage threshold.`,goal:`Set up usage limits and alerts.`,context:`Called when configuring limits.`},io:{input:S,output:c,errors:{METRIC_NOT_FOUND:{description:`Metric does not exist`,http:404,gqlCode:`METRIC_NOT_FOUND`,when:`Metric key is invalid`}}},policy:{auth:`admin`}}),R=n({meta:{name:`threshold.update`,version:1,stability:`stable`,owners:[...i],tags:[`metering`,`threshold`,`update`],description:`Update a threshold.`,goal:`Modify threshold configuration.`,context:`Called when adjusting limits.`},io:{input:C,output:c,errors:{THRESHOLD_NOT_FOUND:{description:`Threshold does not exist`,http:404,gqlCode:`THRESHOLD_NOT_FOUND`,when:`Threshold ID is invalid`}}},policy:{auth:`admin`}}),z=n({meta:{name:`threshold.delete`,version:1,stability:`stable`,owners:[...i],tags:[`metering`,`threshold`,`delete`],description:`Delete a threshold.`,goal:`Remove a usage threshold.`,context:`Called when removing limits.`},io:{input:w,output:D,errors:{THRESHOLD_NOT_FOUND:{description:`Threshold does not exist`,http:404,gqlCode:`THRESHOLD_NOT_FOUND`,when:`Threshold ID is invalid`}}},policy:{auth:`admin`}}),B=r({meta:{name:`threshold.list`,version:1,stability:`stable`,owners:[...i],tags:[`metering`,`threshold`,`list`],description:`List usage thresholds.`,goal:`View configured limits.`,context:`Called to browse thresholds.`},io:{input:T,output:E},policy:{auth:`user`}});export{L as CreateThresholdContract,O as DefineMetricContract,A as DeleteMetricContract,z as DeleteThresholdContract,j as GetMetricContract,F as GetUsageContract,I as GetUsageSummaryContract,M as ListMetricsContract,B as ListThresholdsContract,a as MetricDefinitionModel,P as RecordBatchUsageContract,N as RecordUsageContract,k as UpdateMetricContract,R as UpdateThresholdContract,o as UsageRecordModel,s as UsageSummaryModel,c as UsageThresholdModel};
|
|
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.metering`],a=t({name:`MetricDefinition`,description:`Represents a metric definition`,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},unit:{type:e.String_unsecure(),isOptional:!1},aggregationType:{type:e.String_unsecure(),isOptional:!1},resetPeriod:{type:e.String_unsecure(),isOptional:!1},category:{type:e.String_unsecure(),isOptional:!0},isActive:{type:e.Boolean(),isOptional:!1},orgId:{type:e.String_unsecure(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1},updatedAt:{type:e.DateTime(),isOptional:!1}}}),o=t({name:`UsageRecord`,description:`Represents a usage record`,fields:{id:{type:e.String_unsecure(),isOptional:!1},metricKey:{type:e.String_unsecure(),isOptional:!1},subjectType:{type:e.String_unsecure(),isOptional:!1},subjectId:{type:e.String_unsecure(),isOptional:!1},quantity:{type:e.Float_unsecure(),isOptional:!1},source:{type:e.String_unsecure(),isOptional:!0},resourceId:{type:e.String_unsecure(),isOptional:!0},resourceType:{type:e.String_unsecure(),isOptional:!0},metadata:{type:e.JSON(),isOptional:!0},timestamp:{type:e.DateTime(),isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1}}}),s=t({name:`UsageSummary`,description:`Represents aggregated usage`,fields:{id:{type:e.String_unsecure(),isOptional:!1},metricKey:{type:e.String_unsecure(),isOptional:!1},subjectType:{type:e.String_unsecure(),isOptional:!1},subjectId:{type:e.String_unsecure(),isOptional:!1},periodType:{type:e.String_unsecure(),isOptional:!1},periodStart:{type:e.DateTime(),isOptional:!1},periodEnd:{type:e.DateTime(),isOptional:!1},totalQuantity:{type:e.Float_unsecure(),isOptional:!1},recordCount:{type:e.Int_unsecure(),isOptional:!1},minQuantity:{type:e.Float_unsecure(),isOptional:!0},maxQuantity:{type:e.Float_unsecure(),isOptional:!0},avgQuantity:{type:e.Float_unsecure(),isOptional:!0}}}),c=t({name:`UsageThreshold`,description:`Represents a usage threshold`,fields:{id:{type:e.String_unsecure(),isOptional:!1},metricKey:{type:e.String_unsecure(),isOptional:!1},subjectType:{type:e.String_unsecure(),isOptional:!0},subjectId:{type:e.String_unsecure(),isOptional:!0},name:{type:e.String_unsecure(),isOptional:!1},threshold:{type:e.Float_unsecure(),isOptional:!1},warnThreshold:{type:e.Float_unsecure(),isOptional:!0},periodType:{type:e.String_unsecure(),isOptional:!1},action:{type:e.String_unsecure(),isOptional:!1},currentValue:{type:e.Float_unsecure(),isOptional:!1},isActive:{type:e.Boolean(),isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1}}}),l=t({name:`DefineMetricInput`,description:`Input for defining a metric`,fields:{key:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!1},description:{type:e.String_unsecure(),isOptional:!0},unit:{type:e.String_unsecure(),isOptional:!1},aggregationType:{type:e.String_unsecure(),isOptional:!0},resetPeriod:{type:e.String_unsecure(),isOptional:!0},category:{type:e.String_unsecure(),isOptional:!0},orgId:{type:e.String_unsecure(),isOptional:!0},metadata:{type:e.JSON(),isOptional:!0}}}),u=t({name:`UpdateMetricInput`,description:`Input for updating a metric`,fields:{metricId:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!0},description:{type:e.String_unsecure(),isOptional:!0},category:{type:e.String_unsecure(),isOptional:!0},isActive:{type:e.Boolean(),isOptional:!0},metadata:{type:e.JSON(),isOptional:!0}}}),d=t({name:`DeleteMetricInput`,description:`Input for deleting a metric`,fields:{metricId:{type:e.String_unsecure(),isOptional:!1}}}),f=t({name:`GetMetricInput`,description:`Input for getting a metric`,fields:{key:{type:e.String_unsecure(),isOptional:!1},orgId:{type:e.String_unsecure(),isOptional:!0}}}),p=t({name:`ListMetricsInput`,description:`Input for listing metrics`,fields:{orgId:{type:e.String_unsecure(),isOptional:!0},category:{type:e.String_unsecure(),isOptional:!0},isActive:{type:e.Boolean(),isOptional:!0},limit:{type:e.Int_unsecure(),isOptional:!0},offset:{type:e.Int_unsecure(),isOptional:!0}}}),m=t({name:`ListMetricsOutput`,description:`Output for listing metrics`,fields:{metrics:{type:a,isArray:!0,isOptional:!1},total:{type:e.Int_unsecure(),isOptional:!1}}}),h=t({name:`RecordUsageInput`,description:`Input for recording usage`,fields:{metricKey:{type:e.String_unsecure(),isOptional:!1},subjectType:{type:e.String_unsecure(),isOptional:!1},subjectId:{type:e.String_unsecure(),isOptional:!1},quantity:{type:e.Float_unsecure(),isOptional:!1},timestamp:{type:e.DateTime(),isOptional:!0},source:{type:e.String_unsecure(),isOptional:!0},resourceId:{type:e.String_unsecure(),isOptional:!0},resourceType:{type:e.String_unsecure(),isOptional:!0},metadata:{type:e.JSON(),isOptional:!0},idempotencyKey:{type:e.String_unsecure(),isOptional:!0}}}),g=t({name:`RecordBatchUsageInput`,description:`Input for recording batch usage`,fields:{records:{type:h,isArray:!0,isOptional:!1}}}),_=t({name:`RecordBatchUsageOutput`,description:`Output for recording batch usage`,fields:{recordedCount:{type:e.Int_unsecure(),isOptional:!1},skippedCount:{type:e.Int_unsecure(),isOptional:!1},recordIds:{type:e.JSON(),isOptional:!1}}}),v=t({name:`GetUsageInput`,description:`Input for getting usage`,fields:{metricKey:{type:e.String_unsecure(),isOptional:!1},subjectType:{type:e.String_unsecure(),isOptional:!1},subjectId:{type:e.String_unsecure(),isOptional:!1},startDate:{type:e.DateTime(),isOptional:!1},endDate:{type:e.DateTime(),isOptional:!1},limit:{type:e.Int_unsecure(),isOptional:!0},offset:{type:e.Int_unsecure(),isOptional:!0}}}),y=t({name:`GetUsageOutput`,description:`Output for getting usage`,fields:{records:{type:o,isArray:!0,isOptional:!1},total:{type:e.Int_unsecure(),isOptional:!1},totalQuantity:{type:e.Float_unsecure(),isOptional:!1}}}),b=t({name:`GetUsageSummaryInput`,description:`Input for getting usage summary`,fields:{metricKey:{type:e.String_unsecure(),isOptional:!1},subjectType:{type:e.String_unsecure(),isOptional:!1},subjectId:{type:e.String_unsecure(),isOptional:!1},periodType:{type:e.String_unsecure(),isOptional:!1},startDate:{type:e.DateTime(),isOptional:!1},endDate:{type:e.DateTime(),isOptional:!0}}}),x=t({name:`GetUsageSummaryOutput`,description:`Output for getting usage summary`,fields:{summaries:{type:s,isArray:!0,isOptional:!1},total:{type:e.Int_unsecure(),isOptional:!1}}}),S=t({name:`CreateThresholdInput`,description:`Input for creating a threshold`,fields:{metricKey:{type:e.String_unsecure(),isOptional:!1},subjectType:{type:e.String_unsecure(),isOptional:!0},subjectId:{type:e.String_unsecure(),isOptional:!0},name:{type:e.String_unsecure(),isOptional:!1},threshold:{type:e.Float_unsecure(),isOptional:!1},warnThreshold:{type:e.Float_unsecure(),isOptional:!0},periodType:{type:e.String_unsecure(),isOptional:!0},action:{type:e.String_unsecure(),isOptional:!0},notifyEmails:{type:e.JSON(),isOptional:!0},notifyWebhook:{type:e.String_unsecure(),isOptional:!0}}}),C=t({name:`UpdateThresholdInput`,description:`Input for updating a threshold`,fields:{thresholdId:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!0},threshold:{type:e.Float_unsecure(),isOptional:!0},warnThreshold:{type:e.Float_unsecure(),isOptional:!0},action:{type:e.String_unsecure(),isOptional:!0},notifyEmails:{type:e.JSON(),isOptional:!0},notifyWebhook:{type:e.String_unsecure(),isOptional:!0},isActive:{type:e.Boolean(),isOptional:!0}}}),w=t({name:`DeleteThresholdInput`,description:`Input for deleting a threshold`,fields:{thresholdId:{type:e.String_unsecure(),isOptional:!1}}}),T=t({name:`ListThresholdsInput`,description:`Input for listing thresholds`,fields:{metricKey:{type:e.String_unsecure(),isOptional:!0},subjectType:{type:e.String_unsecure(),isOptional:!0},subjectId:{type:e.String_unsecure(),isOptional:!0},isActive:{type:e.Boolean(),isOptional:!0}}}),E=t({name:`ListThresholdsOutput`,description:`Output for listing thresholds`,fields:{thresholds:{type:c,isArray:!0,isOptional:!1},total:{type:e.Int_unsecure(),isOptional:!1}}}),D=t({name:`SuccessOutput`,description:`Generic success output`,fields:{success:{type:e.Boolean(),isOptional:!1}}}),O=r({meta:{name:`metric.define`,version:1,stability:`stable`,owners:[...i],tags:[`metering`,`metric`,`define`],description:`Define a new usage metric.`,goal:`Create a new metric for tracking usage.`,context:`Called when setting up metering.`},io:{input:l,output:a,errors:{METRIC_KEY_EXISTS:{description:`Metric key already exists`,http:409,gqlCode:`METRIC_KEY_EXISTS`,when:`A metric with this key already exists`}}},policy:{auth:`admin`}}),k=r({meta:{name:`metric.update`,version:1,stability:`stable`,owners:[...i],tags:[`metering`,`metric`,`update`],description:`Update a metric definition.`,goal:`Modify metric configuration.`,context:`Called when updating metric settings.`},io:{input:u,output:a,errors:{METRIC_NOT_FOUND:{description:`Metric does not exist`,http:404,gqlCode:`METRIC_NOT_FOUND`,when:`Metric ID is invalid`}}},policy:{auth:`admin`}}),A=r({meta:{name:`metric.delete`,version:1,stability:`stable`,owners:[...i],tags:[`metering`,`metric`,`delete`],description:`Delete a metric definition.`,goal:`Remove a metric and its data.`,context:`Called when removing a metric.`},io:{input:d,output:D,errors:{METRIC_NOT_FOUND:{description:`Metric does not exist`,http:404,gqlCode:`METRIC_NOT_FOUND`,when:`Metric ID is invalid`}}},policy:{auth:`admin`}}),j=n({meta:{name:`metric.get`,version:1,stability:`stable`,owners:[...i],tags:[`metering`,`metric`,`get`],description:`Get a metric by key.`,goal:`Retrieve metric definition.`,context:`Called to inspect metric details.`},io:{input:f,output:a,errors:{METRIC_NOT_FOUND:{description:`Metric does not exist`,http:404,gqlCode:`METRIC_NOT_FOUND`,when:`Metric key is invalid`}}},policy:{auth:`user`}}),M=n({meta:{name:`metric.list`,version:1,stability:`stable`,owners:[...i],tags:[`metering`,`metric`,`list`],description:`List all metrics.`,goal:`View configured metrics.`,context:`Called to browse metrics.`},io:{input:p,output:m},policy:{auth:`user`}}),N=r({meta:{name:`usage.record`,version:1,stability:`stable`,owners:[...i],tags:[`metering`,`usage`,`record`],description:`Record a usage event.`,goal:`Track usage for billing and monitoring.`,context:`Called when usage occurs.`},io:{input:h,output:o,errors:{METRIC_NOT_FOUND:{description:`Metric does not exist`,http:404,gqlCode:`METRIC_NOT_FOUND`,when:`Metric key is invalid`},DUPLICATE_RECORD:{description:`Record already exists`,http:409,gqlCode:`DUPLICATE_RECORD`,when:`Idempotency key already used`}}},policy:{auth:`admin`}}),P=r({meta:{name:`usage.recordBatch`,version:1,stability:`stable`,owners:[...i],tags:[`metering`,`usage`,`batch`],description:`Record multiple usage events.`,goal:`Efficiently track bulk usage.`,context:`Called for batch processing.`},io:{input:g,output:_},policy:{auth:`admin`}}),F=n({meta:{name:`usage.get`,version:1,stability:`stable`,owners:[...i],tags:[`metering`,`usage`,`get`],description:`Get usage records for a subject.`,goal:`View detailed usage history.`,context:`Called to analyze usage.`},io:{input:v,output:y},policy:{auth:`user`}}),I=n({meta:{name:`usage.getSummary`,version:1,stability:`stable`,owners:[...i],tags:[`metering`,`usage`,`summary`],description:`Get aggregated usage summary.`,goal:`View usage totals for billing.`,context:`Called for billing and reporting.`},io:{input:b,output:x},policy:{auth:`user`}}),L=r({meta:{name:`threshold.create`,version:1,stability:`stable`,owners:[...i],tags:[`metering`,`threshold`,`create`],description:`Create a usage threshold.`,goal:`Set up usage limits and alerts.`,context:`Called when configuring limits.`},io:{input:S,output:c,errors:{METRIC_NOT_FOUND:{description:`Metric does not exist`,http:404,gqlCode:`METRIC_NOT_FOUND`,when:`Metric key is invalid`}}},policy:{auth:`admin`}}),R=r({meta:{name:`threshold.update`,version:1,stability:`stable`,owners:[...i],tags:[`metering`,`threshold`,`update`],description:`Update a threshold.`,goal:`Modify threshold configuration.`,context:`Called when adjusting limits.`},io:{input:C,output:c,errors:{THRESHOLD_NOT_FOUND:{description:`Threshold does not exist`,http:404,gqlCode:`THRESHOLD_NOT_FOUND`,when:`Threshold ID is invalid`}}},policy:{auth:`admin`}}),z=r({meta:{name:`threshold.delete`,version:1,stability:`stable`,owners:[...i],tags:[`metering`,`threshold`,`delete`],description:`Delete a threshold.`,goal:`Remove a usage threshold.`,context:`Called when removing limits.`},io:{input:w,output:D,errors:{THRESHOLD_NOT_FOUND:{description:`Threshold does not exist`,http:404,gqlCode:`THRESHOLD_NOT_FOUND`,when:`Threshold ID is invalid`}}},policy:{auth:`admin`}}),B=n({meta:{name:`threshold.list`,version:1,stability:`stable`,owners:[...i],tags:[`metering`,`threshold`,`list`],description:`List usage thresholds.`,goal:`View configured limits.`,context:`Called to browse thresholds.`},io:{input:T,output:E},policy:{auth:`user`}});export{L as CreateThresholdContract,O as DefineMetricContract,A as DeleteMetricContract,z as DeleteThresholdContract,j as GetMetricContract,F as GetUsageContract,I as GetUsageSummaryContract,M as ListMetricsContract,B as ListThresholdsContract,a as MetricDefinitionModel,P as RecordBatchUsageContract,N as RecordUsageContract,k as UpdateMetricContract,R as UpdateThresholdContract,o as UsageRecordModel,s as UsageSummaryModel,c as UsageThresholdModel};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{a as e}from"../contracts/dist/docs/registry.js";import"../contracts/dist/docs/index.js";e([{id:`docs.metering.usage`,title:`Usage Metering & Billing Core`,summary:`Reusable usage/metering layer with metric definitions, usage ingestion, aggregation, thresholds, and alerts for billing or quotas.`,kind:`reference`,visibility:`public`,route:`/docs/metering/usage`,tags:[`metering`,`usage`,`billing`,`quotas`],body:`## Capabilities
|
|
2
2
|
|
|
3
3
|
- **Entities**: MetricDefinition, UsageRecord, UsageSummary, UsageThreshold, UsageAlert.
|
|
4
4
|
- **Contracts**: define/list metrics; record usage (batch + idempotent); retrieve usage by subject; manage thresholds and alerts.
|
package/dist/entities/index.d.ts
CHANGED
|
@@ -1,226 +1,226 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as _lssm_lib_schema288 from "@lssm/lib.schema";
|
|
2
2
|
import { ModuleSchemaContribution } from "@lssm/lib.schema";
|
|
3
3
|
|
|
4
4
|
//#region src/entities/index.d.ts
|
|
5
5
|
/**
|
|
6
6
|
* Aggregation type enum.
|
|
7
7
|
*/
|
|
8
|
-
declare const AggregationTypeEnum:
|
|
8
|
+
declare const AggregationTypeEnum: _lssm_lib_schema288.EntityEnumDef;
|
|
9
9
|
/**
|
|
10
10
|
* Reset period enum.
|
|
11
11
|
*/
|
|
12
|
-
declare const ResetPeriodEnum:
|
|
12
|
+
declare const ResetPeriodEnum: _lssm_lib_schema288.EntityEnumDef;
|
|
13
13
|
/**
|
|
14
14
|
* Period type enum.
|
|
15
15
|
*/
|
|
16
|
-
declare const PeriodTypeEnum:
|
|
16
|
+
declare const PeriodTypeEnum: _lssm_lib_schema288.EntityEnumDef;
|
|
17
17
|
/**
|
|
18
18
|
* Threshold action enum.
|
|
19
19
|
*/
|
|
20
|
-
declare const ThresholdActionEnum:
|
|
20
|
+
declare const ThresholdActionEnum: _lssm_lib_schema288.EntityEnumDef;
|
|
21
21
|
/**
|
|
22
22
|
* MetricDefinition entity - defines a trackable metric.
|
|
23
23
|
*/
|
|
24
|
-
declare const MetricDefinitionEntity:
|
|
25
|
-
id:
|
|
26
|
-
key:
|
|
27
|
-
name:
|
|
28
|
-
description:
|
|
29
|
-
unit:
|
|
30
|
-
aggregationType:
|
|
31
|
-
resetPeriod:
|
|
32
|
-
precision:
|
|
33
|
-
orgId:
|
|
34
|
-
category:
|
|
35
|
-
displayOrder:
|
|
36
|
-
metadata:
|
|
37
|
-
isActive:
|
|
38
|
-
createdAt:
|
|
39
|
-
updatedAt:
|
|
40
|
-
usageRecords:
|
|
41
|
-
usageSummaries:
|
|
42
|
-
thresholds:
|
|
24
|
+
declare const MetricDefinitionEntity: _lssm_lib_schema288.EntitySpec<{
|
|
25
|
+
id: _lssm_lib_schema288.EntityScalarField;
|
|
26
|
+
key: _lssm_lib_schema288.EntityScalarField;
|
|
27
|
+
name: _lssm_lib_schema288.EntityScalarField;
|
|
28
|
+
description: _lssm_lib_schema288.EntityScalarField;
|
|
29
|
+
unit: _lssm_lib_schema288.EntityScalarField;
|
|
30
|
+
aggregationType: _lssm_lib_schema288.EntityEnumField;
|
|
31
|
+
resetPeriod: _lssm_lib_schema288.EntityEnumField;
|
|
32
|
+
precision: _lssm_lib_schema288.EntityScalarField;
|
|
33
|
+
orgId: _lssm_lib_schema288.EntityScalarField;
|
|
34
|
+
category: _lssm_lib_schema288.EntityScalarField;
|
|
35
|
+
displayOrder: _lssm_lib_schema288.EntityScalarField;
|
|
36
|
+
metadata: _lssm_lib_schema288.EntityScalarField;
|
|
37
|
+
isActive: _lssm_lib_schema288.EntityScalarField;
|
|
38
|
+
createdAt: _lssm_lib_schema288.EntityScalarField;
|
|
39
|
+
updatedAt: _lssm_lib_schema288.EntityScalarField;
|
|
40
|
+
usageRecords: _lssm_lib_schema288.EntityRelationField;
|
|
41
|
+
usageSummaries: _lssm_lib_schema288.EntityRelationField;
|
|
42
|
+
thresholds: _lssm_lib_schema288.EntityRelationField;
|
|
43
43
|
}>;
|
|
44
44
|
/**
|
|
45
45
|
* UsageRecord entity - individual usage event.
|
|
46
46
|
*/
|
|
47
|
-
declare const UsageRecordEntity:
|
|
48
|
-
id:
|
|
49
|
-
metricKey:
|
|
50
|
-
metricId:
|
|
51
|
-
subjectType:
|
|
52
|
-
subjectId:
|
|
53
|
-
quantity:
|
|
54
|
-
source:
|
|
55
|
-
resourceId:
|
|
56
|
-
resourceType:
|
|
57
|
-
metadata:
|
|
58
|
-
idempotencyKey:
|
|
59
|
-
timestamp:
|
|
60
|
-
createdAt:
|
|
61
|
-
aggregated:
|
|
62
|
-
aggregatedAt:
|
|
47
|
+
declare const UsageRecordEntity: _lssm_lib_schema288.EntitySpec<{
|
|
48
|
+
id: _lssm_lib_schema288.EntityScalarField;
|
|
49
|
+
metricKey: _lssm_lib_schema288.EntityScalarField;
|
|
50
|
+
metricId: _lssm_lib_schema288.EntityScalarField;
|
|
51
|
+
subjectType: _lssm_lib_schema288.EntityScalarField;
|
|
52
|
+
subjectId: _lssm_lib_schema288.EntityScalarField;
|
|
53
|
+
quantity: _lssm_lib_schema288.EntityScalarField;
|
|
54
|
+
source: _lssm_lib_schema288.EntityScalarField;
|
|
55
|
+
resourceId: _lssm_lib_schema288.EntityScalarField;
|
|
56
|
+
resourceType: _lssm_lib_schema288.EntityScalarField;
|
|
57
|
+
metadata: _lssm_lib_schema288.EntityScalarField;
|
|
58
|
+
idempotencyKey: _lssm_lib_schema288.EntityScalarField;
|
|
59
|
+
timestamp: _lssm_lib_schema288.EntityScalarField;
|
|
60
|
+
createdAt: _lssm_lib_schema288.EntityScalarField;
|
|
61
|
+
aggregated: _lssm_lib_schema288.EntityScalarField;
|
|
62
|
+
aggregatedAt: _lssm_lib_schema288.EntityScalarField;
|
|
63
63
|
}>;
|
|
64
64
|
/**
|
|
65
65
|
* UsageSummary entity - pre-aggregated usage.
|
|
66
66
|
*/
|
|
67
|
-
declare const UsageSummaryEntity:
|
|
68
|
-
id:
|
|
69
|
-
metricKey:
|
|
70
|
-
metricId:
|
|
71
|
-
subjectType:
|
|
72
|
-
subjectId:
|
|
73
|
-
periodType:
|
|
74
|
-
periodStart:
|
|
75
|
-
periodEnd:
|
|
76
|
-
totalQuantity:
|
|
77
|
-
recordCount:
|
|
78
|
-
minQuantity:
|
|
79
|
-
maxQuantity:
|
|
80
|
-
avgQuantity:
|
|
81
|
-
metadata:
|
|
82
|
-
createdAt:
|
|
83
|
-
updatedAt:
|
|
67
|
+
declare const UsageSummaryEntity: _lssm_lib_schema288.EntitySpec<{
|
|
68
|
+
id: _lssm_lib_schema288.EntityScalarField;
|
|
69
|
+
metricKey: _lssm_lib_schema288.EntityScalarField;
|
|
70
|
+
metricId: _lssm_lib_schema288.EntityScalarField;
|
|
71
|
+
subjectType: _lssm_lib_schema288.EntityScalarField;
|
|
72
|
+
subjectId: _lssm_lib_schema288.EntityScalarField;
|
|
73
|
+
periodType: _lssm_lib_schema288.EntityEnumField;
|
|
74
|
+
periodStart: _lssm_lib_schema288.EntityScalarField;
|
|
75
|
+
periodEnd: _lssm_lib_schema288.EntityScalarField;
|
|
76
|
+
totalQuantity: _lssm_lib_schema288.EntityScalarField;
|
|
77
|
+
recordCount: _lssm_lib_schema288.EntityScalarField;
|
|
78
|
+
minQuantity: _lssm_lib_schema288.EntityScalarField;
|
|
79
|
+
maxQuantity: _lssm_lib_schema288.EntityScalarField;
|
|
80
|
+
avgQuantity: _lssm_lib_schema288.EntityScalarField;
|
|
81
|
+
metadata: _lssm_lib_schema288.EntityScalarField;
|
|
82
|
+
createdAt: _lssm_lib_schema288.EntityScalarField;
|
|
83
|
+
updatedAt: _lssm_lib_schema288.EntityScalarField;
|
|
84
84
|
}>;
|
|
85
85
|
/**
|
|
86
86
|
* UsageThreshold entity - threshold configuration.
|
|
87
87
|
*/
|
|
88
|
-
declare const UsageThresholdEntity:
|
|
89
|
-
id:
|
|
90
|
-
metricKey:
|
|
91
|
-
metricId:
|
|
92
|
-
subjectType:
|
|
93
|
-
subjectId:
|
|
94
|
-
name:
|
|
95
|
-
threshold:
|
|
96
|
-
warnThreshold:
|
|
97
|
-
periodType:
|
|
98
|
-
action:
|
|
99
|
-
notifyEmails:
|
|
100
|
-
notifyWebhook:
|
|
101
|
-
currentValue:
|
|
102
|
-
lastCheckedAt:
|
|
103
|
-
lastExceededAt:
|
|
104
|
-
isActive:
|
|
105
|
-
metadata:
|
|
106
|
-
createdAt:
|
|
107
|
-
updatedAt:
|
|
88
|
+
declare const UsageThresholdEntity: _lssm_lib_schema288.EntitySpec<{
|
|
89
|
+
id: _lssm_lib_schema288.EntityScalarField;
|
|
90
|
+
metricKey: _lssm_lib_schema288.EntityScalarField;
|
|
91
|
+
metricId: _lssm_lib_schema288.EntityScalarField;
|
|
92
|
+
subjectType: _lssm_lib_schema288.EntityScalarField;
|
|
93
|
+
subjectId: _lssm_lib_schema288.EntityScalarField;
|
|
94
|
+
name: _lssm_lib_schema288.EntityScalarField;
|
|
95
|
+
threshold: _lssm_lib_schema288.EntityScalarField;
|
|
96
|
+
warnThreshold: _lssm_lib_schema288.EntityScalarField;
|
|
97
|
+
periodType: _lssm_lib_schema288.EntityEnumField;
|
|
98
|
+
action: _lssm_lib_schema288.EntityEnumField;
|
|
99
|
+
notifyEmails: _lssm_lib_schema288.EntityScalarField;
|
|
100
|
+
notifyWebhook: _lssm_lib_schema288.EntityScalarField;
|
|
101
|
+
currentValue: _lssm_lib_schema288.EntityScalarField;
|
|
102
|
+
lastCheckedAt: _lssm_lib_schema288.EntityScalarField;
|
|
103
|
+
lastExceededAt: _lssm_lib_schema288.EntityScalarField;
|
|
104
|
+
isActive: _lssm_lib_schema288.EntityScalarField;
|
|
105
|
+
metadata: _lssm_lib_schema288.EntityScalarField;
|
|
106
|
+
createdAt: _lssm_lib_schema288.EntityScalarField;
|
|
107
|
+
updatedAt: _lssm_lib_schema288.EntityScalarField;
|
|
108
108
|
}>;
|
|
109
109
|
/**
|
|
110
110
|
* UsageAlert entity - threshold violation alerts.
|
|
111
111
|
*/
|
|
112
|
-
declare const UsageAlertEntity:
|
|
113
|
-
id:
|
|
114
|
-
thresholdId:
|
|
115
|
-
metricKey:
|
|
116
|
-
subjectType:
|
|
117
|
-
subjectId:
|
|
118
|
-
alertType:
|
|
119
|
-
threshold:
|
|
120
|
-
actualValue:
|
|
121
|
-
percentageUsed:
|
|
122
|
-
status:
|
|
123
|
-
acknowledgedBy:
|
|
124
|
-
acknowledgedAt:
|
|
125
|
-
resolvedAt:
|
|
126
|
-
notificationsSent:
|
|
127
|
-
triggeredAt:
|
|
128
|
-
createdAt:
|
|
129
|
-
thresholdRelation:
|
|
112
|
+
declare const UsageAlertEntity: _lssm_lib_schema288.EntitySpec<{
|
|
113
|
+
id: _lssm_lib_schema288.EntityScalarField;
|
|
114
|
+
thresholdId: _lssm_lib_schema288.EntityScalarField;
|
|
115
|
+
metricKey: _lssm_lib_schema288.EntityScalarField;
|
|
116
|
+
subjectType: _lssm_lib_schema288.EntityScalarField;
|
|
117
|
+
subjectId: _lssm_lib_schema288.EntityScalarField;
|
|
118
|
+
alertType: _lssm_lib_schema288.EntityScalarField;
|
|
119
|
+
threshold: _lssm_lib_schema288.EntityScalarField;
|
|
120
|
+
actualValue: _lssm_lib_schema288.EntityScalarField;
|
|
121
|
+
percentageUsed: _lssm_lib_schema288.EntityScalarField;
|
|
122
|
+
status: _lssm_lib_schema288.EntityScalarField;
|
|
123
|
+
acknowledgedBy: _lssm_lib_schema288.EntityScalarField;
|
|
124
|
+
acknowledgedAt: _lssm_lib_schema288.EntityScalarField;
|
|
125
|
+
resolvedAt: _lssm_lib_schema288.EntityScalarField;
|
|
126
|
+
notificationsSent: _lssm_lib_schema288.EntityScalarField;
|
|
127
|
+
triggeredAt: _lssm_lib_schema288.EntityScalarField;
|
|
128
|
+
createdAt: _lssm_lib_schema288.EntityScalarField;
|
|
129
|
+
thresholdRelation: _lssm_lib_schema288.EntityRelationField;
|
|
130
130
|
}>;
|
|
131
131
|
/**
|
|
132
132
|
* All metering entities for schema composition.
|
|
133
133
|
*/
|
|
134
|
-
declare const meteringEntities: (
|
|
135
|
-
id:
|
|
136
|
-
key:
|
|
137
|
-
name:
|
|
138
|
-
description:
|
|
139
|
-
unit:
|
|
140
|
-
aggregationType:
|
|
141
|
-
resetPeriod:
|
|
142
|
-
precision:
|
|
143
|
-
orgId:
|
|
144
|
-
category:
|
|
145
|
-
displayOrder:
|
|
146
|
-
metadata:
|
|
147
|
-
isActive:
|
|
148
|
-
createdAt:
|
|
149
|
-
updatedAt:
|
|
150
|
-
usageRecords:
|
|
151
|
-
usageSummaries:
|
|
152
|
-
thresholds:
|
|
153
|
-
}> |
|
|
154
|
-
id:
|
|
155
|
-
metricKey:
|
|
156
|
-
metricId:
|
|
157
|
-
subjectType:
|
|
158
|
-
subjectId:
|
|
159
|
-
quantity:
|
|
160
|
-
source:
|
|
161
|
-
resourceId:
|
|
162
|
-
resourceType:
|
|
163
|
-
metadata:
|
|
164
|
-
idempotencyKey:
|
|
165
|
-
timestamp:
|
|
166
|
-
createdAt:
|
|
167
|
-
aggregated:
|
|
168
|
-
aggregatedAt:
|
|
169
|
-
}> |
|
|
170
|
-
id:
|
|
171
|
-
metricKey:
|
|
172
|
-
metricId:
|
|
173
|
-
subjectType:
|
|
174
|
-
subjectId:
|
|
175
|
-
periodType:
|
|
176
|
-
periodStart:
|
|
177
|
-
periodEnd:
|
|
178
|
-
totalQuantity:
|
|
179
|
-
recordCount:
|
|
180
|
-
minQuantity:
|
|
181
|
-
maxQuantity:
|
|
182
|
-
avgQuantity:
|
|
183
|
-
metadata:
|
|
184
|
-
createdAt:
|
|
185
|
-
updatedAt:
|
|
186
|
-
}> |
|
|
187
|
-
id:
|
|
188
|
-
metricKey:
|
|
189
|
-
metricId:
|
|
190
|
-
subjectType:
|
|
191
|
-
subjectId:
|
|
192
|
-
name:
|
|
193
|
-
threshold:
|
|
194
|
-
warnThreshold:
|
|
195
|
-
periodType:
|
|
196
|
-
action:
|
|
197
|
-
notifyEmails:
|
|
198
|
-
notifyWebhook:
|
|
199
|
-
currentValue:
|
|
200
|
-
lastCheckedAt:
|
|
201
|
-
lastExceededAt:
|
|
202
|
-
isActive:
|
|
203
|
-
metadata:
|
|
204
|
-
createdAt:
|
|
205
|
-
updatedAt:
|
|
206
|
-
}> |
|
|
207
|
-
id:
|
|
208
|
-
thresholdId:
|
|
209
|
-
metricKey:
|
|
210
|
-
subjectType:
|
|
211
|
-
subjectId:
|
|
212
|
-
alertType:
|
|
213
|
-
threshold:
|
|
214
|
-
actualValue:
|
|
215
|
-
percentageUsed:
|
|
216
|
-
status:
|
|
217
|
-
acknowledgedBy:
|
|
218
|
-
acknowledgedAt:
|
|
219
|
-
resolvedAt:
|
|
220
|
-
notificationsSent:
|
|
221
|
-
triggeredAt:
|
|
222
|
-
createdAt:
|
|
223
|
-
thresholdRelation:
|
|
134
|
+
declare const meteringEntities: (_lssm_lib_schema288.EntitySpec<{
|
|
135
|
+
id: _lssm_lib_schema288.EntityScalarField;
|
|
136
|
+
key: _lssm_lib_schema288.EntityScalarField;
|
|
137
|
+
name: _lssm_lib_schema288.EntityScalarField;
|
|
138
|
+
description: _lssm_lib_schema288.EntityScalarField;
|
|
139
|
+
unit: _lssm_lib_schema288.EntityScalarField;
|
|
140
|
+
aggregationType: _lssm_lib_schema288.EntityEnumField;
|
|
141
|
+
resetPeriod: _lssm_lib_schema288.EntityEnumField;
|
|
142
|
+
precision: _lssm_lib_schema288.EntityScalarField;
|
|
143
|
+
orgId: _lssm_lib_schema288.EntityScalarField;
|
|
144
|
+
category: _lssm_lib_schema288.EntityScalarField;
|
|
145
|
+
displayOrder: _lssm_lib_schema288.EntityScalarField;
|
|
146
|
+
metadata: _lssm_lib_schema288.EntityScalarField;
|
|
147
|
+
isActive: _lssm_lib_schema288.EntityScalarField;
|
|
148
|
+
createdAt: _lssm_lib_schema288.EntityScalarField;
|
|
149
|
+
updatedAt: _lssm_lib_schema288.EntityScalarField;
|
|
150
|
+
usageRecords: _lssm_lib_schema288.EntityRelationField;
|
|
151
|
+
usageSummaries: _lssm_lib_schema288.EntityRelationField;
|
|
152
|
+
thresholds: _lssm_lib_schema288.EntityRelationField;
|
|
153
|
+
}> | _lssm_lib_schema288.EntitySpec<{
|
|
154
|
+
id: _lssm_lib_schema288.EntityScalarField;
|
|
155
|
+
metricKey: _lssm_lib_schema288.EntityScalarField;
|
|
156
|
+
metricId: _lssm_lib_schema288.EntityScalarField;
|
|
157
|
+
subjectType: _lssm_lib_schema288.EntityScalarField;
|
|
158
|
+
subjectId: _lssm_lib_schema288.EntityScalarField;
|
|
159
|
+
quantity: _lssm_lib_schema288.EntityScalarField;
|
|
160
|
+
source: _lssm_lib_schema288.EntityScalarField;
|
|
161
|
+
resourceId: _lssm_lib_schema288.EntityScalarField;
|
|
162
|
+
resourceType: _lssm_lib_schema288.EntityScalarField;
|
|
163
|
+
metadata: _lssm_lib_schema288.EntityScalarField;
|
|
164
|
+
idempotencyKey: _lssm_lib_schema288.EntityScalarField;
|
|
165
|
+
timestamp: _lssm_lib_schema288.EntityScalarField;
|
|
166
|
+
createdAt: _lssm_lib_schema288.EntityScalarField;
|
|
167
|
+
aggregated: _lssm_lib_schema288.EntityScalarField;
|
|
168
|
+
aggregatedAt: _lssm_lib_schema288.EntityScalarField;
|
|
169
|
+
}> | _lssm_lib_schema288.EntitySpec<{
|
|
170
|
+
id: _lssm_lib_schema288.EntityScalarField;
|
|
171
|
+
metricKey: _lssm_lib_schema288.EntityScalarField;
|
|
172
|
+
metricId: _lssm_lib_schema288.EntityScalarField;
|
|
173
|
+
subjectType: _lssm_lib_schema288.EntityScalarField;
|
|
174
|
+
subjectId: _lssm_lib_schema288.EntityScalarField;
|
|
175
|
+
periodType: _lssm_lib_schema288.EntityEnumField;
|
|
176
|
+
periodStart: _lssm_lib_schema288.EntityScalarField;
|
|
177
|
+
periodEnd: _lssm_lib_schema288.EntityScalarField;
|
|
178
|
+
totalQuantity: _lssm_lib_schema288.EntityScalarField;
|
|
179
|
+
recordCount: _lssm_lib_schema288.EntityScalarField;
|
|
180
|
+
minQuantity: _lssm_lib_schema288.EntityScalarField;
|
|
181
|
+
maxQuantity: _lssm_lib_schema288.EntityScalarField;
|
|
182
|
+
avgQuantity: _lssm_lib_schema288.EntityScalarField;
|
|
183
|
+
metadata: _lssm_lib_schema288.EntityScalarField;
|
|
184
|
+
createdAt: _lssm_lib_schema288.EntityScalarField;
|
|
185
|
+
updatedAt: _lssm_lib_schema288.EntityScalarField;
|
|
186
|
+
}> | _lssm_lib_schema288.EntitySpec<{
|
|
187
|
+
id: _lssm_lib_schema288.EntityScalarField;
|
|
188
|
+
metricKey: _lssm_lib_schema288.EntityScalarField;
|
|
189
|
+
metricId: _lssm_lib_schema288.EntityScalarField;
|
|
190
|
+
subjectType: _lssm_lib_schema288.EntityScalarField;
|
|
191
|
+
subjectId: _lssm_lib_schema288.EntityScalarField;
|
|
192
|
+
name: _lssm_lib_schema288.EntityScalarField;
|
|
193
|
+
threshold: _lssm_lib_schema288.EntityScalarField;
|
|
194
|
+
warnThreshold: _lssm_lib_schema288.EntityScalarField;
|
|
195
|
+
periodType: _lssm_lib_schema288.EntityEnumField;
|
|
196
|
+
action: _lssm_lib_schema288.EntityEnumField;
|
|
197
|
+
notifyEmails: _lssm_lib_schema288.EntityScalarField;
|
|
198
|
+
notifyWebhook: _lssm_lib_schema288.EntityScalarField;
|
|
199
|
+
currentValue: _lssm_lib_schema288.EntityScalarField;
|
|
200
|
+
lastCheckedAt: _lssm_lib_schema288.EntityScalarField;
|
|
201
|
+
lastExceededAt: _lssm_lib_schema288.EntityScalarField;
|
|
202
|
+
isActive: _lssm_lib_schema288.EntityScalarField;
|
|
203
|
+
metadata: _lssm_lib_schema288.EntityScalarField;
|
|
204
|
+
createdAt: _lssm_lib_schema288.EntityScalarField;
|
|
205
|
+
updatedAt: _lssm_lib_schema288.EntityScalarField;
|
|
206
|
+
}> | _lssm_lib_schema288.EntitySpec<{
|
|
207
|
+
id: _lssm_lib_schema288.EntityScalarField;
|
|
208
|
+
thresholdId: _lssm_lib_schema288.EntityScalarField;
|
|
209
|
+
metricKey: _lssm_lib_schema288.EntityScalarField;
|
|
210
|
+
subjectType: _lssm_lib_schema288.EntityScalarField;
|
|
211
|
+
subjectId: _lssm_lib_schema288.EntityScalarField;
|
|
212
|
+
alertType: _lssm_lib_schema288.EntityScalarField;
|
|
213
|
+
threshold: _lssm_lib_schema288.EntityScalarField;
|
|
214
|
+
actualValue: _lssm_lib_schema288.EntityScalarField;
|
|
215
|
+
percentageUsed: _lssm_lib_schema288.EntityScalarField;
|
|
216
|
+
status: _lssm_lib_schema288.EntityScalarField;
|
|
217
|
+
acknowledgedBy: _lssm_lib_schema288.EntityScalarField;
|
|
218
|
+
acknowledgedAt: _lssm_lib_schema288.EntityScalarField;
|
|
219
|
+
resolvedAt: _lssm_lib_schema288.EntityScalarField;
|
|
220
|
+
notificationsSent: _lssm_lib_schema288.EntityScalarField;
|
|
221
|
+
triggeredAt: _lssm_lib_schema288.EntityScalarField;
|
|
222
|
+
createdAt: _lssm_lib_schema288.EntityScalarField;
|
|
223
|
+
thresholdRelation: _lssm_lib_schema288.EntityRelationField;
|
|
224
224
|
}>)[];
|
|
225
225
|
/**
|
|
226
226
|
* Module schema contribution for metering.
|
package/dist/entities/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
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:`AggregationType`,values:[`COUNT`,`SUM`,`AVG`,`MAX`,`MIN`,`LAST`],schema:`lssm_metering`,description:`How to aggregate metric values.`}),a=t({name:`ResetPeriod`,values:[`NEVER`,`HOURLY`,`DAILY`,`WEEKLY`,`MONTHLY`,`YEARLY`],schema:`lssm_metering`,description:`When to reset metric counters.`}),o=t({name:`PeriodType`,values:[`HOURLY`,`DAILY`,`WEEKLY`,`MONTHLY`,`YEARLY`],schema:`lssm_metering`,description:`Time period for aggregation.`}),s=t({name:`ThresholdAction`,values:[`NONE`,`ALERT`,`WARN`,`BLOCK`,`DOWNGRADE`],schema:`lssm_metering`,description:`Action to take when threshold is exceeded.`}),c=r({name:`MetricDefinition`,description:`Definition of a usage metric.`,schema:`lssm_metering`,map:`metric_definition`,fields:{id:n.id({description:`Unique identifier`}),key:n.string({isUnique:!0,description:`Metric key (e.g., api_calls, storage_gb)`}),name:n.string({description:`Human-readable name`}),description:n.string({isOptional:!0,description:`Metric description`}),unit:n.string({description:`Unit of measurement (calls, bytes, etc.)`}),aggregationType:n.enum(`AggregationType`,{default:`SUM`,description:`How to aggregate values`}),resetPeriod:n.enum(`ResetPeriod`,{default:`MONTHLY`,description:`When to reset counters`}),precision:n.int({default:2,description:`Decimal precision`}),orgId:n.string({isOptional:!0,description:`Organization scope (null = global metric)`}),category:n.string({isOptional:!0,description:`Category for grouping`}),displayOrder:n.int({default:0,description:`Order for display`}),metadata:n.json({isOptional:!0,description:`Additional metadata`}),isActive:n.boolean({default:!0,description:`Whether metric is active`}),createdAt:n.createdAt(),updatedAt:n.updatedAt(),usageRecords:n.hasMany(`UsageRecord`),usageSummaries:n.hasMany(`UsageSummary`),thresholds:n.hasMany(`UsageThreshold`)},indexes:[e.on([`orgId`,`key`]),e.on([`category`]),e.on([`isActive`])],enums:[i,a]}),l=r({name:`UsageRecord`,description:`A single usage event.`,schema:`lssm_metering`,map:`usage_record`,fields:{id:n.id({description:`Unique identifier`}),metricKey:n.string({description:`Metric being recorded`}),metricId:n.string({isOptional:!0,description:`Metric ID (for FK)`}),subjectType:n.string({description:`Subject type (org, user, project)`}),subjectId:n.string({description:`Subject identifier`}),quantity:n.decimal({description:`Usage quantity`}),source:n.string({isOptional:!0,description:`Source of usage (endpoint, feature, etc.)`}),resourceId:n.string({isOptional:!0,description:`Related resource ID`}),resourceType:n.string({isOptional:!0,description:`Related resource type`}),metadata:n.json({isOptional:!0,description:`Additional context`}),idempotencyKey:n.string({isOptional:!0,description:`Idempotency key for deduplication`}),timestamp:n.dateTime({description:`When usage occurred`}),createdAt:n.createdAt(),aggregated:n.boolean({default:!1,description:`Whether included in summary`}),aggregatedAt:n.dateTime({isOptional:!0,description:`When aggregated`})},indexes:[e.on([`metricKey`,`subjectType`,`subjectId`,`timestamp`]),e.on([`subjectType`,`subjectId`,`timestamp`]),e.on([`timestamp`]),e.on([`aggregated`,`timestamp`]),e.unique([`idempotencyKey`],{name:`usage_record_idempotency`})]}),u=r({name:`UsageSummary`,description:`Pre-aggregated usage summary.`,schema:`lssm_metering`,map:`usage_summary`,fields:{id:n.id({description:`Unique identifier`}),metricKey:n.string({description:`Metric key`}),metricId:n.string({isOptional:!0,description:`Metric ID (for FK)`}),subjectType:n.string({description:`Subject type`}),subjectId:n.string({description:`Subject identifier`}),periodType:n.enum(`PeriodType`,{description:`Period type`}),periodStart:n.dateTime({description:`Period start time`}),periodEnd:n.dateTime({description:`Period end time`}),totalQuantity:n.decimal({description:`Total/aggregated quantity`}),recordCount:n.int({default:0,description:`Number of records aggregated`}),minQuantity:n.decimal({isOptional:!0,description:`Minimum value`}),maxQuantity:n.decimal({isOptional:!0,description:`Maximum value`}),avgQuantity:n.decimal({isOptional:!0,description:`Average value`}),metadata:n.json({isOptional:!0,description:`Additional metadata`}),createdAt:n.createdAt(),updatedAt:n.updatedAt()},indexes:[e.unique([`metricKey`,`subjectType`,`subjectId`,`periodType`,`periodStart`],{name:`usage_summary_unique`}),e.on([`subjectType`,`subjectId`,`periodType`,`periodStart`]),e.on([`metricKey`,`periodType`,`periodStart`])],enums:[o]}),d=r({name:`UsageThreshold`,description:`Usage threshold configuration.`,schema:`lssm_metering`,map:`usage_threshold`,fields:{id:n.id({description:`Unique identifier`}),metricKey:n.string({description:`Metric to monitor`}),metricId:n.string({isOptional:!0,description:`Metric ID (for FK)`}),subjectType:n.string({isOptional:!0,description:`Subject type`}),subjectId:n.string({isOptional:!0,description:`Subject identifier`}),name:n.string({description:`Threshold name`}),threshold:n.decimal({description:`Threshold value`}),warnThreshold:n.decimal({isOptional:!0,description:`Warning threshold (e.g., 80%)`}),periodType:n.enum(`PeriodType`,{default:`MONTHLY`,description:`Period to evaluate`}),action:n.enum(`ThresholdAction`,{default:`ALERT`,description:`Action when exceeded`}),notifyEmails:n.json({isOptional:!0,description:`Email addresses to notify`}),notifyWebhook:n.string({isOptional:!0,description:`Webhook URL to call`}),currentValue:n.decimal({default:0,description:`Current usage value`}),lastCheckedAt:n.dateTime({isOptional:!0,description:`Last threshold check`}),lastExceededAt:n.dateTime({isOptional:!0,description:`Last time threshold was exceeded`}),isActive:n.boolean({default:!0,description:`Whether threshold is active`}),metadata:n.json({isOptional:!0,description:`Additional metadata`}),createdAt:n.createdAt(),updatedAt:n.updatedAt()},indexes:[e.on([`metricKey`]),e.on([`subjectType`,`subjectId`]),e.on([`isActive`,`metricKey`])],enums:[s]}),f=r({name:`UsageAlert`,description:`Alert generated when threshold is exceeded.`,schema:`lssm_metering`,map:`usage_alert`,fields:{id:n.id({description:`Unique identifier`}),thresholdId:n.foreignKey({description:`Threshold that triggered alert`}),metricKey:n.string({description:`Metric key`}),subjectType:n.string({isOptional:!0,description:`Subject type`}),subjectId:n.string({isOptional:!0,description:`Subject identifier`}),alertType:n.string({description:`Alert type (warn, exceed, etc.)`}),threshold:n.decimal({description:`Threshold value`}),actualValue:n.decimal({description:`Actual usage value`}),percentageUsed:n.decimal({description:`Percentage of threshold used`}),status:n.string({default:`"pending"`,description:`Alert status (pending, acknowledged, resolved)`}),acknowledgedBy:n.string({isOptional:!0,description:`User who acknowledged`}),acknowledgedAt:n.dateTime({isOptional:!0,description:`When acknowledged`}),resolvedAt:n.dateTime({isOptional:!0,description:`When resolved`}),notificationsSent:n.json({isOptional:!0,description:`Notifications sent`}),triggeredAt:n.dateTime({description:`When alert was triggered`}),createdAt:n.createdAt(),thresholdRelation:n.belongsTo(`UsageThreshold`,[`thresholdId`],[`id`],{onDelete:`Cascade`})},indexes:[e.on([`thresholdId`,`status`]),e.on([`metricKey`,`triggeredAt`]),e.on([`status`,`triggeredAt`])]}),p=[c,l,u,d,f],m={moduleId:`@lssm/lib.metering`,entities:p,enums:[i,a,o,s]};export{i as AggregationTypeEnum,c as MetricDefinitionEntity,o as PeriodTypeEnum,a as ResetPeriodEnum,s as ThresholdActionEnum,f as UsageAlertEntity,l as UsageRecordEntity,u as UsageSummaryEntity,d as UsageThresholdEntity,p as meteringEntities,m as meteringSchemaContribution};
|