@happyvertical/smrt-agents 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.
Files changed (94) hide show
  1. package/AGENTS.md +96 -0
  2. package/CLAUDE.md +1 -0
  3. package/LICENSE +7 -0
  4. package/README.md +139 -0
  5. package/dist/__smrt-register__.d.ts +2 -0
  6. package/dist/__smrt-register__.d.ts.map +1 -0
  7. package/dist/agent.d.ts +545 -0
  8. package/dist/agent.d.ts.map +1 -0
  9. package/dist/ai-config.d.ts +27 -0
  10. package/dist/ai-config.d.ts.map +1 -0
  11. package/dist/chunks/config-BYbOxt24.js +179 -0
  12. package/dist/chunks/config-BYbOxt24.js.map +1 -0
  13. package/dist/chunks/manifest-utils-DLXfTOq0.js +69 -0
  14. package/dist/chunks/manifest-utils-DLXfTOq0.js.map +1 -0
  15. package/dist/config.d.ts +117 -0
  16. package/dist/config.d.ts.map +1 -0
  17. package/dist/identity.d.ts +19 -0
  18. package/dist/identity.d.ts.map +1 -0
  19. package/dist/index.d.ts +13 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +1477 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/interests.d.ts +291 -0
  24. package/dist/interests.d.ts.map +1 -0
  25. package/dist/manifest.json +2012 -0
  26. package/dist/playground.d.ts +2 -0
  27. package/dist/playground.d.ts.map +1 -0
  28. package/dist/playground.js +156 -0
  29. package/dist/playground.js.map +1 -0
  30. package/dist/schedule.d.ts +168 -0
  31. package/dist/schedule.d.ts.map +1 -0
  32. package/dist/server/action-types.d.ts +65 -0
  33. package/dist/server/action-types.d.ts.map +1 -0
  34. package/dist/server/action-types.js +2 -0
  35. package/dist/server/action-types.js.map +1 -0
  36. package/dist/server/api-routes.d.ts +57 -0
  37. package/dist/server/api-routes.d.ts.map +1 -0
  38. package/dist/server/config-loader.d.ts +17 -0
  39. package/dist/server/config-loader.d.ts.map +1 -0
  40. package/dist/server/index.d.ts +34 -0
  41. package/dist/server/index.d.ts.map +1 -0
  42. package/dist/server/manifest-utils.d.ts +63 -0
  43. package/dist/server/manifest-utils.d.ts.map +1 -0
  44. package/dist/server/serialization.d.ts +58 -0
  45. package/dist/server/serialization.d.ts.map +1 -0
  46. package/dist/server.js +105 -0
  47. package/dist/server.js.map +1 -0
  48. package/dist/smrt-knowledge.json +983 -0
  49. package/dist/summary-article.d.ts +30 -0
  50. package/dist/summary-article.d.ts.map +1 -0
  51. package/dist/summary-article.js +2 -0
  52. package/dist/summary-article.js.map +1 -0
  53. package/dist/svelte/components/AgentDashboard.svelte +250 -0
  54. package/dist/svelte/components/AgentDashboard.svelte.d.ts +21 -0
  55. package/dist/svelte/components/AgentDashboard.svelte.d.ts.map +1 -0
  56. package/dist/svelte/components/AgentRunHistory.svelte +225 -0
  57. package/dist/svelte/components/AgentRunHistory.svelte.d.ts +16 -0
  58. package/dist/svelte/components/AgentRunHistory.svelte.d.ts.map +1 -0
  59. package/dist/svelte/components/AgentScheduleForm.svelte +381 -0
  60. package/dist/svelte/components/AgentScheduleForm.svelte.d.ts +19 -0
  61. package/dist/svelte/components/AgentScheduleForm.svelte.d.ts.map +1 -0
  62. package/dist/svelte/components/AgentScheduleList.svelte +370 -0
  63. package/dist/svelte/components/AgentScheduleList.svelte.d.ts +24 -0
  64. package/dist/svelte/components/AgentScheduleList.svelte.d.ts.map +1 -0
  65. package/dist/svelte/components/ScheduleStatusBadge.svelte +23 -0
  66. package/dist/svelte/components/ScheduleStatusBadge.svelte.d.ts +9 -0
  67. package/dist/svelte/components/ScheduleStatusBadge.svelte.d.ts.map +1 -0
  68. package/dist/svelte/i18n.d.ts +33 -0
  69. package/dist/svelte/i18n.d.ts.map +1 -0
  70. package/dist/svelte/i18n.js +37 -0
  71. package/dist/svelte/index.d.ts +23 -0
  72. package/dist/svelte/index.d.ts.map +1 -0
  73. package/dist/svelte/index.js +26 -0
  74. package/dist/svelte/playground.d.ts +196 -0
  75. package/dist/svelte/playground.d.ts.map +1 -0
  76. package/dist/svelte/playground.js +151 -0
  77. package/dist/svelte/types.d.ts +155 -0
  78. package/dist/svelte/types.d.ts.map +1 -0
  79. package/dist/svelte/types.js +116 -0
  80. package/dist/tenant-agent.d.ts +106 -0
  81. package/dist/tenant-agent.d.ts.map +1 -0
  82. package/dist/types.d.ts +5 -0
  83. package/dist/types.d.ts.map +1 -0
  84. package/dist/types.js +2 -0
  85. package/dist/types.js.map +1 -0
  86. package/dist/ui.d.ts +298 -0
  87. package/dist/ui.d.ts.map +1 -0
  88. package/dist/ui.js +133 -0
  89. package/dist/ui.js.map +1 -0
  90. package/dist/vite-plugin.d.ts +61 -0
  91. package/dist/vite-plugin.d.ts.map +1 -0
  92. package/dist/vite-plugin.js +173 -0
  93. package/dist/vite-plugin.js.map +1 -0
  94. package/package.json +104 -0
@@ -0,0 +1,983 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "generatedAt": "2026-06-23T01:11:58.348Z",
4
+ "packageName": "@happyvertical/smrt-agents",
5
+ "packageVersion": "0.30.0",
6
+ "sourceManifestPath": "dist/manifest.json",
7
+ "agentDocPath": "AGENTS.md",
8
+ "sourceHashes": {
9
+ "manifest": "5701eee98928c6d2596b781ff74aa1da262f5459253e26fbd00b0db4f155dbbe",
10
+ "packageJson": "df72402365cdd3749c5f0e8b6d5b3f9f26d5250530142030db845cedf2d9626c",
11
+ "agents": "3cdef62db9f57de1f5675726cdc54b3e64e9d39e67ad316904d08212cf046112"
12
+ },
13
+ "exports": [
14
+ ".",
15
+ "./manifest",
16
+ "./manifest.json",
17
+ "./playground",
18
+ "./server",
19
+ "./svelte",
20
+ "./ui",
21
+ "./vite"
22
+ ],
23
+ "dependencies": {
24
+ "@happyvertical/ai": "catalog:",
25
+ "@happyvertical/files": "catalog:",
26
+ "@happyvertical/smrt-config": "workspace:*",
27
+ "@happyvertical/smrt-core": "workspace:*",
28
+ "@happyvertical/smrt-secrets": "workspace:*",
29
+ "@happyvertical/smrt-tenancy": "workspace:*",
30
+ "@happyvertical/smrt-types": "workspace:*",
31
+ "@happyvertical/smrt-ui": "workspace:*",
32
+ "@happyvertical/smrt-users": "workspace:*",
33
+ "@happyvertical/utils": "catalog:",
34
+ "@happyvertical/logger": "catalog:",
35
+ "@happyvertical/smrt-vitest": "workspace:*",
36
+ "@happyvertical/sql": "catalog:",
37
+ "@sentry/node": "catalog:",
38
+ "@sveltejs/package": "^2.5.7",
39
+ "@types/node": "25.0.9",
40
+ "fast-glob": "3.3.3",
41
+ "svelte-check": "^4.3.5",
42
+ "svelte": "^5.0.0",
43
+ "typescript": "^5.9.3",
44
+ "vite": "^7.3.1",
45
+ "vitest": "^4.0.17"
46
+ },
47
+ "smrtDependencies": [
48
+ "@happyvertical/smrt-config",
49
+ "@happyvertical/smrt-core",
50
+ "@happyvertical/smrt-secrets",
51
+ "@happyvertical/smrt-tenancy",
52
+ "@happyvertical/smrt-types",
53
+ "@happyvertical/smrt-ui",
54
+ "@happyvertical/smrt-users",
55
+ "@happyvertical/smrt-vitest"
56
+ ],
57
+ "sdkDependencies": [
58
+ "@happyvertical/ai",
59
+ "@happyvertical/files",
60
+ "@happyvertical/logger",
61
+ "@happyvertical/sql",
62
+ "@happyvertical/utils"
63
+ ],
64
+ "tags": [],
65
+ "risks": [],
66
+ "objects": [
67
+ {
68
+ "name": "Agent",
69
+ "qualifiedName": "@happyvertical/smrt-agents:Agent",
70
+ "collection": "agents",
71
+ "tableName": "agents",
72
+ "packageName": "@happyvertical/smrt-agents",
73
+ "extends": "SmrtObject",
74
+ "fields": [
75
+ {
76
+ "name": "created_at",
77
+ "type": "datetime",
78
+ "required": false,
79
+ "columnType": "TIMESTAMP"
80
+ },
81
+ {
82
+ "name": "updated_at",
83
+ "type": "datetime",
84
+ "required": false,
85
+ "columnType": "TIMESTAMP"
86
+ },
87
+ {
88
+ "name": "tenantId",
89
+ "type": "text",
90
+ "required": false,
91
+ "columnType": "UUID"
92
+ },
93
+ {
94
+ "name": "status",
95
+ "type": "text",
96
+ "required": false,
97
+ "columnType": "TEXT"
98
+ }
99
+ ],
100
+ "relationships": [],
101
+ "methods": [
102
+ "classifyConstraintError",
103
+ "clearEmbeddings",
104
+ "delete",
105
+ "describe",
106
+ "destroy",
107
+ "do",
108
+ "execute",
109
+ "executeToolCall",
110
+ "exportConfig",
111
+ "forget",
112
+ "forgetScope",
113
+ "generateEmbeddings",
114
+ "getAiUsageSnapshot",
115
+ "getAvailableTools",
116
+ "getDispatch",
117
+ "getEmbedding",
118
+ "getFields",
119
+ "getId",
120
+ "getMergedConfig",
121
+ "getRelated",
122
+ "getSavedId",
123
+ "getSlug",
124
+ "getUISlots",
125
+ "handleDispatch",
126
+ "hasStaleEmbeddings",
127
+ "initialize",
128
+ "interesting",
129
+ "is",
130
+ "isRelatedLoaded",
131
+ "isSaved",
132
+ "listAiUsage",
133
+ "loadConfigs",
134
+ "loadDataFromDb",
135
+ "loadFromId",
136
+ "loadFromSlug",
137
+ "loadRelated",
138
+ "loadRelatedMany",
139
+ "markAsPersisted",
140
+ "processDispatches",
141
+ "recall",
142
+ "recallAll",
143
+ "remember",
144
+ "resetAiUsage",
145
+ "save",
146
+ "saveSlotConfig",
147
+ "shutdown",
148
+ "summarizeAiUsage",
149
+ "toJSON",
150
+ "toPlainObject",
151
+ "toPublicJSON",
152
+ "validate"
153
+ ],
154
+ "surfaces": [],
155
+ "relationshipFeatures": [
156
+ "uuidColumns"
157
+ ],
158
+ "tags": [],
159
+ "risks": []
160
+ },
161
+ {
162
+ "name": "AgentConfig",
163
+ "qualifiedName": "@happyvertical/smrt-agents:AgentConfig",
164
+ "collection": "agentconfigs",
165
+ "tableName": "agent_configs",
166
+ "packageName": "@happyvertical/smrt-agents",
167
+ "extends": "SmrtObject",
168
+ "fields": [
169
+ {
170
+ "name": "tenantId",
171
+ "type": "text",
172
+ "required": false,
173
+ "columnType": "UUID"
174
+ },
175
+ {
176
+ "name": "agentId",
177
+ "type": "text",
178
+ "required": false,
179
+ "columnType": "TEXT"
180
+ },
181
+ {
182
+ "name": "agentClass",
183
+ "type": "text",
184
+ "required": false,
185
+ "columnType": "TEXT"
186
+ },
187
+ {
188
+ "name": "slotId",
189
+ "type": "text",
190
+ "required": false,
191
+ "columnType": "TEXT"
192
+ },
193
+ {
194
+ "name": "configData",
195
+ "type": "json",
196
+ "required": false,
197
+ "columnType": "JSON"
198
+ },
199
+ {
200
+ "name": "schemaVersion",
201
+ "type": "integer",
202
+ "required": false,
203
+ "columnType": "INTEGER"
204
+ }
205
+ ],
206
+ "relationships": [],
207
+ "methods": [
208
+ "forAgent",
209
+ "forAgents",
210
+ "forSlot",
211
+ "saveSlot"
212
+ ],
213
+ "surfaces": [
214
+ {
215
+ "kind": "api",
216
+ "name": "agentconfigs.list",
217
+ "operation": "list",
218
+ "objectName": "@happyvertical/smrt-agents:AgentConfig",
219
+ "path": "/agentconfigs",
220
+ "method": "GET"
221
+ },
222
+ {
223
+ "kind": "api",
224
+ "name": "agentconfigs.get",
225
+ "operation": "get",
226
+ "objectName": "@happyvertical/smrt-agents:AgentConfig",
227
+ "path": "/agentconfigs/[id]",
228
+ "method": "GET"
229
+ },
230
+ {
231
+ "kind": "api",
232
+ "name": "agentconfigs.create",
233
+ "operation": "create",
234
+ "objectName": "@happyvertical/smrt-agents:AgentConfig",
235
+ "path": "/agentconfigs",
236
+ "method": "POST"
237
+ },
238
+ {
239
+ "kind": "api",
240
+ "name": "agentconfigs.update",
241
+ "operation": "update",
242
+ "objectName": "@happyvertical/smrt-agents:AgentConfig",
243
+ "path": "/agentconfigs/[id]",
244
+ "method": "PATCH"
245
+ },
246
+ {
247
+ "kind": "api",
248
+ "name": "agentconfigs.delete",
249
+ "operation": "delete",
250
+ "objectName": "@happyvertical/smrt-agents:AgentConfig",
251
+ "path": "/agentconfigs/[id]",
252
+ "method": "DELETE"
253
+ },
254
+ {
255
+ "kind": "cli",
256
+ "name": "agentconfig_list",
257
+ "operation": "list",
258
+ "objectName": "@happyvertical/smrt-agents:AgentConfig"
259
+ },
260
+ {
261
+ "kind": "cli",
262
+ "name": "agentconfig_get",
263
+ "operation": "get",
264
+ "objectName": "@happyvertical/smrt-agents:AgentConfig"
265
+ },
266
+ {
267
+ "kind": "cli",
268
+ "name": "agentconfig_create",
269
+ "operation": "create",
270
+ "objectName": "@happyvertical/smrt-agents:AgentConfig"
271
+ },
272
+ {
273
+ "kind": "cli",
274
+ "name": "agentconfig_update",
275
+ "operation": "update",
276
+ "objectName": "@happyvertical/smrt-agents:AgentConfig"
277
+ },
278
+ {
279
+ "kind": "cli",
280
+ "name": "agentconfig_delete",
281
+ "operation": "delete",
282
+ "objectName": "@happyvertical/smrt-agents:AgentConfig"
283
+ },
284
+ {
285
+ "kind": "mcp",
286
+ "name": "agentconfig_list",
287
+ "operation": "list",
288
+ "objectName": "@happyvertical/smrt-agents:AgentConfig"
289
+ },
290
+ {
291
+ "kind": "mcp",
292
+ "name": "agentconfig_get",
293
+ "operation": "get",
294
+ "objectName": "@happyvertical/smrt-agents:AgentConfig"
295
+ }
296
+ ],
297
+ "relationshipFeatures": [
298
+ "uuidColumns"
299
+ ],
300
+ "tags": [],
301
+ "risks": []
302
+ },
303
+ {
304
+ "name": "AgentConfigCollection",
305
+ "qualifiedName": "@happyvertical/smrt-agents:AgentConfigCollection",
306
+ "collection": "agentconfigs",
307
+ "tableName": "agent_configs",
308
+ "packageName": "@happyvertical/smrt-agents",
309
+ "extends": "SmrtCollection",
310
+ "fields": [],
311
+ "relationships": [],
312
+ "methods": [
313
+ "findByTenant",
314
+ "findGlobal",
315
+ "findWithGlobals"
316
+ ],
317
+ "surfaces": [],
318
+ "relationshipFeatures": [
319
+ "uuidColumns"
320
+ ],
321
+ "tags": [],
322
+ "risks": []
323
+ },
324
+ {
325
+ "name": "AgentSchedule",
326
+ "qualifiedName": "@happyvertical/smrt-agents:AgentSchedule",
327
+ "collection": "agentschedules",
328
+ "tableName": "_smrt_agent_schedules",
329
+ "packageName": "@happyvertical/smrt-agents",
330
+ "extends": "SmrtObject",
331
+ "fields": [
332
+ {
333
+ "name": "tenantId",
334
+ "type": "text",
335
+ "required": false,
336
+ "columnType": "UUID"
337
+ },
338
+ {
339
+ "name": "agentType",
340
+ "type": "text",
341
+ "required": false,
342
+ "columnType": "TEXT"
343
+ },
344
+ {
345
+ "name": "agentId",
346
+ "type": "text",
347
+ "required": false,
348
+ "columnType": "TEXT"
349
+ },
350
+ {
351
+ "name": "agentConfig",
352
+ "type": "json",
353
+ "required": false,
354
+ "columnType": "TEXT"
355
+ },
356
+ {
357
+ "name": "cron",
358
+ "type": "text",
359
+ "required": false,
360
+ "columnType": "TEXT"
361
+ },
362
+ {
363
+ "name": "timezone",
364
+ "type": "text",
365
+ "required": false,
366
+ "columnType": "TEXT"
367
+ },
368
+ {
369
+ "name": "enabled",
370
+ "type": "boolean",
371
+ "required": false,
372
+ "columnType": "BOOLEAN"
373
+ },
374
+ {
375
+ "name": "status",
376
+ "type": "text",
377
+ "required": false,
378
+ "columnType": "TEXT"
379
+ },
380
+ {
381
+ "name": "lastRun",
382
+ "type": "datetime",
383
+ "required": false,
384
+ "columnType": "TIMESTAMP"
385
+ },
386
+ {
387
+ "name": "nextRun",
388
+ "type": "datetime",
389
+ "required": false,
390
+ "columnType": "TIMESTAMP"
391
+ },
392
+ {
393
+ "name": "lastStatus",
394
+ "type": "text",
395
+ "required": false,
396
+ "columnType": "TEXT"
397
+ },
398
+ {
399
+ "name": "lastError",
400
+ "type": "text",
401
+ "required": false,
402
+ "columnType": "TEXT"
403
+ },
404
+ {
405
+ "name": "runCount",
406
+ "type": "integer",
407
+ "required": false,
408
+ "columnType": "INTEGER"
409
+ },
410
+ {
411
+ "name": "successCount",
412
+ "type": "integer",
413
+ "required": false,
414
+ "columnType": "INTEGER"
415
+ },
416
+ {
417
+ "name": "failureCount",
418
+ "type": "integer",
419
+ "required": false,
420
+ "columnType": "INTEGER"
421
+ },
422
+ {
423
+ "name": "maxConcurrent",
424
+ "type": "integer",
425
+ "required": false,
426
+ "columnType": "INTEGER"
427
+ },
428
+ {
429
+ "name": "runningCount",
430
+ "type": "integer",
431
+ "required": false,
432
+ "columnType": "INTEGER"
433
+ },
434
+ {
435
+ "name": "timeout",
436
+ "type": "integer",
437
+ "required": false,
438
+ "columnType": "INTEGER"
439
+ },
440
+ {
441
+ "name": "method",
442
+ "type": "text",
443
+ "required": false,
444
+ "columnType": "TEXT"
445
+ },
446
+ {
447
+ "name": "methodArgs",
448
+ "type": "json",
449
+ "required": false,
450
+ "columnType": "TEXT"
451
+ }
452
+ ],
453
+ "relationships": [],
454
+ "methods": [
455
+ "beforeSave",
456
+ "calculateNextRun",
457
+ "disable",
458
+ "enable",
459
+ "getDescription",
460
+ "isDue",
461
+ "pause",
462
+ "recordFailure",
463
+ "recordSuccess",
464
+ "resume"
465
+ ],
466
+ "surfaces": [
467
+ {
468
+ "kind": "api",
469
+ "name": "agentschedules.list",
470
+ "operation": "list",
471
+ "objectName": "@happyvertical/smrt-agents:AgentSchedule",
472
+ "path": "/agentschedules",
473
+ "method": "GET"
474
+ },
475
+ {
476
+ "kind": "api",
477
+ "name": "agentschedules.get",
478
+ "operation": "get",
479
+ "objectName": "@happyvertical/smrt-agents:AgentSchedule",
480
+ "path": "/agentschedules/[id]",
481
+ "method": "GET"
482
+ },
483
+ {
484
+ "kind": "api",
485
+ "name": "agentschedules.create",
486
+ "operation": "create",
487
+ "objectName": "@happyvertical/smrt-agents:AgentSchedule",
488
+ "path": "/agentschedules",
489
+ "method": "POST"
490
+ },
491
+ {
492
+ "kind": "api",
493
+ "name": "agentschedules.update",
494
+ "operation": "update",
495
+ "objectName": "@happyvertical/smrt-agents:AgentSchedule",
496
+ "path": "/agentschedules/[id]",
497
+ "method": "PATCH"
498
+ },
499
+ {
500
+ "kind": "api",
501
+ "name": "agentschedules.delete",
502
+ "operation": "delete",
503
+ "objectName": "@happyvertical/smrt-agents:AgentSchedule",
504
+ "path": "/agentschedules/[id]",
505
+ "method": "DELETE"
506
+ },
507
+ {
508
+ "kind": "cli",
509
+ "name": "agentschedule_list",
510
+ "operation": "list",
511
+ "objectName": "@happyvertical/smrt-agents:AgentSchedule"
512
+ },
513
+ {
514
+ "kind": "cli",
515
+ "name": "agentschedule_get",
516
+ "operation": "get",
517
+ "objectName": "@happyvertical/smrt-agents:AgentSchedule"
518
+ },
519
+ {
520
+ "kind": "cli",
521
+ "name": "agentschedule_create",
522
+ "operation": "create",
523
+ "objectName": "@happyvertical/smrt-agents:AgentSchedule"
524
+ },
525
+ {
526
+ "kind": "cli",
527
+ "name": "agentschedule_update",
528
+ "operation": "update",
529
+ "objectName": "@happyvertical/smrt-agents:AgentSchedule"
530
+ },
531
+ {
532
+ "kind": "cli",
533
+ "name": "agentschedule_delete",
534
+ "operation": "delete",
535
+ "objectName": "@happyvertical/smrt-agents:AgentSchedule"
536
+ },
537
+ {
538
+ "kind": "cli",
539
+ "name": "agentschedule_enable",
540
+ "operation": "enable",
541
+ "objectName": "@happyvertical/smrt-agents:AgentSchedule"
542
+ },
543
+ {
544
+ "kind": "cli",
545
+ "name": "agentschedule_disable",
546
+ "operation": "disable",
547
+ "objectName": "@happyvertical/smrt-agents:AgentSchedule"
548
+ },
549
+ {
550
+ "kind": "mcp",
551
+ "name": "agentschedule_list",
552
+ "operation": "list",
553
+ "objectName": "@happyvertical/smrt-agents:AgentSchedule"
554
+ },
555
+ {
556
+ "kind": "mcp",
557
+ "name": "agentschedule_get",
558
+ "operation": "get",
559
+ "objectName": "@happyvertical/smrt-agents:AgentSchedule"
560
+ }
561
+ ],
562
+ "relationshipFeatures": [
563
+ "uuidColumns"
564
+ ],
565
+ "tags": [],
566
+ "risks": []
567
+ },
568
+ {
569
+ "name": "AgentScheduleCollection",
570
+ "qualifiedName": "@happyvertical/smrt-agents:AgentScheduleCollection",
571
+ "collection": "agentschedules",
572
+ "tableName": "_smrt_agent_schedules",
573
+ "packageName": "@happyvertical/smrt-agents",
574
+ "extends": "SmrtCollection",
575
+ "fields": [],
576
+ "relationships": [],
577
+ "methods": [
578
+ "findByTenant",
579
+ "findGlobal",
580
+ "findWithGlobals",
581
+ "listByAgentType",
582
+ "listByStatus",
583
+ "listDue",
584
+ "stats"
585
+ ],
586
+ "surfaces": [],
587
+ "relationshipFeatures": [
588
+ "uuidColumns"
589
+ ],
590
+ "tags": [],
591
+ "risks": []
592
+ },
593
+ {
594
+ "name": "TenantAgent",
595
+ "qualifiedName": "@happyvertical/smrt-agents:TenantAgent",
596
+ "collection": "tenantagents",
597
+ "tableName": "tenant_agents",
598
+ "packageName": "@happyvertical/smrt-agents",
599
+ "extends": "SmrtObject",
600
+ "fields": [
601
+ {
602
+ "name": "tenantId",
603
+ "type": "text",
604
+ "required": true,
605
+ "columnType": "UUID"
606
+ },
607
+ {
608
+ "name": "agentClass",
609
+ "type": "text",
610
+ "required": false,
611
+ "columnType": "TEXT"
612
+ },
613
+ {
614
+ "name": "status",
615
+ "type": "text",
616
+ "required": false,
617
+ "columnType": "TEXT"
618
+ },
619
+ {
620
+ "name": "permissions",
621
+ "type": "json",
622
+ "required": false,
623
+ "columnType": "JSON"
624
+ },
625
+ {
626
+ "name": "config",
627
+ "type": "json",
628
+ "required": false,
629
+ "columnType": "JSON"
630
+ }
631
+ ],
632
+ "relationships": [],
633
+ "methods": [],
634
+ "surfaces": [
635
+ {
636
+ "kind": "api",
637
+ "name": "tenantagents.list",
638
+ "operation": "list",
639
+ "objectName": "@happyvertical/smrt-agents:TenantAgent",
640
+ "path": "/tenantagents",
641
+ "method": "GET"
642
+ },
643
+ {
644
+ "kind": "api",
645
+ "name": "tenantagents.get",
646
+ "operation": "get",
647
+ "objectName": "@happyvertical/smrt-agents:TenantAgent",
648
+ "path": "/tenantagents/[id]",
649
+ "method": "GET"
650
+ },
651
+ {
652
+ "kind": "api",
653
+ "name": "tenantagents.create",
654
+ "operation": "create",
655
+ "objectName": "@happyvertical/smrt-agents:TenantAgent",
656
+ "path": "/tenantagents",
657
+ "method": "POST"
658
+ },
659
+ {
660
+ "kind": "api",
661
+ "name": "tenantagents.update",
662
+ "operation": "update",
663
+ "objectName": "@happyvertical/smrt-agents:TenantAgent",
664
+ "path": "/tenantagents/[id]",
665
+ "method": "PATCH"
666
+ },
667
+ {
668
+ "kind": "api",
669
+ "name": "tenantagents.delete",
670
+ "operation": "delete",
671
+ "objectName": "@happyvertical/smrt-agents:TenantAgent",
672
+ "path": "/tenantagents/[id]",
673
+ "method": "DELETE"
674
+ },
675
+ {
676
+ "kind": "cli",
677
+ "name": "tenantagent_list",
678
+ "operation": "list",
679
+ "objectName": "@happyvertical/smrt-agents:TenantAgent"
680
+ },
681
+ {
682
+ "kind": "cli",
683
+ "name": "tenantagent_get",
684
+ "operation": "get",
685
+ "objectName": "@happyvertical/smrt-agents:TenantAgent"
686
+ },
687
+ {
688
+ "kind": "mcp",
689
+ "name": "tenantagent_list",
690
+ "operation": "list",
691
+ "objectName": "@happyvertical/smrt-agents:TenantAgent"
692
+ },
693
+ {
694
+ "kind": "mcp",
695
+ "name": "tenantagent_get",
696
+ "operation": "get",
697
+ "objectName": "@happyvertical/smrt-agents:TenantAgent"
698
+ }
699
+ ],
700
+ "relationshipFeatures": [
701
+ "uuidColumns"
702
+ ],
703
+ "tags": [],
704
+ "risks": []
705
+ },
706
+ {
707
+ "name": "TenantAgentCollection",
708
+ "qualifiedName": "@happyvertical/smrt-agents:TenantAgentCollection",
709
+ "collection": "tenantagents",
710
+ "tableName": "tenant_agents",
711
+ "packageName": "@happyvertical/smrt-agents",
712
+ "extends": "SmrtCollection",
713
+ "fields": [],
714
+ "relationships": [],
715
+ "methods": [
716
+ "clearOverride",
717
+ "disableAgent",
718
+ "enableAgent",
719
+ "findByTenantAndClass",
720
+ "resolveForTenant",
721
+ "setPermissions"
722
+ ],
723
+ "surfaces": [],
724
+ "relationshipFeatures": [
725
+ "uuidColumns"
726
+ ],
727
+ "tags": [],
728
+ "risks": []
729
+ }
730
+ ],
731
+ "surfaces": [
732
+ {
733
+ "kind": "api",
734
+ "name": "agentconfigs.list",
735
+ "operation": "list",
736
+ "objectName": "@happyvertical/smrt-agents:AgentConfig",
737
+ "path": "/agentconfigs",
738
+ "method": "GET"
739
+ },
740
+ {
741
+ "kind": "api",
742
+ "name": "agentconfigs.get",
743
+ "operation": "get",
744
+ "objectName": "@happyvertical/smrt-agents:AgentConfig",
745
+ "path": "/agentconfigs/[id]",
746
+ "method": "GET"
747
+ },
748
+ {
749
+ "kind": "api",
750
+ "name": "agentconfigs.create",
751
+ "operation": "create",
752
+ "objectName": "@happyvertical/smrt-agents:AgentConfig",
753
+ "path": "/agentconfigs",
754
+ "method": "POST"
755
+ },
756
+ {
757
+ "kind": "api",
758
+ "name": "agentconfigs.update",
759
+ "operation": "update",
760
+ "objectName": "@happyvertical/smrt-agents:AgentConfig",
761
+ "path": "/agentconfigs/[id]",
762
+ "method": "PATCH"
763
+ },
764
+ {
765
+ "kind": "api",
766
+ "name": "agentconfigs.delete",
767
+ "operation": "delete",
768
+ "objectName": "@happyvertical/smrt-agents:AgentConfig",
769
+ "path": "/agentconfigs/[id]",
770
+ "method": "DELETE"
771
+ },
772
+ {
773
+ "kind": "cli",
774
+ "name": "agentconfig_list",
775
+ "operation": "list",
776
+ "objectName": "@happyvertical/smrt-agents:AgentConfig"
777
+ },
778
+ {
779
+ "kind": "cli",
780
+ "name": "agentconfig_get",
781
+ "operation": "get",
782
+ "objectName": "@happyvertical/smrt-agents:AgentConfig"
783
+ },
784
+ {
785
+ "kind": "cli",
786
+ "name": "agentconfig_create",
787
+ "operation": "create",
788
+ "objectName": "@happyvertical/smrt-agents:AgentConfig"
789
+ },
790
+ {
791
+ "kind": "cli",
792
+ "name": "agentconfig_update",
793
+ "operation": "update",
794
+ "objectName": "@happyvertical/smrt-agents:AgentConfig"
795
+ },
796
+ {
797
+ "kind": "cli",
798
+ "name": "agentconfig_delete",
799
+ "operation": "delete",
800
+ "objectName": "@happyvertical/smrt-agents:AgentConfig"
801
+ },
802
+ {
803
+ "kind": "mcp",
804
+ "name": "agentconfig_list",
805
+ "operation": "list",
806
+ "objectName": "@happyvertical/smrt-agents:AgentConfig"
807
+ },
808
+ {
809
+ "kind": "mcp",
810
+ "name": "agentconfig_get",
811
+ "operation": "get",
812
+ "objectName": "@happyvertical/smrt-agents:AgentConfig"
813
+ },
814
+ {
815
+ "kind": "api",
816
+ "name": "agentschedules.list",
817
+ "operation": "list",
818
+ "objectName": "@happyvertical/smrt-agents:AgentSchedule",
819
+ "path": "/agentschedules",
820
+ "method": "GET"
821
+ },
822
+ {
823
+ "kind": "api",
824
+ "name": "agentschedules.get",
825
+ "operation": "get",
826
+ "objectName": "@happyvertical/smrt-agents:AgentSchedule",
827
+ "path": "/agentschedules/[id]",
828
+ "method": "GET"
829
+ },
830
+ {
831
+ "kind": "api",
832
+ "name": "agentschedules.create",
833
+ "operation": "create",
834
+ "objectName": "@happyvertical/smrt-agents:AgentSchedule",
835
+ "path": "/agentschedules",
836
+ "method": "POST"
837
+ },
838
+ {
839
+ "kind": "api",
840
+ "name": "agentschedules.update",
841
+ "operation": "update",
842
+ "objectName": "@happyvertical/smrt-agents:AgentSchedule",
843
+ "path": "/agentschedules/[id]",
844
+ "method": "PATCH"
845
+ },
846
+ {
847
+ "kind": "api",
848
+ "name": "agentschedules.delete",
849
+ "operation": "delete",
850
+ "objectName": "@happyvertical/smrt-agents:AgentSchedule",
851
+ "path": "/agentschedules/[id]",
852
+ "method": "DELETE"
853
+ },
854
+ {
855
+ "kind": "cli",
856
+ "name": "agentschedule_list",
857
+ "operation": "list",
858
+ "objectName": "@happyvertical/smrt-agents:AgentSchedule"
859
+ },
860
+ {
861
+ "kind": "cli",
862
+ "name": "agentschedule_get",
863
+ "operation": "get",
864
+ "objectName": "@happyvertical/smrt-agents:AgentSchedule"
865
+ },
866
+ {
867
+ "kind": "cli",
868
+ "name": "agentschedule_create",
869
+ "operation": "create",
870
+ "objectName": "@happyvertical/smrt-agents:AgentSchedule"
871
+ },
872
+ {
873
+ "kind": "cli",
874
+ "name": "agentschedule_update",
875
+ "operation": "update",
876
+ "objectName": "@happyvertical/smrt-agents:AgentSchedule"
877
+ },
878
+ {
879
+ "kind": "cli",
880
+ "name": "agentschedule_delete",
881
+ "operation": "delete",
882
+ "objectName": "@happyvertical/smrt-agents:AgentSchedule"
883
+ },
884
+ {
885
+ "kind": "cli",
886
+ "name": "agentschedule_enable",
887
+ "operation": "enable",
888
+ "objectName": "@happyvertical/smrt-agents:AgentSchedule"
889
+ },
890
+ {
891
+ "kind": "cli",
892
+ "name": "agentschedule_disable",
893
+ "operation": "disable",
894
+ "objectName": "@happyvertical/smrt-agents:AgentSchedule"
895
+ },
896
+ {
897
+ "kind": "mcp",
898
+ "name": "agentschedule_list",
899
+ "operation": "list",
900
+ "objectName": "@happyvertical/smrt-agents:AgentSchedule"
901
+ },
902
+ {
903
+ "kind": "mcp",
904
+ "name": "agentschedule_get",
905
+ "operation": "get",
906
+ "objectName": "@happyvertical/smrt-agents:AgentSchedule"
907
+ },
908
+ {
909
+ "kind": "api",
910
+ "name": "tenantagents.list",
911
+ "operation": "list",
912
+ "objectName": "@happyvertical/smrt-agents:TenantAgent",
913
+ "path": "/tenantagents",
914
+ "method": "GET"
915
+ },
916
+ {
917
+ "kind": "api",
918
+ "name": "tenantagents.get",
919
+ "operation": "get",
920
+ "objectName": "@happyvertical/smrt-agents:TenantAgent",
921
+ "path": "/tenantagents/[id]",
922
+ "method": "GET"
923
+ },
924
+ {
925
+ "kind": "api",
926
+ "name": "tenantagents.create",
927
+ "operation": "create",
928
+ "objectName": "@happyvertical/smrt-agents:TenantAgent",
929
+ "path": "/tenantagents",
930
+ "method": "POST"
931
+ },
932
+ {
933
+ "kind": "api",
934
+ "name": "tenantagents.update",
935
+ "operation": "update",
936
+ "objectName": "@happyvertical/smrt-agents:TenantAgent",
937
+ "path": "/tenantagents/[id]",
938
+ "method": "PATCH"
939
+ },
940
+ {
941
+ "kind": "api",
942
+ "name": "tenantagents.delete",
943
+ "operation": "delete",
944
+ "objectName": "@happyvertical/smrt-agents:TenantAgent",
945
+ "path": "/tenantagents/[id]",
946
+ "method": "DELETE"
947
+ },
948
+ {
949
+ "kind": "cli",
950
+ "name": "tenantagent_list",
951
+ "operation": "list",
952
+ "objectName": "@happyvertical/smrt-agents:TenantAgent"
953
+ },
954
+ {
955
+ "kind": "cli",
956
+ "name": "tenantagent_get",
957
+ "operation": "get",
958
+ "objectName": "@happyvertical/smrt-agents:TenantAgent"
959
+ },
960
+ {
961
+ "kind": "mcp",
962
+ "name": "tenantagent_list",
963
+ "operation": "list",
964
+ "objectName": "@happyvertical/smrt-agents:TenantAgent"
965
+ },
966
+ {
967
+ "kind": "mcp",
968
+ "name": "tenantagent_get",
969
+ "operation": "get",
970
+ "objectName": "@happyvertical/smrt-agents:TenantAgent"
971
+ }
972
+ ],
973
+ "prompts": [],
974
+ "relationshipsV2": {
975
+ "foreignKeyFields": 0,
976
+ "crossPackageRefFields": 0,
977
+ "junctionCollections": 0,
978
+ "hierarchicalObjects": 0,
979
+ "polymorphicAssociations": 0,
980
+ "uuidColumns": 11
981
+ },
982
+ "agentDoc": "# @happyvertical/smrt-agents\n\nAgent framework for autonomous actors with inter-agent messaging, interest-based object discovery, scheduling, and multi-tenant bindings.\n\n## Agent Lifecycle\n\n`initialize()` → `validate()` → `run()` → `shutdown()`\n\n- Extend `Agent` (which extends `SmrtObject`) and implement `run()`\n- Status tracking: `idle → initializing → running → error/shutdown`\n- `execute()` runs the full lifecycle automatically\n- Process signal handling is opt-in via `manageProcessSignals: true` and is intended for single-agent processes\n\n## DispatchBus — Inter-Agent Communication\n\nAgents communicate via persistent async messaging through core's DispatchBus:\n\n```typescript\n// Emitting (in any agent)\nconst bus = await this.getDispatch();\nawait bus.emit('campaign.completed', { campaignId: '123' }, { source: 'Suasor' });\n\n// Subscribing (in receiving agent)\nasync handleDispatch(payload: unknown, metadata: DispatchMetadata): Promise<void> {\n if (metadata.type === 'campaign.completed') await this.recordRevenue(payload);\n}\nasync run() { await this.processDispatches(); } // processes via handleDispatch()\n```\n\nCLI: `smrt dispatch:list`, `dispatch:process --subscriber Fiscus`, `dispatch:retry`, `dispatch:cleanup`\n\n## Interests — Object Discovery\n\nAgents query objects they care about via declarative filters:\n\n```typescript\nconstructor(options) {\n super({ ...options, interests: {\n objects: { Meeting: { filter: { status: 'upcoming' }, handler: async (m) => ({ action: 'recap' }) } },\n qualify: async (items) => items.filter(/* AI-based post-filter */),\n }});\n}\nasync run() { for (const { type, data } of await this.interesting()) { ... } }\n```\n\n## Configuration\n\n- **File-based**: `getModuleConfig('agent-name', defaults)` from `smrt.config.ts`\n- **DB-persisted**: `saveSlotConfig(slotId, data)` for UI overrides\n- **Merged**: `getMergedConfig('slotId')` — DB overrides file config\n- **UI slots**: `static uiSlots` declares admin panels (id, label, icon, order)\n\n## TenantAgent — Multi-Tenant Bindings\n\nJunction table (`tenant_agents`) binding agents to tenants with permission overrides and hierarchy resolution:\n- Explicit binding: row exists for tenant (source: 'explicit')\n- Inherited: walks up tenant hierarchy (source: 'inherited')\n- Permissions: manifest defaults merged with per-tenant overrides\n\n## AgentSchedule\n\nCron-based scheduling stored in `_smrt_agent_schedules`. Fields: `agentType`, `cron`, `method` (default: 'run'), `maxConcurrent`, `timeout`. Executed by ScheduleRunner from smrt-jobs.\n\n## Lazy agent_config Resolution (issue #1161)\n\nPersisted `agent_config` snapshots env-derived values at sync time, so rotated env vars don't reach already-stored schedule rows. Two complementary mechanisms unfreeze them:\n\n1. **`$env` sentinels in persisted config** — register a global resolver and reference it from the JSON:\n\n ```ts\n import { registerConfigResolver } from '@happyvertical/smrt-agents';\n registerConfigResolver('sharedAssetStorage', () => resolveSharedAssetStorage());\n // persisted: { \"assetStorage\": { \"$env\": \"sharedAssetStorage\" } }\n ```\n\n2. **`static configResolvers` on the agent class** — declarative, discoverable via the class itself:\n\n ```ts\n class Praeco extends Agent {\n static override configResolvers = {\n assetStorage: () => resolveSharedAssetStorage(),\n };\n }\n ```\n\nThe TaskRunner calls `resolveLazyConfig()` immediately before constructing the agent, so live values always win over snapshotted ones. Re-exported from `@happyvertical/smrt-core` (`resolveLazyConfig`, `registerConfigResolver`, `getClassConfigResolvers`, …) for cases where agents isn't on the import path.\n\n## Key Files\n\n| File | Purpose |\n|------|---------|\n| `src/agent.ts` | Base Agent class — lifecycle, dispatch, interests, config |\n| `src/schedule.ts` | AgentSchedule model — cron, execution tracking |\n| `src/tenant-agent.ts` | TenantAgent — junction table, hierarchical resolution |\n| `src/interests.ts` | Interest filter types and configuration |\n| `src/config.ts` | File + DB config management, UI slots |\n"
983
+ }