@lssm/example.analytics-dashboard 0.0.0-canary-20251217063201 → 0.0.0-canary-20251217073102

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 (95) hide show
  1. package/dist/dashboard/dashboard.contracts.d.ts +131 -131
  2. package/dist/dashboard/dashboard.contracts.js +5 -5
  3. package/dist/dashboard/dashboard.enum.d.ts +4 -4
  4. package/dist/dashboard/dashboard.enum.js +4 -4
  5. package/dist/dashboard/dashboard.schema.d.ts +79 -79
  6. package/dist/dashboard/dashboard.schema.js +43 -43
  7. package/dist/docs/analytics-dashboard.docblock.js +2 -2
  8. package/dist/events.d.ts +40 -40
  9. package/dist/events.js +25 -25
  10. package/dist/libs/contracts/dist/capabilities/openbanking.js +53 -49
  11. package/dist/libs/contracts/dist/client/index.js +1 -1
  12. package/dist/libs/contracts/dist/client/react/index.js +1 -1
  13. package/dist/libs/contracts/dist/contract-registry/index.js +1 -1
  14. package/dist/libs/contracts/dist/contract-registry/schemas.js +52 -49
  15. package/dist/libs/contracts/dist/docs/PUBLISHING.docblock.js +11 -86
  16. package/dist/libs/contracts/dist/docs/accessibility_wcag_compliance_specs.docblock.js +11 -360
  17. package/dist/libs/contracts/dist/docs/index.js +2 -2
  18. package/dist/libs/contracts/dist/docs/presentations.js +48 -44
  19. package/dist/libs/contracts/dist/docs/registry.js +27 -25
  20. package/dist/libs/contracts/dist/docs/tech/PHASE_1_QUICKSTART.docblock.js +11 -393
  21. package/dist/libs/contracts/dist/docs/tech/PHASE_2_AI_NATIVE_OPERATIONS.docblock.js +11 -78
  22. package/dist/libs/contracts/dist/docs/tech/PHASE_3_AUTO_EVOLUTION.docblock.js +11 -150
  23. package/dist/libs/contracts/dist/docs/tech/PHASE_4_PERSONALIZATION_ENGINE.docblock.js +11 -96
  24. package/dist/libs/contracts/dist/docs/tech/PHASE_5_ZERO_TOUCH_OPERATIONS.docblock.js +10 -10
  25. package/dist/libs/contracts/dist/docs/tech/auth/better-auth-nextjs.docblock.js +15 -15
  26. package/dist/libs/contracts/dist/docs/tech/contracts/openapi-export.docblock.js +12 -12
  27. package/dist/libs/contracts/dist/docs/tech/lifecycle-stage-system.docblock.js +11 -223
  28. package/dist/libs/contracts/dist/docs/tech/llm/llm-integration.docblock.js +44 -44
  29. package/dist/libs/contracts/dist/docs/tech/mcp-endpoints.docblock.js +30 -14
  30. package/dist/libs/contracts/dist/docs/tech/presentation-runtime.docblock.js +10 -10
  31. package/dist/libs/contracts/dist/docs/tech/schema/README.docblock.js +13 -274
  32. package/dist/libs/contracts/dist/docs/tech/studio/learning-events.docblock.js +41 -15
  33. package/dist/libs/contracts/dist/docs/tech/studio/learning-journeys.docblock.js +15 -15
  34. package/dist/libs/contracts/dist/docs/tech/studio/platform-admin-panel.docblock.js +14 -14
  35. package/dist/libs/contracts/dist/docs/tech/studio/project-access-teams.docblock.js +16 -28
  36. package/dist/libs/contracts/dist/docs/tech/studio/project-routing.docblock.js +60 -15
  37. package/dist/libs/contracts/dist/docs/tech/studio/sandbox-unlogged.docblock.js +13 -13
  38. package/dist/libs/contracts/dist/docs/tech/studio/team-invitations.docblock.js +31 -48
  39. package/dist/libs/contracts/dist/docs/tech/studio/workspace-ops.docblock.js +40 -15
  40. package/dist/libs/contracts/dist/docs/tech/studio/workspaces.docblock.js +14 -14
  41. package/dist/libs/contracts/dist/docs/tech/telemetry-ingest.docblock.js +22 -22
  42. package/dist/libs/contracts/dist/docs/tech/templates/runtime.docblock.js +12 -12
  43. package/dist/libs/contracts/dist/docs/tech/vscode-extension.docblock.js +22 -22
  44. package/dist/libs/contracts/dist/docs/tech/workflows/overview.docblock.js +11 -11
  45. package/dist/libs/contracts/dist/events.js +4 -3
  46. package/dist/libs/contracts/dist/index.js +14 -14
  47. package/dist/libs/contracts/dist/integrations/contracts.js +205 -199
  48. package/dist/libs/contracts/dist/integrations/index.js +5 -5
  49. package/dist/libs/contracts/dist/integrations/openbanking/contracts/accounts.js +133 -130
  50. package/dist/libs/contracts/dist/integrations/openbanking/contracts/balances.js +95 -93
  51. package/dist/libs/contracts/dist/integrations/openbanking/contracts/index.js +3 -3
  52. package/dist/libs/contracts/dist/integrations/openbanking/contracts/transactions.js +120 -118
  53. package/dist/libs/contracts/dist/integrations/openbanking/models.js +122 -120
  54. package/dist/libs/contracts/dist/integrations/openbanking/telemetry.js +9 -20
  55. package/dist/libs/contracts/dist/integrations/providers/elevenlabs.js +25 -25
  56. package/dist/libs/contracts/dist/integrations/providers/gcs-storage.js +36 -36
  57. package/dist/libs/contracts/dist/integrations/providers/gmail.js +40 -40
  58. package/dist/libs/contracts/dist/integrations/providers/google-calendar.js +31 -31
  59. package/dist/libs/contracts/dist/integrations/providers/mistral.js +31 -31
  60. package/dist/libs/contracts/dist/integrations/providers/postmark.js +31 -31
  61. package/dist/libs/contracts/dist/integrations/providers/powens.js +51 -51
  62. package/dist/libs/contracts/dist/integrations/providers/qdrant.js +31 -31
  63. package/dist/libs/contracts/dist/integrations/providers/stripe.js +35 -35
  64. package/dist/libs/contracts/dist/integrations/providers/twilio-sms.js +28 -28
  65. package/dist/libs/contracts/dist/jsonschema.js +1 -1
  66. package/dist/libs/contracts/dist/knowledge/contracts.js +170 -163
  67. package/dist/libs/contracts/dist/knowledge/spaces/email-threads.js +17 -17
  68. package/dist/libs/contracts/dist/knowledge/spaces/financial-docs.js +17 -17
  69. package/dist/libs/contracts/dist/knowledge/spaces/financial-overview.js +19 -19
  70. package/dist/libs/contracts/dist/knowledge/spaces/product-canon.js +17 -17
  71. package/dist/libs/contracts/dist/knowledge/spaces/support-faq.js +17 -17
  72. package/dist/libs/contracts/dist/knowledge/spaces/uploaded-docs.js +17 -17
  73. package/dist/libs/contracts/dist/llm/exporters.js +13 -12
  74. package/dist/libs/contracts/dist/onboarding-base.js +116 -99
  75. package/dist/libs/contracts/dist/ownership.js +18 -33
  76. package/dist/libs/contracts/dist/presentations.js +1 -1
  77. package/dist/libs/contracts/dist/presentations.v2.js +6 -2
  78. package/dist/libs/contracts/dist/regenerator/service.js +5 -0
  79. package/dist/libs/contracts/dist/registry.js +1 -1
  80. package/dist/libs/contracts/dist/schema/dist/FieldType.js +24 -14
  81. package/dist/libs/contracts/dist/schema/dist/ScalarTypeEnum.js +180 -166
  82. package/dist/libs/contracts/dist/schema/dist/SchemaModel.js +20 -9
  83. package/dist/libs/contracts/dist/server/mcp/registerPrompts.js +1 -1
  84. package/dist/libs/contracts/dist/spec.js +22 -13
  85. package/dist/libs/schema/dist/EnumType.js +25 -9
  86. package/dist/libs/schema/dist/FieldType.js +24 -14
  87. package/dist/libs/schema/dist/ScalarTypeEnum.js +180 -166
  88. package/dist/libs/schema/dist/SchemaModel.js +25 -10
  89. package/dist/libs/schema/dist/index.js +4 -4
  90. package/dist/query/query.contracts.js +3 -3
  91. package/dist/query/query.enum.d.ts +2 -2
  92. package/dist/query/query.enum.js +2 -2
  93. package/dist/query/query.schema.d.ts +34 -34
  94. package/dist/query/query.schema.js +33 -33
  95. package/package.json +10 -10
@@ -1,398 +1,16 @@
1
- import { a } from "../registry.js";
1
+ import { registerDocBlocks } from "../registry.js";
2
2
 
3
3
  //#region ../../libs/contracts/dist/docs/tech/PHASE_1_QUICKSTART.docblock.js
4
- const t = [{
5
- id: `docs.tech.PHASE_1_QUICKSTART`,
6
- title: `Phase 1: API Reference Index`,
7
- summary: `Quick reference for all new Phase 1 APIs.`,
8
- kind: `reference`,
9
- visibility: `public`,
10
- route: `/docs/tech/PHASE_1_QUICKSTART`,
11
- tags: [`tech`, `PHASE_1_QUICKSTART`],
12
- body: `# Phase 1: API Reference Index
13
-
14
- Quick reference for all new Phase 1 APIs.
15
-
16
- ---
17
-
18
- ## @lssm/lib.multi-tenancy
19
-
20
- ### RLS
21
- \`\`\`typescript
22
- import { createRlsMiddleware, type TenantIdProvider } from '@lssm/lib.multi-tenancy/rls';
23
- \`\`\`
24
-
25
- ### Provisioning
26
- \`\`\`typescript
27
- import {
28
- TenantProvisioningService,
29
- type CreateTenantInput,
30
- type TenantProvisioningConfig
31
- } from '@lssm/lib.multi-tenancy/provisioning';
32
- \`\`\`
33
-
34
- ### Isolation
35
- \`\`\`typescript
36
- import { IsolationValidator } from '@lssm/lib.multi-tenancy/isolation';
37
- \`\`\`
38
-
39
- ---
40
-
41
- ## @lssm/lib.observability
42
-
43
- ### Tracing
44
- \`\`\`typescript
45
- import {
46
- getTracer,
47
- traceAsync,
48
- traceSync,
49
- createTracingMiddleware
50
- } from '@lssm/lib.observability/tracing';
51
- \`\`\`
52
-
53
- ### Metrics
54
- \`\`\`typescript
55
- import {
56
- getMeter,
57
- createCounter,
58
- createUpDownCounter,
59
- createHistogram,
60
- standardMetrics
61
- } from '@lssm/lib.observability/metrics';
62
- \`\`\`
63
-
64
- ### Logging
65
- \`\`\`typescript
66
- import {
67
- Logger,
68
- logger,
69
- type LogLevel,
70
- type LogEntry
71
- } from '@lssm/lib.observability/logging';
72
- \`\`\`
73
-
74
- ---
75
-
76
- ## @lssm/lib.resilience
77
-
78
- ### Circuit Breaker
79
- \`\`\`typescript
80
- import {
81
- CircuitBreaker,
82
- type CircuitState,
83
- type CircuitBreakerConfig
84
- } from '@lssm/lib.resilience/circuit-breaker';
85
- \`\`\`
86
-
87
- ### Retry
88
- \`\`\`typescript
89
- import { retry } from '@lssm/lib.resilience/retry';
90
- \`\`\`
91
-
92
- ### Timeout
93
- \`\`\`typescript
94
- import { timeout } from '@lssm/lib.resilience/timeout';
95
- \`\`\`
96
-
97
- ### Fallback
98
- \`\`\`typescript
99
- import { fallback } from '@lssm/lib.resilience/fallback';
100
- \`\`\`
101
-
102
- ---
103
-
104
- ## Enhanced: @lssm/lib.contracts
105
-
106
- ### DataViews
107
- \`\`\`typescript
108
- import { DataViewQueryGenerator } from '@lssm/lib.contracts/data-views/query-generator';
109
- import { DataViewRuntime } from '@lssm/lib.contracts/data-views/runtime';
110
- \`\`\`
111
-
112
- ### Workflows
113
- \`\`\`typescript
114
- import { SLAMonitor, type SLABreachEvent } from '@lssm/lib.contracts/workflow/sla-monitor';
115
- import { PrismaStateStore } from '@lssm/lib.contracts/workflow/adapters/db-adapter';
116
- \`\`\`
117
-
118
- ---
119
-
120
- ## Enhanced: @lssm/lib.design-system
121
-
122
- ### DataView Components
123
- \`\`\`typescript
124
- import { DataViewRenderer } from '@lssm/lib.design-system/components/data-view/DataViewRenderer';
125
- // Also available: DataViewList, DataViewTable, DataViewDetail
126
- \`\`\`
127
-
128
- ---
129
-
130
- ## Usage Examples
131
-
132
- ### Complete Workflow with All Features
133
-
134
- \`\`\`typescript
135
- import { WorkflowRunner } from '@lssm/lib.contracts/workflow/runner';
136
- import { PrismaStateStore } from '@lssm/lib.contracts/workflow/adapters/db-adapter';
137
- import { SLAMonitor } from '@lssm/lib.contracts/workflow/sla-monitor';
138
- import { CircuitBreaker } from '@lssm/lib.resilience/circuit-breaker';
139
- import { traceAsync } from '@lssm/lib.observability/tracing';
140
-
141
- const runner = new WorkflowRunner({
142
- registry,
143
- stateStore: new PrismaStateStore(db),
144
- opExecutor: async (op, input, ctx) => {
145
- return traceAsync(\`op.\${op.name}\`, async (span) => {
146
- span.setAttribute('operation', op.name);
147
- const breaker = getCircuitBreaker(op.name);
148
- return breaker.execute(() => executeOperation(op, input, ctx));
149
- });
150
- },
151
- eventEmitter: (event, payload) => {
152
- if (event.startsWith('workflow.')) {
153
- logger.info(event, payload);
154
- }
155
- },
156
- });
157
-
158
- const monitor = new SLAMonitor((event, payload) => {
159
- logger.warn('SLA_BREACH', payload);
160
- alertOps(payload);
161
- });
162
-
163
- // Start workflow
164
- const workflowId = await runner.start('payment.flow', 1);
165
-
166
- // Monitor SLA
167
- const state = await runner.getState(workflowId);
168
- const spec = registry.get('payment.flow', 1);
169
- monitor.check(state, spec!);
170
- \`\`\`
171
-
172
- ### Complete DataView with Observability
173
-
174
- \`\`\`typescript
175
- import { DataViewRenderer } from '@lssm/lib.design-system';
176
- import { DataViewQueryGenerator } from '@lssm/lib.contracts/data-views/query-generator';
177
- import { traceAsync } from '@lssm/lib.observability/tracing';
178
- import { MyDataView } from './specs/users.data-view';
179
-
180
- export function UserListPage() {
181
- const [page, setPage] = useState(1);
182
- const [users, setUsers] = useState([]);
183
-
184
- const loadUsers = async () => {
185
- return traceAsync('load_users', async (span) => {
186
- const generator = new DataViewQueryGenerator(MyDataView);
187
- const query = generator.generate({ pagination: { page, pageSize: 20 } });
188
-
189
- span.setAttribute('page', page);
190
- const result = await api.execute(query);
191
- setUsers(result.data);
192
- });
193
- };
194
-
195
- return (
196
- <DataViewRenderer
197
- spec={MyDataView}
198
- items={users}
199
- pagination={{ page, pageSize: 20, total: users.length }}
200
- onPageChange={setPage}
201
- />
202
- );
203
- }
204
- \`\`\`
205
-
206
- ### Complete Multi-Tenant Setup
207
-
208
- \`\`\`typescript
209
- // 1. RLS Middleware
210
- import { createRlsMiddleware } from '@lssm/lib.multi-tenancy/rls';
211
- db.$use(createRlsMiddleware(() => req.tenantId));
212
-
213
- // 2. Tenant Provisioning
214
- import { TenantProvisioningService } from '@lssm/lib.multi-tenancy/provisioning';
215
- const service = new TenantProvisioningService({ db });
216
-
217
- // 3. Create new tenant
218
- await service.provision({
219
- id: 'acme',
220
- name: 'Acme Corp',
221
- slug: 'acme',
222
- ownerEmail: 'admin@acme.com',
223
- });
224
-
225
- // 4. Validate isolation in tests
226
- import { IsolationValidator } from '@lssm/lib.multi-tenancy/isolation';
227
-
228
- test('queries are isolated', () => {
229
- const isValid = IsolationValidator.validateQuery(
230
- 'User',
231
- 'findMany',
232
- { where: { tenantId: 'acme' } },
233
- 'acme'
234
- );
235
- expect(isValid).toBe(true);
236
- });
237
- \`\`\`
238
-
239
- ---
240
-
241
- ## Testing
242
-
243
- ### Test Circuit Breakers
244
-
245
- \`\`\`typescript
246
- import { CircuitBreaker } from '@lssm/lib.resilience/circuit-breaker';
247
-
248
- test('circuit opens after threshold', async () => {
249
- const breaker = new CircuitBreaker({
250
- failureThreshold: 3,
251
- resetTimeoutMs: 5000,
252
- });
253
-
254
- // Trigger failures
255
- for (let i = 0; i < 3; i++) {
256
- await expect(
257
- breaker.execute(() => Promise.reject('error'))
258
- ).rejects.toThrow();
259
- }
260
-
261
- // Circuit should be open
262
- await expect(
263
- breaker.execute(() => Promise.resolve('ok'))
264
- ).rejects.toThrow('CircuitBreaker is OPEN');
265
- });
266
- \`\`\`
267
-
268
- ### Test Workflow Retry
269
-
270
- \`\`\`typescript
271
- test('workflow retries on failure', async () => {
272
- let attempts = 0;
273
- const opExecutor = async () => {
274
- attempts++;
275
- if (attempts < 3) throw new Error('fail');
276
- return 'success';
277
- };
278
-
279
- const runner = new WorkflowRunner({ /* ... */ opExecutor });
280
- await runner.executeStep(workflowId);
281
-
282
- expect(attempts).toBe(3);
283
- });
284
- \`\`\`
285
-
286
- ---
287
-
288
- ## Common Patterns
289
-
290
- ### Pattern: Resilient External Call
291
-
292
- \`\`\`typescript
293
- import { CircuitBreaker } from '@lssm/lib.resilience/circuit-breaker';
294
- import { retry } from '@lssm/lib.resilience/retry';
295
- import { timeout } from '@lssm/lib.resilience/timeout';
296
- import { traceAsync } from '@lssm/lib.observability/tracing';
297
-
298
- const breaker = new CircuitBreaker({ failureThreshold: 5, resetTimeoutMs: 30000 });
299
-
300
- export async function callExternalAPI(input: any) {
301
- return traceAsync('external_api_call', async (span) => {
302
- span.setAttribute('service', 'stripe');
303
-
304
- return breaker.execute(() =>
305
- retry(
306
- () => timeout(() => stripe.api.call(input), 5000),
307
- 3,
308
- 1000,
309
- true
310
- )
311
- );
312
- });
313
- }
314
- \`\`\`
315
-
316
- **Benefits**: Circuit breaker + retry + timeout + tracing in one place.
317
-
318
- ---
319
-
320
- ### Pattern: Tenant-Aware Operation
321
-
322
- \`\`\`typescript
323
- import { traceAsync } from '@lssm/lib.observability/tracing';
324
-
325
- export async function listUsers(tenantId: string) {
326
- return traceAsync('list_users', async (span) => {
327
- span.setAttribute('tenant_id', tenantId);
328
-
329
- // RLS middleware will inject WHERE tenantId = ?
330
- return db.user.findMany();
331
- });
332
- }
333
- \`\`\`
334
-
335
- ---
336
-
337
- ### Pattern: Monitored Workflow
338
-
339
- \`\`\`typescript
340
- import { WorkflowRunner } from '@lssm/lib.contracts/workflow/runner';
341
- import { SLAMonitor } from '@lssm/lib.contracts/workflow/sla-monitor';
342
- import { logger } from '@lssm/lib.observability/logging';
343
-
344
- const monitor = new SLAMonitor((event, payload) => {
345
- logger.warn('workflow.sla_breach', payload);
346
- });
347
-
348
- // In workflow poller
349
- const state = await runner.getState(workflowId);
350
- const spec = registry.get(state.workflowName, state.workflowVersion);
351
- if (spec) {
352
- monitor.check(state, spec);
353
- }
354
- \`\`\`
355
-
356
- ---
357
-
358
- ## Next Steps
359
-
360
- 1. **Implement one quick win** (30 minutes)
361
- 2. **Add tests for new functionality** (1 hour)
362
- 3. **Deploy to staging and verify observability** (1 hour)
363
- 4. **Roll out to production** (monitor closely)
364
- 5. **Read full documentation** at https://contractspec.lssm.tech/docs
365
-
366
- ---
367
-
368
- **Questions?** See \`/docs/guides/phase-1-migration\` or reach out via https://contractspec.lssm.tech/contact
369
-
370
-
371
-
372
-
373
-
374
-
375
-
376
-
377
-
378
-
379
-
380
-
381
-
382
-
383
-
384
-
385
-
386
-
387
-
388
-
389
-
390
-
391
-
392
-
393
-
394
- `
4
+ const tech_PHASE_1_QUICKSTART_DocBlocks = [{
5
+ id: "docs.tech.PHASE_1_QUICKSTART",
6
+ title: "Phase 1: API Reference Index",
7
+ summary: "Quick reference for all new Phase 1 APIs.",
8
+ kind: "reference",
9
+ visibility: "public",
10
+ route: "/docs/tech/PHASE_1_QUICKSTART",
11
+ tags: ["tech", "PHASE_1_QUICKSTART"],
12
+ body: "# Phase 1: API Reference Index\n\nQuick reference for all new Phase 1 APIs.\n\n---\n\n## @lssm/lib.multi-tenancy\n\n### RLS\n```typescript\nimport { createRlsMiddleware, type TenantIdProvider } from '@lssm/lib.multi-tenancy/rls';\n```\n\n### Provisioning\n```typescript\nimport { \n TenantProvisioningService,\n type CreateTenantInput,\n type TenantProvisioningConfig \n} from '@lssm/lib.multi-tenancy/provisioning';\n```\n\n### Isolation\n```typescript\nimport { IsolationValidator } from '@lssm/lib.multi-tenancy/isolation';\n```\n\n---\n\n## @lssm/lib.observability\n\n### Tracing\n```typescript\nimport { \n getTracer,\n traceAsync,\n traceSync,\n createTracingMiddleware \n} from '@lssm/lib.observability/tracing';\n```\n\n### Metrics\n```typescript\nimport {\n getMeter,\n createCounter,\n createUpDownCounter,\n createHistogram,\n standardMetrics\n} from '@lssm/lib.observability/metrics';\n```\n\n### Logging\n```typescript\nimport {\n Logger,\n logger,\n type LogLevel,\n type LogEntry\n} from '@lssm/lib.observability/logging';\n```\n\n---\n\n## @lssm/lib.resilience\n\n### Circuit Breaker\n```typescript\nimport {\n CircuitBreaker,\n type CircuitState,\n type CircuitBreakerConfig\n} from '@lssm/lib.resilience/circuit-breaker';\n```\n\n### Retry\n```typescript\nimport { retry } from '@lssm/lib.resilience/retry';\n```\n\n### Timeout\n```typescript\nimport { timeout } from '@lssm/lib.resilience/timeout';\n```\n\n### Fallback\n```typescript\nimport { fallback } from '@lssm/lib.resilience/fallback';\n```\n\n---\n\n## Enhanced: @lssm/lib.contracts\n\n### DataViews\n```typescript\nimport { DataViewQueryGenerator } from '@lssm/lib.contracts/data-views/query-generator';\nimport { DataViewRuntime } from '@lssm/lib.contracts/data-views/runtime';\n```\n\n### Workflows\n```typescript\nimport { SLAMonitor, type SLABreachEvent } from '@lssm/lib.contracts/workflow/sla-monitor';\nimport { PrismaStateStore } from '@lssm/lib.contracts/workflow/adapters/db-adapter';\n```\n\n---\n\n## Enhanced: @lssm/lib.design-system\n\n### DataView Components\n```typescript\nimport { DataViewRenderer } from '@lssm/lib.design-system/components/data-view/DataViewRenderer';\n// Also available: DataViewList, DataViewTable, DataViewDetail\n```\n\n---\n\n## Usage Examples\n\n### Complete Workflow with All Features\n\n```typescript\nimport { WorkflowRunner } from '@lssm/lib.contracts/workflow/runner';\nimport { PrismaStateStore } from '@lssm/lib.contracts/workflow/adapters/db-adapter';\nimport { SLAMonitor } from '@lssm/lib.contracts/workflow/sla-monitor';\nimport { CircuitBreaker } from '@lssm/lib.resilience/circuit-breaker';\nimport { traceAsync } from '@lssm/lib.observability/tracing';\n\nconst runner = new WorkflowRunner({\n registry,\n stateStore: new PrismaStateStore(db),\n opExecutor: async (op, input, ctx) => {\n return traceAsync(`op.${op.name}`, async (span) => {\n span.setAttribute('operation', op.name);\n const breaker = getCircuitBreaker(op.name);\n return breaker.execute(() => executeOperation(op, input, ctx));\n });\n },\n eventEmitter: (event, payload) => {\n if (event.startsWith('workflow.')) {\n logger.info(event, payload);\n }\n },\n});\n\nconst monitor = new SLAMonitor((event, payload) => {\n logger.warn('SLA_BREACH', payload);\n alertOps(payload);\n});\n\n// Start workflow\nconst workflowId = await runner.start('payment.flow', 1);\n\n// Monitor SLA\nconst state = await runner.getState(workflowId);\nconst spec = registry.get('payment.flow', 1);\nmonitor.check(state, spec!);\n```\n\n### Complete DataView with Observability\n\n```typescript\nimport { DataViewRenderer } from '@lssm/lib.design-system';\nimport { DataViewQueryGenerator } from '@lssm/lib.contracts/data-views/query-generator';\nimport { traceAsync } from '@lssm/lib.observability/tracing';\nimport { MyDataView } from './specs/users.data-view';\n\nexport function UserListPage() {\n const [page, setPage] = useState(1);\n const [users, setUsers] = useState([]);\n\n const loadUsers = async () => {\n return traceAsync('load_users', async (span) => {\n const generator = new DataViewQueryGenerator(MyDataView);\n const query = generator.generate({ pagination: { page, pageSize: 20 } });\n \n span.setAttribute('page', page);\n const result = await api.execute(query);\n setUsers(result.data);\n });\n };\n\n return (\n <DataViewRenderer\n spec={MyDataView}\n items={users}\n pagination={{ page, pageSize: 20, total: users.length }}\n onPageChange={setPage}\n />\n );\n}\n```\n\n### Complete Multi-Tenant Setup\n\n```typescript\n// 1. RLS Middleware\nimport { createRlsMiddleware } from '@lssm/lib.multi-tenancy/rls';\ndb.$use(createRlsMiddleware(() => req.tenantId));\n\n// 2. Tenant Provisioning\nimport { TenantProvisioningService } from '@lssm/lib.multi-tenancy/provisioning';\nconst service = new TenantProvisioningService({ db });\n\n// 3. Create new tenant\nawait service.provision({\n id: 'acme',\n name: 'Acme Corp',\n slug: 'acme',\n ownerEmail: 'admin@acme.com',\n});\n\n// 4. Validate isolation in tests\nimport { IsolationValidator } from '@lssm/lib.multi-tenancy/isolation';\n\ntest('queries are isolated', () => {\n const isValid = IsolationValidator.validateQuery(\n 'User',\n 'findMany',\n { where: { tenantId: 'acme' } },\n 'acme'\n );\n expect(isValid).toBe(true);\n});\n```\n\n---\n\n## Testing\n\n### Test Circuit Breakers\n\n```typescript\nimport { CircuitBreaker } from '@lssm/lib.resilience/circuit-breaker';\n\ntest('circuit opens after threshold', async () => {\n const breaker = new CircuitBreaker({\n failureThreshold: 3,\n resetTimeoutMs: 5000,\n });\n\n // Trigger failures\n for (let i = 0; i < 3; i++) {\n await expect(\n breaker.execute(() => Promise.reject('error'))\n ).rejects.toThrow();\n }\n\n // Circuit should be open\n await expect(\n breaker.execute(() => Promise.resolve('ok'))\n ).rejects.toThrow('CircuitBreaker is OPEN');\n});\n```\n\n### Test Workflow Retry\n\n```typescript\ntest('workflow retries on failure', async () => {\n let attempts = 0;\n const opExecutor = async () => {\n attempts++;\n if (attempts < 3) throw new Error('fail');\n return 'success';\n };\n\n const runner = new WorkflowRunner({ /* ... */ opExecutor });\n await runner.executeStep(workflowId);\n \n expect(attempts).toBe(3);\n});\n```\n\n---\n\n## Common Patterns\n\n### Pattern: Resilient External Call\n\n```typescript\nimport { CircuitBreaker } from '@lssm/lib.resilience/circuit-breaker';\nimport { retry } from '@lssm/lib.resilience/retry';\nimport { timeout } from '@lssm/lib.resilience/timeout';\nimport { traceAsync } from '@lssm/lib.observability/tracing';\n\nconst breaker = new CircuitBreaker({ failureThreshold: 5, resetTimeoutMs: 30000 });\n\nexport async function callExternalAPI(input: any) {\n return traceAsync('external_api_call', async (span) => {\n span.setAttribute('service', 'stripe');\n \n return breaker.execute(() =>\n retry(\n () => timeout(() => stripe.api.call(input), 5000),\n 3,\n 1000,\n true\n )\n );\n });\n}\n```\n\n**Benefits**: Circuit breaker + retry + timeout + tracing in one place.\n\n---\n\n### Pattern: Tenant-Aware Operation\n\n```typescript\nimport { traceAsync } from '@lssm/lib.observability/tracing';\n\nexport async function listUsers(tenantId: string) {\n return traceAsync('list_users', async (span) => {\n span.setAttribute('tenant_id', tenantId);\n \n // RLS middleware will inject WHERE tenantId = ?\n return db.user.findMany();\n });\n}\n```\n\n---\n\n### Pattern: Monitored Workflow\n\n```typescript\nimport { WorkflowRunner } from '@lssm/lib.contracts/workflow/runner';\nimport { SLAMonitor } from '@lssm/lib.contracts/workflow/sla-monitor';\nimport { logger } from '@lssm/lib.observability/logging';\n\nconst monitor = new SLAMonitor((event, payload) => {\n logger.warn('workflow.sla_breach', payload);\n});\n\n// In workflow poller\nconst state = await runner.getState(workflowId);\nconst spec = registry.get(state.workflowName, state.workflowVersion);\nif (spec) {\n monitor.check(state, spec);\n}\n```\n\n---\n\n## Next Steps\n\n1. **Implement one quick win** (30 minutes)\n2. **Add tests for new functionality** (1 hour)\n3. **Deploy to staging and verify observability** (1 hour)\n4. **Roll out to production** (monitor closely)\n5. **Read full documentation** at https://contractspec.lssm.tech/docs\n\n---\n\n**Questions?** See `/docs/guides/phase-1-migration` or reach out via https://contractspec.lssm.tech/contact\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
395
13
  }];
396
- a(t);
14
+ registerDocBlocks(tech_PHASE_1_QUICKSTART_DocBlocks);
397
15
 
398
16
  //#endregion
@@ -1,83 +1,16 @@
1
- import { a } from "../registry.js";
1
+ import { registerDocBlocks } from "../registry.js";
2
2
 
3
3
  //#region ../../libs/contracts/dist/docs/tech/PHASE_2_AI_NATIVE_OPERATIONS.docblock.js
4
- const t = [{
5
- id: `docs.tech.PHASE_2_AI_NATIVE_OPERATIONS`,
6
- title: `Phase 2: AI-Native Operations`,
7
- summary: `_Last updated: 2025-11-20_`,
8
- kind: `reference`,
9
- visibility: `public`,
10
- route: `/docs/tech/PHASE_2_AI_NATIVE_OPERATIONS`,
11
- tags: [`tech`, `PHASE_2_AI_NATIVE_OPERATIONS`],
12
- body: `# Phase 2: AI-Native Operations
13
-
14
- _Last updated: 2025-11-20_
15
-
16
- Phase 2 turns ContractSpec into an AI-first operations stack. The new libraries below are the building blocks used by support bots, growth agents, and human-in-the-loop flows.
17
-
18
- ## Libraries
19
-
20
- ### @lssm/lib.ai-agent
21
-
22
- - **Spec + Registry**: \`defineAgent\`, \`AgentRegistry\` keep agent definitions type-safe.
23
- - **Runner**: \`AgentRunner\` drives LLM conversations, tool calls, retries, escalation, and telemetry hooks.
24
- - **Tools**: \`ToolExecutor\` standardizes schema validation + timeouts.
25
- - **Memory**: \`InMemoryAgentMemory\` + interfaces for plugging persistent stores.
26
- - **Approvals**: new \`ApprovalWorkflow\` + \`InMemoryApprovalStore\` capture low-confidence decisions and surface them to reviewers.
27
-
28
- ### @lssm/lib.support-bot
29
-
30
- Composable support automation primitives:
31
-
32
- - \`TicketClassifier\` → heuristics + optional LLM validation for category, priority, sentiment.
33
- - \`TicketResolver\` → RAG pipeline backed by knowledge spaces.
34
- - \`AutoResponder\` → tone-aware drafts with citations.
35
- - \`SupportFeedbackLoop\` → tracks resolution rates.
36
- - \`createSupportTools\` → ready-made tool definitions for AgentRunner.
37
-
38
- ### @lssm/lib.content-gen
39
-
40
- Content generators that consume a \`ContentBrief\` and output production-ready assets:
41
-
42
- - \`BlogGenerator\`, \`LandingPageGenerator\`, \`EmailCampaignGenerator\`, \`SocialPostGenerator\`.
43
- - \`SeoOptimizer\` builds metadata + schema markup.
44
-
45
- ### @lssm/lib.analytics
46
-
47
- Queryless analytics helpers:
48
-
49
- - \`FunnelAnalyzer\` – conversion/drop-off per step.
50
- - \`CohortTracker\` – retention + LTV per cohort.
51
- - \`ChurnPredictor\` – recency/frequency/error scoring.
52
- - \`GrowthHypothesisGenerator\` – surfaces experiment ideas from metric trends.
53
-
54
- ### @lssm/lib.growth
55
-
56
- A/B testing toolkit:
57
-
58
- - \`ExperimentRegistry\` + \`ExperimentRunner\` – deterministic bucketing.
59
- - \`ExperimentTracker\` – persist exposures + metrics.
60
- - \`StatsEngine\` – Welch’s t-test + improvement calculations.
61
-
62
- ### Human-in-the-loop UI
63
-
64
- \`@lssm/lib.design-system\` now exposes:
65
-
66
- - \`ApprovalQueue\` – list + act on pending approvals.
67
- - \`AgentMonitor\` – live view of agent sessions with confidence + status.
68
-
69
- ## Examples
70
-
71
- - \`examples/ai-support-bot/setup.ts\` shows ticket classification → resolution → response draft.
72
- - \`examples/content-generation/generate.ts\` produces blog, landing, email, social, SEO output from one brief.
73
-
74
- ## Next Steps
75
-
76
- 1. Wire these libraries into vertical apps (H-Circle, ArtisanOS, etc.).
77
- 2. Add background workers that consume the new analytics/growth trackers.
78
- 3. Expand web-landing to highlight these Phase 2 capabilities (see separate TODO).
79
- `
4
+ const tech_PHASE_2_AI_NATIVE_OPERATIONS_DocBlocks = [{
5
+ id: "docs.tech.PHASE_2_AI_NATIVE_OPERATIONS",
6
+ title: "Phase 2: AI-Native Operations",
7
+ summary: "_Last updated: 2025-11-20_",
8
+ kind: "reference",
9
+ visibility: "public",
10
+ route: "/docs/tech/PHASE_2_AI_NATIVE_OPERATIONS",
11
+ tags: ["tech", "PHASE_2_AI_NATIVE_OPERATIONS"],
12
+ body: "# Phase 2: AI-Native Operations\n\n_Last updated: 2025-11-20_\n\nPhase 2 turns ContractSpec into an AI-first operations stack. The new libraries below are the building blocks used by support bots, growth agents, and human-in-the-loop flows.\n\n## Libraries\n\n### @lssm/lib.ai-agent\n\n- **Spec + Registry**: `defineAgent`, `AgentRegistry` keep agent definitions type-safe.\n- **Runner**: `AgentRunner` drives LLM conversations, tool calls, retries, escalation, and telemetry hooks.\n- **Tools**: `ToolExecutor` standardizes schema validation + timeouts.\n- **Memory**: `InMemoryAgentMemory` + interfaces for plugging persistent stores.\n- **Approvals**: new `ApprovalWorkflow` + `InMemoryApprovalStore` capture low-confidence decisions and surface them to reviewers.\n\n### @lssm/lib.support-bot\n\nComposable support automation primitives:\n\n- `TicketClassifier` → heuristics + optional LLM validation for category, priority, sentiment.\n- `TicketResolver` → RAG pipeline backed by knowledge spaces.\n- `AutoResponder` → tone-aware drafts with citations.\n- `SupportFeedbackLoop` → tracks resolution rates.\n- `createSupportTools` → ready-made tool definitions for AgentRunner.\n\n### @lssm/lib.content-gen\n\nContent generators that consume a `ContentBrief` and output production-ready assets:\n\n- `BlogGenerator`, `LandingPageGenerator`, `EmailCampaignGenerator`, `SocialPostGenerator`.\n- `SeoOptimizer` builds metadata + schema markup.\n\n### @lssm/lib.analytics\n\nQueryless analytics helpers:\n\n- `FunnelAnalyzer` – conversion/drop-off per step.\n- `CohortTracker` – retention + LTV per cohort.\n- `ChurnPredictor` – recency/frequency/error scoring.\n- `GrowthHypothesisGenerator` – surfaces experiment ideas from metric trends.\n\n### @lssm/lib.growth\n\nA/B testing toolkit:\n\n- `ExperimentRegistry` + `ExperimentRunner` – deterministic bucketing.\n- `ExperimentTracker` – persist exposures + metrics.\n- `StatsEngine` – Welch’s t-test + improvement calculations.\n\n### Human-in-the-loop UI\n\n`@lssm/lib.design-system` now exposes:\n\n- `ApprovalQueue` – list + act on pending approvals.\n- `AgentMonitor` – live view of agent sessions with confidence + status.\n\n## Examples\n\n- `examples/ai-support-bot/setup.ts` shows ticket classification → resolution → response draft.\n- `examples/content-generation/generate.ts` produces blog, landing, email, social, SEO output from one brief.\n\n## Next Steps\n\n1. Wire these libraries into vertical apps (H-Circle, ArtisanOS, etc.).\n2. Add background workers that consume the new analytics/growth trackers.\n3. Expand web-landing to highlight these Phase 2 capabilities (see separate TODO).\n"
80
13
  }];
81
- a(t);
14
+ registerDocBlocks(tech_PHASE_2_AI_NATIVE_OPERATIONS_DocBlocks);
82
15
 
83
16
  //#endregion