@happyvertical/smrt-sites 0.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,603 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "generatedAt": "2026-06-23T01:12:09.926Z",
4
+ "packageName": "@happyvertical/smrt-sites",
5
+ "packageVersion": "0.30.0",
6
+ "sourceManifestPath": "dist/manifest.json",
7
+ "agentDocPath": "AGENTS.md",
8
+ "sourceHashes": {
9
+ "manifest": "e66859ab55fee6d976b957e67fe0a71493b69f6599c35e9fe854e2f637c2d936",
10
+ "packageJson": "5485938e78384d4fe70fa5e5bfe09c2b7cdced00b824ebc498951e940deeda84",
11
+ "agents": "20ecba2963426d3e132157f077fbdc5583a20bb0f68d8a7942cf7f8ada5d5aa2"
12
+ },
13
+ "exports": [
14
+ ".",
15
+ "./manifest",
16
+ "./manifest.json"
17
+ ],
18
+ "dependencies": {
19
+ "@happyvertical/smrt-core": "workspace:*",
20
+ "@happyvertical/smrt-tenancy": "workspace:*",
21
+ "@happyvertical/smrt-cli": "workspace:*",
22
+ "@happyvertical/smrt-vitest": "workspace:*",
23
+ "@happyvertical/sql": "catalog:",
24
+ "@types/node": "25.0.9",
25
+ "fast-glob": "3.3.3",
26
+ "typescript": "^5.9.3",
27
+ "vite": "^7.3.1",
28
+ "vitest": "^4.0.17"
29
+ },
30
+ "smrtDependencies": [
31
+ "@happyvertical/smrt-cli",
32
+ "@happyvertical/smrt-core",
33
+ "@happyvertical/smrt-tenancy",
34
+ "@happyvertical/smrt-vitest"
35
+ ],
36
+ "sdkDependencies": [
37
+ "@happyvertical/sql"
38
+ ],
39
+ "tags": [],
40
+ "risks": [],
41
+ "objects": [
42
+ {
43
+ "name": "SiteAgentBindingCollection",
44
+ "qualifiedName": "@happyvertical/smrt-sites:SiteAgentBindingCollection",
45
+ "collection": "siteagentbindings",
46
+ "tableName": "site_agent_bindings",
47
+ "packageName": "@happyvertical/smrt-sites",
48
+ "extends": "SmrtCollection",
49
+ "fields": [],
50
+ "relationships": [],
51
+ "methods": [
52
+ "findByAgent",
53
+ "findBySite",
54
+ "findBySiteAndAgent",
55
+ "findEnabled"
56
+ ],
57
+ "surfaces": [],
58
+ "relationshipFeatures": [
59
+ "uuidColumns"
60
+ ],
61
+ "tags": [],
62
+ "risks": []
63
+ },
64
+ {
65
+ "name": "SiteCollection",
66
+ "qualifiedName": "@happyvertical/smrt-sites:SiteCollection",
67
+ "collection": "sites",
68
+ "tableName": "sites",
69
+ "packageName": "@happyvertical/smrt-sites",
70
+ "extends": "SmrtCollection",
71
+ "fields": [],
72
+ "relationships": [],
73
+ "methods": [
74
+ "findActive",
75
+ "findByDomain",
76
+ "findByStatus",
77
+ "findByTenant"
78
+ ],
79
+ "surfaces": [],
80
+ "relationshipFeatures": [
81
+ "uuidColumns"
82
+ ],
83
+ "tags": [],
84
+ "risks": []
85
+ },
86
+ {
87
+ "name": "Site",
88
+ "qualifiedName": "@happyvertical/smrt-sites:Site",
89
+ "collection": "sites",
90
+ "tableName": "sites",
91
+ "packageName": "@happyvertical/smrt-sites",
92
+ "extends": "SmrtObject",
93
+ "fields": [
94
+ {
95
+ "name": "tenantId",
96
+ "type": "text",
97
+ "required": true,
98
+ "columnType": "UUID"
99
+ },
100
+ {
101
+ "name": "name",
102
+ "type": "text",
103
+ "required": false,
104
+ "columnType": "TEXT"
105
+ },
106
+ {
107
+ "name": "domain",
108
+ "type": "text",
109
+ "required": false,
110
+ "columnType": "TEXT"
111
+ },
112
+ {
113
+ "name": "status",
114
+ "type": "text",
115
+ "required": false,
116
+ "columnType": "TEXT"
117
+ },
118
+ {
119
+ "name": "tier",
120
+ "type": "text",
121
+ "required": false,
122
+ "columnType": "TEXT"
123
+ },
124
+ {
125
+ "name": "databaseUrl",
126
+ "type": "text",
127
+ "required": false,
128
+ "columnType": "TEXT"
129
+ },
130
+ {
131
+ "name": "databaseType",
132
+ "type": "text",
133
+ "required": false,
134
+ "columnType": "TEXT"
135
+ },
136
+ {
137
+ "name": "portalConfig",
138
+ "type": "text",
139
+ "required": false,
140
+ "columnType": "TEXT"
141
+ },
142
+ {
143
+ "name": "repositoryUrl",
144
+ "type": "text",
145
+ "required": false,
146
+ "columnType": "TEXT"
147
+ },
148
+ {
149
+ "name": "templateName",
150
+ "type": "text",
151
+ "required": false,
152
+ "columnType": "TEXT"
153
+ },
154
+ {
155
+ "name": "provisioningStatus",
156
+ "type": "text",
157
+ "required": false,
158
+ "columnType": "TEXT"
159
+ },
160
+ {
161
+ "name": "provisionedAt",
162
+ "type": "datetime",
163
+ "required": false,
164
+ "columnType": "TIMESTAMP"
165
+ },
166
+ {
167
+ "name": "provisioningError",
168
+ "type": "text",
169
+ "required": false,
170
+ "columnType": "TEXT"
171
+ },
172
+ {
173
+ "name": "metadata",
174
+ "type": "text",
175
+ "required": false,
176
+ "columnType": "TEXT"
177
+ },
178
+ {
179
+ "name": "createdAt",
180
+ "type": "datetime",
181
+ "required": false,
182
+ "columnType": "TIMESTAMP"
183
+ },
184
+ {
185
+ "name": "updatedAt",
186
+ "type": "datetime",
187
+ "required": false,
188
+ "columnType": "TIMESTAMP"
189
+ }
190
+ ],
191
+ "relationships": [],
192
+ "methods": [
193
+ "getMetadata",
194
+ "getPortalConfig",
195
+ "isActive",
196
+ "isReady",
197
+ "setMetadata",
198
+ "setPortalConfig",
199
+ "updateMetadata"
200
+ ],
201
+ "surfaces": [
202
+ {
203
+ "kind": "api",
204
+ "name": "sites.list",
205
+ "operation": "list",
206
+ "objectName": "@happyvertical/smrt-sites:Site",
207
+ "path": "/sites",
208
+ "method": "GET"
209
+ },
210
+ {
211
+ "kind": "api",
212
+ "name": "sites.get",
213
+ "operation": "get",
214
+ "objectName": "@happyvertical/smrt-sites:Site",
215
+ "path": "/sites/[id]",
216
+ "method": "GET"
217
+ },
218
+ {
219
+ "kind": "api",
220
+ "name": "sites.create",
221
+ "operation": "create",
222
+ "objectName": "@happyvertical/smrt-sites:Site",
223
+ "path": "/sites",
224
+ "method": "POST"
225
+ },
226
+ {
227
+ "kind": "api",
228
+ "name": "sites.update",
229
+ "operation": "update",
230
+ "objectName": "@happyvertical/smrt-sites:Site",
231
+ "path": "/sites/[id]",
232
+ "method": "PATCH"
233
+ },
234
+ {
235
+ "kind": "api",
236
+ "name": "sites.delete",
237
+ "operation": "delete",
238
+ "objectName": "@happyvertical/smrt-sites:Site",
239
+ "path": "/sites/[id]",
240
+ "method": "DELETE"
241
+ },
242
+ {
243
+ "kind": "cli",
244
+ "name": "site_list",
245
+ "operation": "list",
246
+ "objectName": "@happyvertical/smrt-sites:Site"
247
+ },
248
+ {
249
+ "kind": "cli",
250
+ "name": "site_get",
251
+ "operation": "get",
252
+ "objectName": "@happyvertical/smrt-sites:Site"
253
+ },
254
+ {
255
+ "kind": "cli",
256
+ "name": "site_create",
257
+ "operation": "create",
258
+ "objectName": "@happyvertical/smrt-sites:Site"
259
+ },
260
+ {
261
+ "kind": "cli",
262
+ "name": "site_update",
263
+ "operation": "update",
264
+ "objectName": "@happyvertical/smrt-sites:Site"
265
+ },
266
+ {
267
+ "kind": "cli",
268
+ "name": "site_delete",
269
+ "operation": "delete",
270
+ "objectName": "@happyvertical/smrt-sites:Site"
271
+ },
272
+ {
273
+ "kind": "mcp",
274
+ "name": "site_list",
275
+ "operation": "list",
276
+ "objectName": "@happyvertical/smrt-sites:Site"
277
+ },
278
+ {
279
+ "kind": "mcp",
280
+ "name": "site_get",
281
+ "operation": "get",
282
+ "objectName": "@happyvertical/smrt-sites:Site"
283
+ },
284
+ {
285
+ "kind": "mcp",
286
+ "name": "site_create",
287
+ "operation": "create",
288
+ "objectName": "@happyvertical/smrt-sites:Site"
289
+ },
290
+ {
291
+ "kind": "mcp",
292
+ "name": "site_update",
293
+ "operation": "update",
294
+ "objectName": "@happyvertical/smrt-sites:Site"
295
+ }
296
+ ],
297
+ "relationshipFeatures": [
298
+ "uuidColumns"
299
+ ],
300
+ "tags": [],
301
+ "risks": []
302
+ },
303
+ {
304
+ "name": "SiteAgentBinding",
305
+ "qualifiedName": "@happyvertical/smrt-sites:SiteAgentBinding",
306
+ "collection": "siteagentbindings",
307
+ "tableName": "site_agent_bindings",
308
+ "packageName": "@happyvertical/smrt-sites",
309
+ "extends": "SmrtObject",
310
+ "fields": [
311
+ {
312
+ "name": "tenantId",
313
+ "type": "text",
314
+ "required": true,
315
+ "columnType": "UUID"
316
+ },
317
+ {
318
+ "name": "siteId",
319
+ "type": "foreignKey",
320
+ "required": false,
321
+ "related": "Site",
322
+ "columnType": "UUID"
323
+ },
324
+ {
325
+ "name": "agentClass",
326
+ "type": "text",
327
+ "required": false,
328
+ "columnType": "TEXT"
329
+ },
330
+ {
331
+ "name": "enabled",
332
+ "type": "boolean",
333
+ "required": false,
334
+ "columnType": "BOOLEAN"
335
+ },
336
+ {
337
+ "name": "config",
338
+ "type": "json",
339
+ "required": false,
340
+ "columnType": "JSON"
341
+ },
342
+ {
343
+ "name": "priority",
344
+ "type": "integer",
345
+ "required": false,
346
+ "columnType": "INTEGER"
347
+ }
348
+ ],
349
+ "relationships": [
350
+ {
351
+ "name": "siteId",
352
+ "type": "foreignKey",
353
+ "required": false,
354
+ "related": "Site",
355
+ "columnType": "UUID"
356
+ }
357
+ ],
358
+ "methods": [],
359
+ "surfaces": [
360
+ {
361
+ "kind": "api",
362
+ "name": "siteagentbindings.list",
363
+ "operation": "list",
364
+ "objectName": "@happyvertical/smrt-sites:SiteAgentBinding",
365
+ "path": "/siteagentbindings",
366
+ "method": "GET"
367
+ },
368
+ {
369
+ "kind": "api",
370
+ "name": "siteagentbindings.get",
371
+ "operation": "get",
372
+ "objectName": "@happyvertical/smrt-sites:SiteAgentBinding",
373
+ "path": "/siteagentbindings/[id]",
374
+ "method": "GET"
375
+ },
376
+ {
377
+ "kind": "api",
378
+ "name": "siteagentbindings.create",
379
+ "operation": "create",
380
+ "objectName": "@happyvertical/smrt-sites:SiteAgentBinding",
381
+ "path": "/siteagentbindings",
382
+ "method": "POST"
383
+ },
384
+ {
385
+ "kind": "api",
386
+ "name": "siteagentbindings.update",
387
+ "operation": "update",
388
+ "objectName": "@happyvertical/smrt-sites:SiteAgentBinding",
389
+ "path": "/siteagentbindings/[id]",
390
+ "method": "PATCH"
391
+ },
392
+ {
393
+ "kind": "api",
394
+ "name": "siteagentbindings.delete",
395
+ "operation": "delete",
396
+ "objectName": "@happyvertical/smrt-sites:SiteAgentBinding",
397
+ "path": "/siteagentbindings/[id]",
398
+ "method": "DELETE"
399
+ },
400
+ {
401
+ "kind": "cli",
402
+ "name": "siteagentbinding_list",
403
+ "operation": "list",
404
+ "objectName": "@happyvertical/smrt-sites:SiteAgentBinding"
405
+ },
406
+ {
407
+ "kind": "cli",
408
+ "name": "siteagentbinding_get",
409
+ "operation": "get",
410
+ "objectName": "@happyvertical/smrt-sites:SiteAgentBinding"
411
+ },
412
+ {
413
+ "kind": "mcp",
414
+ "name": "siteagentbinding_list",
415
+ "operation": "list",
416
+ "objectName": "@happyvertical/smrt-sites:SiteAgentBinding"
417
+ },
418
+ {
419
+ "kind": "mcp",
420
+ "name": "siteagentbinding_get",
421
+ "operation": "get",
422
+ "objectName": "@happyvertical/smrt-sites:SiteAgentBinding"
423
+ }
424
+ ],
425
+ "relationshipFeatures": [
426
+ "foreignKey",
427
+ "uuidColumns"
428
+ ],
429
+ "tags": [],
430
+ "risks": []
431
+ }
432
+ ],
433
+ "surfaces": [
434
+ {
435
+ "kind": "api",
436
+ "name": "sites.list",
437
+ "operation": "list",
438
+ "objectName": "@happyvertical/smrt-sites:Site",
439
+ "path": "/sites",
440
+ "method": "GET"
441
+ },
442
+ {
443
+ "kind": "api",
444
+ "name": "sites.get",
445
+ "operation": "get",
446
+ "objectName": "@happyvertical/smrt-sites:Site",
447
+ "path": "/sites/[id]",
448
+ "method": "GET"
449
+ },
450
+ {
451
+ "kind": "api",
452
+ "name": "sites.create",
453
+ "operation": "create",
454
+ "objectName": "@happyvertical/smrt-sites:Site",
455
+ "path": "/sites",
456
+ "method": "POST"
457
+ },
458
+ {
459
+ "kind": "api",
460
+ "name": "sites.update",
461
+ "operation": "update",
462
+ "objectName": "@happyvertical/smrt-sites:Site",
463
+ "path": "/sites/[id]",
464
+ "method": "PATCH"
465
+ },
466
+ {
467
+ "kind": "api",
468
+ "name": "sites.delete",
469
+ "operation": "delete",
470
+ "objectName": "@happyvertical/smrt-sites:Site",
471
+ "path": "/sites/[id]",
472
+ "method": "DELETE"
473
+ },
474
+ {
475
+ "kind": "cli",
476
+ "name": "site_list",
477
+ "operation": "list",
478
+ "objectName": "@happyvertical/smrt-sites:Site"
479
+ },
480
+ {
481
+ "kind": "cli",
482
+ "name": "site_get",
483
+ "operation": "get",
484
+ "objectName": "@happyvertical/smrt-sites:Site"
485
+ },
486
+ {
487
+ "kind": "cli",
488
+ "name": "site_create",
489
+ "operation": "create",
490
+ "objectName": "@happyvertical/smrt-sites:Site"
491
+ },
492
+ {
493
+ "kind": "cli",
494
+ "name": "site_update",
495
+ "operation": "update",
496
+ "objectName": "@happyvertical/smrt-sites:Site"
497
+ },
498
+ {
499
+ "kind": "cli",
500
+ "name": "site_delete",
501
+ "operation": "delete",
502
+ "objectName": "@happyvertical/smrt-sites:Site"
503
+ },
504
+ {
505
+ "kind": "mcp",
506
+ "name": "site_list",
507
+ "operation": "list",
508
+ "objectName": "@happyvertical/smrt-sites:Site"
509
+ },
510
+ {
511
+ "kind": "mcp",
512
+ "name": "site_get",
513
+ "operation": "get",
514
+ "objectName": "@happyvertical/smrt-sites:Site"
515
+ },
516
+ {
517
+ "kind": "mcp",
518
+ "name": "site_create",
519
+ "operation": "create",
520
+ "objectName": "@happyvertical/smrt-sites:Site"
521
+ },
522
+ {
523
+ "kind": "mcp",
524
+ "name": "site_update",
525
+ "operation": "update",
526
+ "objectName": "@happyvertical/smrt-sites:Site"
527
+ },
528
+ {
529
+ "kind": "api",
530
+ "name": "siteagentbindings.list",
531
+ "operation": "list",
532
+ "objectName": "@happyvertical/smrt-sites:SiteAgentBinding",
533
+ "path": "/siteagentbindings",
534
+ "method": "GET"
535
+ },
536
+ {
537
+ "kind": "api",
538
+ "name": "siteagentbindings.get",
539
+ "operation": "get",
540
+ "objectName": "@happyvertical/smrt-sites:SiteAgentBinding",
541
+ "path": "/siteagentbindings/[id]",
542
+ "method": "GET"
543
+ },
544
+ {
545
+ "kind": "api",
546
+ "name": "siteagentbindings.create",
547
+ "operation": "create",
548
+ "objectName": "@happyvertical/smrt-sites:SiteAgentBinding",
549
+ "path": "/siteagentbindings",
550
+ "method": "POST"
551
+ },
552
+ {
553
+ "kind": "api",
554
+ "name": "siteagentbindings.update",
555
+ "operation": "update",
556
+ "objectName": "@happyvertical/smrt-sites:SiteAgentBinding",
557
+ "path": "/siteagentbindings/[id]",
558
+ "method": "PATCH"
559
+ },
560
+ {
561
+ "kind": "api",
562
+ "name": "siteagentbindings.delete",
563
+ "operation": "delete",
564
+ "objectName": "@happyvertical/smrt-sites:SiteAgentBinding",
565
+ "path": "/siteagentbindings/[id]",
566
+ "method": "DELETE"
567
+ },
568
+ {
569
+ "kind": "cli",
570
+ "name": "siteagentbinding_list",
571
+ "operation": "list",
572
+ "objectName": "@happyvertical/smrt-sites:SiteAgentBinding"
573
+ },
574
+ {
575
+ "kind": "cli",
576
+ "name": "siteagentbinding_get",
577
+ "operation": "get",
578
+ "objectName": "@happyvertical/smrt-sites:SiteAgentBinding"
579
+ },
580
+ {
581
+ "kind": "mcp",
582
+ "name": "siteagentbinding_list",
583
+ "operation": "list",
584
+ "objectName": "@happyvertical/smrt-sites:SiteAgentBinding"
585
+ },
586
+ {
587
+ "kind": "mcp",
588
+ "name": "siteagentbinding_get",
589
+ "operation": "get",
590
+ "objectName": "@happyvertical/smrt-sites:SiteAgentBinding"
591
+ }
592
+ ],
593
+ "prompts": [],
594
+ "relationshipsV2": {
595
+ "foreignKeyFields": 1,
596
+ "crossPackageRefFields": 0,
597
+ "junctionCollections": 0,
598
+ "hierarchicalObjects": 0,
599
+ "polymorphicAssociations": 0,
600
+ "uuidColumns": 7
601
+ },
602
+ "agentDoc": "# @happyvertical/smrt-sites\n\nMulti-tenant site lifecycle management with agent bindings.\n\n## Models\n\n- **Site**: `domain` (unique per tenant), `tier` (free/standard/premium), `portalConfig` JSON, database connection, `provisioningStatus`/`provisioningTimestamp`. Status: draft/active/suspended/archived.\n- **SiteAgentBinding**: junction linking sites to agent classes. Per-site `config` overrides and `priority` ordering. `conflictColumns: ['site_id', 'agent_class']`.\n\n## SiteService\n\nStateless lifecycle ops: `activate()`, `suspend()`, `archive()`. `bindAgent()` handles upsert (update config if exists, create if not).\n\n## Gotchas\n\n- **Required tenancy**: both models use `@TenantScoped({ mode: 'required' })` — must have tenant context\n- **portalConfig accepts both object and JSON string** in constructor\n- **SiteAgentBinding.config is nullable**: auto-parsed from JSON on init\n"
603
+ }
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Data required to create a new site
3
+ */
4
+ export declare interface CreateSiteData {
5
+ name: string;
6
+ domain: string;
7
+ tier?: SiteTier;
8
+ databaseUrl?: string;
9
+ databaseType?: string;
10
+ portalConfig?: SitePortalConfig;
11
+ repositoryUrl?: string;
12
+ templateName?: string;
13
+ metadata?: Record<string, unknown>;
14
+ }
15
+
16
+ /**
17
+ * Infrastructure provisioning status
18
+ */
19
+ export declare type ProvisioningStatus = 'pending' | 'provisioning' | 'ready' | 'failed';
20
+
21
+ /**
22
+ * Options for constructing a SiteAgentBinding instance
23
+ */
24
+ export declare interface SiteAgentBindingOptions {
25
+ id?: string;
26
+ tenantId?: string;
27
+ siteId?: string;
28
+ agentClass?: string;
29
+ enabled?: boolean;
30
+ config?: Record<string, unknown> | string | null;
31
+ priority?: number;
32
+ createdAt?: Date;
33
+ updatedAt?: Date;
34
+ }
35
+
36
+ /**
37
+ * Options for constructing a Site instance
38
+ */
39
+ export declare interface SiteOptions {
40
+ id?: string;
41
+ tenantId?: string;
42
+ name?: string;
43
+ domain?: string;
44
+ status?: SiteStatus;
45
+ tier?: SiteTier;
46
+ databaseUrl?: string;
47
+ databaseType?: string;
48
+ portalConfig?: SitePortalConfig | string;
49
+ repositoryUrl?: string;
50
+ templateName?: string;
51
+ provisioningStatus?: ProvisioningStatus;
52
+ provisionedAt?: Date | null;
53
+ provisioningError?: string;
54
+ metadata?: Record<string, unknown> | string;
55
+ createdAt?: Date;
56
+ updatedAt?: Date;
57
+ }
58
+
59
+ /**
60
+ * Portal configuration for theming, branding, and navigation
61
+ */
62
+ export declare interface SitePortalConfig {
63
+ theme?: string;
64
+ branding?: Record<string, unknown>;
65
+ navigation?: Array<{
66
+ label: string;
67
+ path: string;
68
+ icon?: string;
69
+ }>;
70
+ }
71
+
72
+ /**
73
+ * Types for smrt-sites package
74
+ */
75
+ /**
76
+ * Site lifecycle status
77
+ */
78
+ export declare type SiteStatus = 'draft' | 'active' | 'suspended' | 'archived';
79
+
80
+ /**
81
+ * Site pricing/feature tier
82
+ */
83
+ export declare type SiteTier = 'free' | 'standard' | 'premium';
84
+
85
+ export { }
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}