@lssm/example.analytics-dashboard 0.0.0-canary-20251206160926

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 (121) hide show
  1. package/README.md +267 -0
  2. package/dist/contracts/index.d.ts +1114 -0
  3. package/dist/contracts/index.js +1 -0
  4. package/dist/entities/index.d.ts +219 -0
  5. package/dist/entities/index.js +1 -0
  6. package/dist/events.d.ts +324 -0
  7. package/dist/events.js +1 -0
  8. package/dist/feature.d.ts +1206 -0
  9. package/dist/feature.js +1 -0
  10. package/dist/handlers/index.d.ts +77 -0
  11. package/dist/handlers/index.js +1 -0
  12. package/dist/index.d.ts +8 -0
  13. package/dist/index.js +1 -0
  14. package/dist/libs/contracts/dist/capabilities/openbanking.js +1 -0
  15. package/dist/libs/contracts/dist/client/index.js +1 -0
  16. package/dist/libs/contracts/dist/client/react/feature-render.js +1 -0
  17. package/dist/libs/contracts/dist/client/react/form-render.js +1 -0
  18. package/dist/libs/contracts/dist/client/react/index.js +1 -0
  19. package/dist/libs/contracts/dist/events.js +1 -0
  20. package/dist/libs/contracts/dist/experiments/evaluator.js +1 -0
  21. package/dist/libs/contracts/dist/graphql-federation/dist/index.js +1 -0
  22. package/dist/libs/contracts/dist/index.js +1 -0
  23. package/dist/libs/contracts/dist/install.js +1 -0
  24. package/dist/libs/contracts/dist/integrations/contracts.js +1 -0
  25. package/dist/libs/contracts/dist/integrations/index.js +1 -0
  26. package/dist/libs/contracts/dist/integrations/openbanking/contracts/accounts.js +1 -0
  27. package/dist/libs/contracts/dist/integrations/openbanking/contracts/balances.js +1 -0
  28. package/dist/libs/contracts/dist/integrations/openbanking/contracts/index.js +1 -0
  29. package/dist/libs/contracts/dist/integrations/openbanking/contracts/transactions.js +1 -0
  30. package/dist/libs/contracts/dist/integrations/openbanking/models.js +1 -0
  31. package/dist/libs/contracts/dist/integrations/openbanking/telemetry.js +1 -0
  32. package/dist/libs/contracts/dist/integrations/providers/elevenlabs.js +1 -0
  33. package/dist/libs/contracts/dist/integrations/providers/gcs-storage.js +1 -0
  34. package/dist/libs/contracts/dist/integrations/providers/gmail.js +1 -0
  35. package/dist/libs/contracts/dist/integrations/providers/google-calendar.js +1 -0
  36. package/dist/libs/contracts/dist/integrations/providers/impls/elevenlabs-voice.js +1 -0
  37. package/dist/libs/contracts/dist/integrations/providers/impls/gcs-storage.js +1 -0
  38. package/dist/libs/contracts/dist/integrations/providers/impls/gmail-inbound.js +1 -0
  39. package/dist/libs/contracts/dist/integrations/providers/impls/gmail-outbound.js +1 -0
  40. package/dist/libs/contracts/dist/integrations/providers/impls/google-calendar.js +1 -0
  41. package/dist/libs/contracts/dist/integrations/providers/impls/index.js +1 -0
  42. package/dist/libs/contracts/dist/integrations/providers/impls/mistral-embedding.js +1 -0
  43. package/dist/libs/contracts/dist/integrations/providers/impls/mistral-llm.js +1 -0
  44. package/dist/libs/contracts/dist/integrations/providers/impls/postmark-email.js +1 -0
  45. package/dist/libs/contracts/dist/integrations/providers/impls/powens-client.js +1 -0
  46. package/dist/libs/contracts/dist/integrations/providers/impls/powens-openbanking.js +1 -0
  47. package/dist/libs/contracts/dist/integrations/providers/impls/provider-factory.js +1 -0
  48. package/dist/libs/contracts/dist/integrations/providers/impls/qdrant-vector.js +1 -0
  49. package/dist/libs/contracts/dist/integrations/providers/impls/stripe-payments.js +1 -0
  50. package/dist/libs/contracts/dist/integrations/providers/impls/twilio-sms.js +1 -0
  51. package/dist/libs/contracts/dist/integrations/providers/index.js +1 -0
  52. package/dist/libs/contracts/dist/integrations/providers/mistral.js +1 -0
  53. package/dist/libs/contracts/dist/integrations/providers/postmark.js +1 -0
  54. package/dist/libs/contracts/dist/integrations/providers/powens.js +1 -0
  55. package/dist/libs/contracts/dist/integrations/providers/qdrant.js +1 -0
  56. package/dist/libs/contracts/dist/integrations/providers/stripe.js +1 -0
  57. package/dist/libs/contracts/dist/integrations/providers/twilio-sms.js +1 -0
  58. package/dist/libs/contracts/dist/integrations/runtime.js +1 -0
  59. package/dist/libs/contracts/dist/integrations/secrets/env-secret-provider.js +1 -0
  60. package/dist/libs/contracts/dist/integrations/secrets/gcp-secret-manager.js +1 -0
  61. package/dist/libs/contracts/dist/integrations/secrets/index.js +1 -0
  62. package/dist/libs/contracts/dist/integrations/secrets/manager.js +1 -0
  63. package/dist/libs/contracts/dist/integrations/secrets/provider.js +1 -0
  64. package/dist/libs/contracts/dist/jsonschema.js +1 -0
  65. package/dist/libs/contracts/dist/knowledge/contracts.js +1 -0
  66. package/dist/libs/contracts/dist/knowledge/index.js +1 -0
  67. package/dist/libs/contracts/dist/knowledge/spaces/email-threads.js +1 -0
  68. package/dist/libs/contracts/dist/knowledge/spaces/financial-docs.js +1 -0
  69. package/dist/libs/contracts/dist/knowledge/spaces/financial-overview.js +1 -0
  70. package/dist/libs/contracts/dist/knowledge/spaces/index.js +1 -0
  71. package/dist/libs/contracts/dist/knowledge/spaces/product-canon.js +1 -0
  72. package/dist/libs/contracts/dist/knowledge/spaces/support-faq.js +1 -0
  73. package/dist/libs/contracts/dist/knowledge/spaces/uploaded-docs.js +1 -0
  74. package/dist/libs/contracts/dist/onboarding-base.js +1 -0
  75. package/dist/libs/contracts/dist/ownership.js +1 -0
  76. package/dist/libs/contracts/dist/presentations.js +1 -0
  77. package/dist/libs/contracts/dist/presentations.v2.js +1 -0
  78. package/dist/libs/contracts/dist/prompt.js +1 -0
  79. package/dist/libs/contracts/dist/promptRegistry.js +1 -0
  80. package/dist/libs/contracts/dist/regenerator/index.js +1 -0
  81. package/dist/libs/contracts/dist/regenerator/service.js +1 -0
  82. package/dist/libs/contracts/dist/registry.js +1 -0
  83. package/dist/libs/contracts/dist/resources.js +1 -0
  84. package/dist/libs/contracts/dist/schema/dist/EnumType.js +1 -0
  85. package/dist/libs/contracts/dist/schema/dist/FieldType.js +1 -0
  86. package/dist/libs/contracts/dist/schema/dist/ScalarTypeEnum.js +1 -0
  87. package/dist/libs/contracts/dist/schema/dist/SchemaModel.js +1 -0
  88. package/dist/libs/contracts/dist/schema/dist/entity/defineEntity.js +1 -0
  89. package/dist/libs/contracts/dist/schema/dist/entity/index.js +1 -0
  90. package/dist/libs/contracts/dist/schema/dist/entity/types.js +1 -0
  91. package/dist/libs/contracts/dist/schema/dist/index.js +1 -0
  92. package/dist/libs/contracts/dist/server/graphql-pothos.js +1 -0
  93. package/dist/libs/contracts/dist/server/graphql-schema-export.js +1 -0
  94. package/dist/libs/contracts/dist/server/index.js +1 -0
  95. package/dist/libs/contracts/dist/server/provider-mcp.js +1 -0
  96. package/dist/libs/contracts/dist/server/rest-elysia.js +1 -0
  97. package/dist/libs/contracts/dist/server/rest-express.js +1 -0
  98. package/dist/libs/contracts/dist/server/rest-generic.js +1 -0
  99. package/dist/libs/contracts/dist/server/rest-next-app.js +1 -0
  100. package/dist/libs/contracts/dist/server/rest-next-pages.js +1 -0
  101. package/dist/libs/contracts/dist/spec.js +1 -0
  102. package/dist/libs/contracts/dist/telemetry/index.js +1 -0
  103. package/dist/libs/contracts/dist/telemetry/tracker.js +1 -0
  104. package/dist/libs/contracts/dist/tests/index.js +1 -0
  105. package/dist/libs/contracts/dist/tests/runner.js +1 -0
  106. package/dist/libs/contracts/dist/workflow/index.js +1 -0
  107. package/dist/libs/contracts/dist/workflow/runner.js +1 -0
  108. package/dist/libs/schema/dist/EnumType.js +1 -0
  109. package/dist/libs/schema/dist/FieldType.js +1 -0
  110. package/dist/libs/schema/dist/ScalarTypeEnum.js +1 -0
  111. package/dist/libs/schema/dist/SchemaModel.js +1 -0
  112. package/dist/libs/schema/dist/entity/defineEntity.js +1 -0
  113. package/dist/libs/schema/dist/entity/index.js +1 -0
  114. package/dist/libs/schema/dist/entity/types.js +1 -0
  115. package/dist/libs/schema/dist/index.js +1 -0
  116. package/dist/presentations/index.d.ts +473 -0
  117. package/dist/presentations/index.js +1 -0
  118. package/dist/query-engine/index.d.ts +105 -0
  119. package/dist/query-engine/index.js +1 -0
  120. package/dist/tsconfig.tsbuildinfo +1 -0
  121. package/package.json +64 -0
package/README.md ADDED
@@ -0,0 +1,267 @@
1
+ # @lssm/example.analytics-dashboard
2
+
3
+ > Analytics Dashboard Example - Comprehensive data visualization and reporting solution
4
+
5
+ ## Overview
6
+
7
+ This example demonstrates a full-featured analytics and dashboarding system built with ContractSpec, showcasing:
8
+
9
+ - **Customizable Dashboards** - Drag-and-drop widget layouts
10
+ - **Visual Query Builder** - Build queries without writing SQL
11
+ - **Multiple Widget Types** - Charts, metrics, tables, maps
12
+ - **Scheduled Reports** - Automated report generation and delivery
13
+ - **Public Sharing** - Share dashboards with external stakeholders
14
+
15
+ ## Entities
16
+
17
+ ### Dashboard
18
+
19
+ Main container for widgets and visualizations.
20
+
21
+ | Field | Type | Description |
22
+ |-------|------|-------------|
23
+ | id | string | Unique identifier |
24
+ | organizationId | string | Organization owner |
25
+ | name | string | Dashboard name |
26
+ | slug | string | URL-friendly identifier |
27
+ | description | string? | Dashboard description |
28
+ | status | DashboardStatus | DRAFT, PUBLISHED, ARCHIVED |
29
+ | refreshInterval | RefreshInterval | Auto-refresh frequency |
30
+ | defaultDateRange | TimeRange | Default time filter |
31
+ | isPublic | boolean | Public visibility |
32
+ | shareToken | string? | Public access token |
33
+
34
+ ### Widget
35
+
36
+ Individual visualization component on a dashboard.
37
+
38
+ | Field | Type | Description |
39
+ |-------|------|-------------|
40
+ | id | string | Unique identifier |
41
+ | dashboardId | string | Parent dashboard |
42
+ | name | string | Widget title |
43
+ | type | WidgetType | LINE_CHART, BAR_CHART, PIE_CHART, METRIC, TABLE, etc. |
44
+ | gridX, gridY | number | Grid position |
45
+ | gridWidth, gridHeight | number | Grid dimensions |
46
+ | queryId | string? | Linked query |
47
+ | config | JSON | Widget-specific configuration |
48
+
49
+ ### Query
50
+
51
+ Reusable data query definition.
52
+
53
+ | Field | Type | Description |
54
+ |-------|------|-------------|
55
+ | id | string | Unique identifier |
56
+ | name | string | Query name |
57
+ | type | QueryType | SQL, METRIC, AGGREGATION, CUSTOM |
58
+ | definition | JSON | Query definition |
59
+ | sql | string? | Raw SQL for SQL type |
60
+ | metricIds | string[] | Metrics for METRIC type |
61
+ | cacheTtlSeconds | number | Cache duration |
62
+ | isShared | boolean | Shared across org |
63
+
64
+ ### Report
65
+
66
+ Scheduled report definition.
67
+
68
+ | Field | Type | Description |
69
+ |-------|------|-------------|
70
+ | id | string | Unique identifier |
71
+ | dashboardId | string | Source dashboard |
72
+ | name | string | Report name |
73
+ | schedule | string | Cron expression |
74
+ | format | ReportFormat | PDF, PNG, CSV |
75
+ | recipients | string[] | Email addresses |
76
+ | lastRunAt | DateTime? | Last execution time |
77
+
78
+ ## Contracts
79
+
80
+ ### Dashboard Management
81
+
82
+ ```typescript
83
+ // Create a new dashboard
84
+ CreateDashboardContract
85
+ Input: { name, slug, description?, refreshInterval? }
86
+ Output: Dashboard
87
+
88
+ // Add widget to dashboard
89
+ AddWidgetContract
90
+ Input: { dashboardId, name, type, gridX?, gridY?, queryId?, config? }
91
+ Output: Widget
92
+
93
+ // Get dashboard with widgets
94
+ GetDashboardContract
95
+ Input: { dashboardId? | slug? | shareToken? }
96
+ Output: Dashboard (with widgets)
97
+
98
+ // List user's dashboards
99
+ ListDashboardsContract
100
+ Input: { status?, search?, limit?, offset? }
101
+ Output: { dashboards, total }
102
+ ```
103
+
104
+ ### Query Management
105
+
106
+ ```typescript
107
+ // Create a query
108
+ CreateQueryContract
109
+ Input: { name, type, definition, sql?, metricIds?, cacheTtlSeconds? }
110
+ Output: Query
111
+
112
+ // Execute query
113
+ ExecuteQueryContract
114
+ Input: { queryId, parameters?, dateRange?, filters?, forceRefresh? }
115
+ Output: { data, columns, rowCount, executionTimeMs, cached }
116
+ ```
117
+
118
+ ## Events
119
+
120
+ | Event | Description |
121
+ |-------|-------------|
122
+ | `analytics.dashboard.created` | Dashboard created |
123
+ | `analytics.dashboard.published` | Dashboard published |
124
+ | `analytics.widget.added` | Widget added to dashboard |
125
+ | `analytics.query.created` | Query created |
126
+ | `analytics.query.executed` | Query executed |
127
+ | `analytics.dashboard.viewed` | Dashboard viewed |
128
+ | `analytics.report.generated` | Scheduled report generated |
129
+
130
+ ## Widget Types
131
+
132
+ - **Line Chart** - Time series data
133
+ - **Bar Chart** - Categorical comparisons
134
+ - **Pie Chart** - Part-to-whole relationships
135
+ - **Area Chart** - Stacked time series
136
+ - **Scatter Plot** - Correlation analysis
137
+ - **Metric** - Single KPI display
138
+ - **Table** - Tabular data
139
+ - **Heatmap** - Density visualization
140
+ - **Funnel** - Conversion analysis
141
+ - **Map** - Geographic data
142
+ - **Text** - Markdown content
143
+ - **Embed** - External iframe
144
+
145
+ ## Query Types
146
+
147
+ ### Metric Query
148
+
149
+ Query usage metrics from the metering system.
150
+
151
+ ```json
152
+ {
153
+ "type": "METRIC",
154
+ "metricIds": ["active_users", "api_calls", "storage_used"]
155
+ }
156
+ ```
157
+
158
+ ### Aggregation Query
159
+
160
+ Build aggregations with measures and dimensions.
161
+
162
+ ```json
163
+ {
164
+ "type": "AGGREGATION",
165
+ "source": "events",
166
+ "measures": [
167
+ { "name": "total_count", "field": "id", "aggregation": "COUNT" }
168
+ ],
169
+ "dimensions": [
170
+ { "name": "date", "field": "created_at", "type": "TIME", "granularity": "DAY" }
171
+ ],
172
+ "filters": [
173
+ { "field": "event_type", "operator": "eq", "value": "page_view" }
174
+ ]
175
+ }
176
+ ```
177
+
178
+ ### SQL Query
179
+
180
+ Write custom SQL (requires feature flag).
181
+
182
+ ```json
183
+ {
184
+ "type": "SQL",
185
+ "sql": "SELECT date_trunc('day', created_at) as day, count(*) FROM events GROUP BY 1"
186
+ }
187
+ ```
188
+
189
+ ## Usage
190
+
191
+ ```typescript
192
+ import {
193
+ AnalyticsDashboardFeature,
194
+ CreateDashboardContract,
195
+ AddWidgetContract,
196
+ createQueryEngine,
197
+ } from '@lssm/example.analytics-dashboard';
198
+
199
+ // Create a dashboard
200
+ const dashboard = await execute(CreateDashboardContract, {
201
+ name: 'Sales Overview',
202
+ slug: 'sales-overview',
203
+ description: 'Key sales metrics and trends',
204
+ refreshInterval: 'FIFTEEN_MINUTES',
205
+ });
206
+
207
+ // Add a metric widget
208
+ const widget = await execute(AddWidgetContract, {
209
+ dashboardId: dashboard.id,
210
+ name: 'Total Revenue',
211
+ type: 'METRIC',
212
+ gridX: 0,
213
+ gridY: 0,
214
+ gridWidth: 3,
215
+ gridHeight: 2,
216
+ queryId: revenueQueryId,
217
+ config: {
218
+ format: 'currency',
219
+ prefix: '$',
220
+ showChange: true,
221
+ },
222
+ });
223
+
224
+ // Execute a query
225
+ const queryEngine = createQueryEngine();
226
+ const result = await queryEngine.execute(
227
+ { type: 'METRIC', metricIds: ['daily_revenue'] },
228
+ { dateRange: { start: new Date('2024-01-01'), end: new Date() } }
229
+ );
230
+ ```
231
+
232
+ ## Dependencies
233
+
234
+ - `@lssm/lib.schema` - Entity definitions
235
+ - `@lssm/lib.contracts` - Contract definitions
236
+ - `@lssm/lib.identity-rbac` - Access control
237
+ - `@lssm/lib.metering` - Usage metrics integration
238
+ - `@lssm/modules.audit-trail` - Change tracking
239
+ - `@lssm/modules.notifications` - Report delivery
240
+
241
+ ## Feature Flags
242
+
243
+ | Flag | Description | Default |
244
+ |------|-------------|---------|
245
+ | `ANALYTICS_SQL_QUERIES` | Enable SQL query support | false |
246
+ | `ANALYTICS_SCHEDULED_REPORTS` | Enable scheduled reports | true |
247
+ | `ANALYTICS_PUBLIC_DASHBOARDS` | Allow public sharing | false |
248
+ | `ANALYTICS_ADVANCED_WIDGETS` | Enable maps, funnels | true |
249
+ | `ANALYTICS_QUERY_CACHING` | Enable result caching | true |
250
+
251
+ ## Permissions
252
+
253
+ | Permission | Description | Default Roles |
254
+ |------------|-------------|---------------|
255
+ | `dashboard:view` | View dashboards | viewer, analyst, admin |
256
+ | `dashboard:create` | Create dashboards | analyst, admin |
257
+ | `dashboard:edit` | Edit dashboards | analyst, admin |
258
+ | `dashboard:delete` | Delete dashboards | admin |
259
+ | `dashboard:share` | Share externally | analyst, admin |
260
+ | `query:create` | Create queries | analyst, admin |
261
+ | `query:execute` | Execute queries | viewer, analyst, admin |
262
+ | `report:schedule` | Schedule reports | analyst, admin |
263
+
264
+
265
+
266
+
267
+