@happyvertical/smrt-chat 0.38.24 → 0.38.25

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 (36) hide show
  1. package/AGENTS.md +24 -2
  2. package/README.md +123 -3
  3. package/dist/chunks/{ChatService-BRsE5HmY.js → ChatService-B9rJuwtb.js} +269 -110
  4. package/dist/chunks/ChatService-B9rJuwtb.js.map +1 -0
  5. package/dist/collections/VoiceGatewayTurnCollection.d.ts +13 -0
  6. package/dist/collections/VoiceGatewayTurnCollection.d.ts.map +1 -0
  7. package/dist/collections/VoiceSessionCollection.d.ts +11 -0
  8. package/dist/collections/VoiceSessionCollection.d.ts.map +1 -0
  9. package/dist/index.d.ts +4 -3
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +495 -13
  12. package/dist/index.js.map +1 -1
  13. package/dist/internal/agent-runtime.js +1 -1
  14. package/dist/manifest.json +905 -2
  15. package/dist/models/VoiceGatewayTurn.d.ts +20 -0
  16. package/dist/models/VoiceGatewayTurn.d.ts.map +1 -0
  17. package/dist/models/VoiceSession.d.ts +40 -0
  18. package/dist/models/VoiceSession.d.ts.map +1 -0
  19. package/dist/models/index.d.ts +2 -0
  20. package/dist/models/index.d.ts.map +1 -1
  21. package/dist/persona-conversation.d.ts +8 -0
  22. package/dist/persona-conversation.d.ts.map +1 -1
  23. package/dist/services/ChatService.d.ts.map +1 -1
  24. package/dist/smrt-knowledge.json +481 -9
  25. package/dist/svelte/components/layout/ChatLayout.svelte +7 -3
  26. package/dist/svelte/components/messages/MessageInput.svelte +22 -15
  27. package/dist/svelte/components/messages/MessageInput.svelte.d.ts.map +1 -1
  28. package/dist/types.d.ts +30 -0
  29. package/dist/types.d.ts.map +1 -1
  30. package/dist/ui.d.ts.map +1 -1
  31. package/dist/ui.js +4 -2
  32. package/dist/ui.js.map +1 -1
  33. package/dist/voice.d.ts +127 -0
  34. package/dist/voice.d.ts.map +1 -0
  35. package/package.json +16 -14
  36. package/dist/chunks/ChatService-BRsE5HmY.js.map +0 -1
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "version": "1.0.0",
3
- "timestamp": 1783637910306,
3
+ "timestamp": 1783646473660,
4
4
  "packageName": "@happyvertical/smrt-chat",
5
- "packageVersion": "0.38.24",
5
+ "packageVersion": "0.38.25",
6
6
  "objects": {
7
7
  "@happyvertical/smrt-chat:AgentSession": {
8
8
  "name": "agentsession",
@@ -1874,6 +1874,724 @@
1874
1874
  "version": "6fd35191"
1875
1875
  }
1876
1876
  },
1877
+ "@happyvertical/smrt-chat:VoiceGatewayTurn": {
1878
+ "name": "voicegatewayturn",
1879
+ "className": "VoiceGatewayTurn",
1880
+ "qualifiedName": "@happyvertical/smrt-chat:VoiceGatewayTurn",
1881
+ "collection": "voicegatewayturns",
1882
+ "filePath": "/home/runner/_work/smrt/smrt/packages/chat/src/models/VoiceGatewayTurn.ts",
1883
+ "packageName": "@happyvertical/smrt-chat",
1884
+ "fields": {
1885
+ "tenantId": {
1886
+ "type": "text",
1887
+ "required": true,
1888
+ "_meta": {
1889
+ "sqlType": "UUID",
1890
+ "__tenancy": {
1891
+ "isTenantIdField": true,
1892
+ "autoFilter": true,
1893
+ "required": true,
1894
+ "autoPopulate": true,
1895
+ "nullable": false,
1896
+ "mode": "required",
1897
+ "field": "tenantId",
1898
+ "allowSuperAdminBypass": false
1899
+ }
1900
+ }
1901
+ },
1902
+ "voiceSessionId": {
1903
+ "type": "foreignKey",
1904
+ "required": true,
1905
+ "related": "VoiceSession",
1906
+ "_meta": {
1907
+ "required": true
1908
+ }
1909
+ },
1910
+ "gatewaySessionId": {
1911
+ "type": "text",
1912
+ "required": true,
1913
+ "default": "",
1914
+ "_meta": {
1915
+ "required": true
1916
+ }
1917
+ },
1918
+ "gatewayTurnId": {
1919
+ "type": "text",
1920
+ "required": true,
1921
+ "default": "",
1922
+ "_meta": {
1923
+ "required": true
1924
+ }
1925
+ },
1926
+ "target": {
1927
+ "type": "text",
1928
+ "required": true,
1929
+ "default": "smrt:chat",
1930
+ "_meta": {
1931
+ "required": true
1932
+ }
1933
+ },
1934
+ "status": {
1935
+ "type": "text",
1936
+ "required": true,
1937
+ "default": "processing",
1938
+ "_meta": {
1939
+ "required": true
1940
+ }
1941
+ },
1942
+ "completedAt": {
1943
+ "type": "datetime",
1944
+ "required": false
1945
+ },
1946
+ "failedAt": {
1947
+ "type": "datetime",
1948
+ "required": false
1949
+ }
1950
+ },
1951
+ "methods": {
1952
+ "complete": {
1953
+ "name": "complete",
1954
+ "async": true,
1955
+ "parameters": [
1956
+ {
1957
+ "name": "now",
1958
+ "type": "Date",
1959
+ "optional": true
1960
+ }
1961
+ ],
1962
+ "returnType": "Promise<void>",
1963
+ "isStatic": false,
1964
+ "isPublic": true
1965
+ },
1966
+ "fail": {
1967
+ "name": "fail",
1968
+ "async": true,
1969
+ "parameters": [
1970
+ {
1971
+ "name": "now",
1972
+ "type": "Date",
1973
+ "optional": true
1974
+ }
1975
+ ],
1976
+ "returnType": "Promise<void>",
1977
+ "isStatic": false,
1978
+ "isPublic": true
1979
+ }
1980
+ },
1981
+ "decoratorConfig": {
1982
+ "tableName": "voice_gateway_turns",
1983
+ "conflictColumns": [
1984
+ "voice_session_id",
1985
+ "gateway_turn_id"
1986
+ ],
1987
+ "api": {
1988
+ "include": [
1989
+ "list",
1990
+ "get"
1991
+ ]
1992
+ },
1993
+ "mcp": {
1994
+ "include": [
1995
+ "list",
1996
+ "get"
1997
+ ]
1998
+ },
1999
+ "cli": false,
2000
+ "tenantScoped": {
2001
+ "mode": "required"
2002
+ }
2003
+ },
2004
+ "extends": "SmrtObject",
2005
+ "exportName": "VoiceGatewayTurn",
2006
+ "collectionExportName": "VoiceGatewayTurnCollection",
2007
+ "validationRules": [
2008
+ {
2009
+ "field": "tenantId",
2010
+ "rule": "required",
2011
+ "fieldType": "text"
2012
+ },
2013
+ {
2014
+ "field": "voiceSessionId",
2015
+ "rule": "required",
2016
+ "fieldType": "foreignKey"
2017
+ },
2018
+ {
2019
+ "field": "gatewaySessionId",
2020
+ "rule": "required",
2021
+ "fieldType": "text"
2022
+ },
2023
+ {
2024
+ "field": "gatewayTurnId",
2025
+ "rule": "required",
2026
+ "fieldType": "text"
2027
+ },
2028
+ {
2029
+ "field": "target",
2030
+ "rule": "required",
2031
+ "fieldType": "text"
2032
+ },
2033
+ {
2034
+ "field": "status",
2035
+ "rule": "required",
2036
+ "fieldType": "text"
2037
+ }
2038
+ ],
2039
+ "schema": {
2040
+ "tableName": "voice_gateway_turns",
2041
+ "ddl": "CREATE TABLE IF NOT EXISTS \"voice_gateway_turns\" (\n \"id\" UUID PRIMARY KEY NOT NULL,\n \"slug\" TEXT NOT NULL,\n \"context\" TEXT NOT NULL DEFAULT '',\n \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"tenant_id\" UUID NOT NULL,\n \"voice_session_id\" UUID NOT NULL,\n \"gateway_session_id\" TEXT NOT NULL DEFAULT '',\n \"gateway_turn_id\" TEXT NOT NULL DEFAULT '',\n \"target\" TEXT NOT NULL DEFAULT 'smrt:chat',\n \"status\" TEXT NOT NULL DEFAULT 'processing',\n \"completed_at\" TIMESTAMP,\n \"failed_at\" TIMESTAMP\n);",
2042
+ "columns": {
2043
+ "id": {
2044
+ "type": "UUID",
2045
+ "primaryKey": true,
2046
+ "referenceKind": "id",
2047
+ "notNull": true
2048
+ },
2049
+ "slug": {
2050
+ "type": "TEXT",
2051
+ "notNull": true
2052
+ },
2053
+ "context": {
2054
+ "type": "TEXT",
2055
+ "notNull": true,
2056
+ "default": ""
2057
+ },
2058
+ "created_at": {
2059
+ "type": "TIMESTAMP",
2060
+ "notNull": true,
2061
+ "default": "current_timestamp"
2062
+ },
2063
+ "updated_at": {
2064
+ "type": "TIMESTAMP",
2065
+ "notNull": true,
2066
+ "default": "current_timestamp"
2067
+ },
2068
+ "tenant_id": {
2069
+ "type": "UUID",
2070
+ "referenceKind": "tenantId",
2071
+ "notNull": true,
2072
+ "unique": false
2073
+ },
2074
+ "voice_session_id": {
2075
+ "type": "UUID",
2076
+ "referenceKind": "foreignKey",
2077
+ "notNull": true,
2078
+ "unique": false
2079
+ },
2080
+ "gateway_session_id": {
2081
+ "type": "TEXT",
2082
+ "notNull": true,
2083
+ "unique": false,
2084
+ "default": ""
2085
+ },
2086
+ "gateway_turn_id": {
2087
+ "type": "TEXT",
2088
+ "notNull": true,
2089
+ "unique": false,
2090
+ "default": ""
2091
+ },
2092
+ "target": {
2093
+ "type": "TEXT",
2094
+ "notNull": true,
2095
+ "unique": false,
2096
+ "default": "smrt:chat"
2097
+ },
2098
+ "status": {
2099
+ "type": "TEXT",
2100
+ "notNull": true,
2101
+ "unique": false,
2102
+ "default": "processing"
2103
+ },
2104
+ "completed_at": {
2105
+ "type": "TIMESTAMP",
2106
+ "notNull": false,
2107
+ "unique": false
2108
+ },
2109
+ "failed_at": {
2110
+ "type": "TIMESTAMP",
2111
+ "notNull": false,
2112
+ "unique": false
2113
+ }
2114
+ },
2115
+ "indexes": [
2116
+ {
2117
+ "name": "voice_gateway_turns_id_idx",
2118
+ "columns": [
2119
+ "id"
2120
+ ]
2121
+ },
2122
+ {
2123
+ "name": "voice_gateway_turns_voice_session_id_gateway_turn_id_idx",
2124
+ "columns": [
2125
+ "voice_session_id",
2126
+ "gateway_turn_id"
2127
+ ],
2128
+ "unique": true
2129
+ }
2130
+ ],
2131
+ "version": "45e2867c"
2132
+ }
2133
+ },
2134
+ "@happyvertical/smrt-chat:VoiceSession": {
2135
+ "name": "voicesession",
2136
+ "className": "VoiceSession",
2137
+ "qualifiedName": "@happyvertical/smrt-chat:VoiceSession",
2138
+ "collection": "voicesessions",
2139
+ "filePath": "/home/runner/_work/smrt/smrt/packages/chat/src/models/VoiceSession.ts",
2140
+ "packageName": "@happyvertical/smrt-chat",
2141
+ "fields": {
2142
+ "tenantId": {
2143
+ "type": "text",
2144
+ "required": true,
2145
+ "_meta": {
2146
+ "sqlType": "UUID",
2147
+ "__tenancy": {
2148
+ "isTenantIdField": true,
2149
+ "autoFilter": true,
2150
+ "required": true,
2151
+ "autoPopulate": true,
2152
+ "nullable": false,
2153
+ "mode": "required",
2154
+ "field": "tenantId",
2155
+ "allowSuperAdminBypass": false
2156
+ }
2157
+ }
2158
+ },
2159
+ "gatewaySessionId": {
2160
+ "type": "text",
2161
+ "required": true,
2162
+ "default": "",
2163
+ "_meta": {
2164
+ "required": true
2165
+ }
2166
+ },
2167
+ "actorProfileId": {
2168
+ "type": "crossPackageRef",
2169
+ "required": true,
2170
+ "related": "@happyvertical/smrt-profiles:Profile"
2171
+ },
2172
+ "actorUserId": {
2173
+ "type": "crossPackageRef",
2174
+ "required": false,
2175
+ "related": "@happyvertical/smrt-users:User",
2176
+ "_meta": {
2177
+ "nullable": true
2178
+ }
2179
+ },
2180
+ "personaId": {
2181
+ "type": "crossPackageRef",
2182
+ "required": true,
2183
+ "related": "@happyvertical/smrt-personas:AgentPersona"
2184
+ },
2185
+ "agentSessionId": {
2186
+ "type": "foreignKey",
2187
+ "required": true,
2188
+ "related": "AgentSession",
2189
+ "_meta": {
2190
+ "required": true
2191
+ }
2192
+ },
2193
+ "chatRoomId": {
2194
+ "type": "foreignKey",
2195
+ "required": true,
2196
+ "related": "ChatRoom",
2197
+ "_meta": {
2198
+ "required": true
2199
+ }
2200
+ },
2201
+ "threadId": {
2202
+ "type": "foreignKey",
2203
+ "required": false,
2204
+ "related": "ChatThread"
2205
+ },
2206
+ "target": {
2207
+ "type": "text",
2208
+ "required": true,
2209
+ "default": "smrt:chat",
2210
+ "_meta": {
2211
+ "required": true
2212
+ }
2213
+ },
2214
+ "status": {
2215
+ "type": "text",
2216
+ "required": true,
2217
+ "default": "active",
2218
+ "_meta": {
2219
+ "required": true
2220
+ }
2221
+ },
2222
+ "expiresAt": {
2223
+ "type": "datetime",
2224
+ "required": true,
2225
+ "_meta": {
2226
+ "required": true
2227
+ }
2228
+ },
2229
+ "lastTurnAt": {
2230
+ "type": "datetime",
2231
+ "required": false
2232
+ },
2233
+ "lastGatewayTurnId": {
2234
+ "type": "text",
2235
+ "required": false
2236
+ },
2237
+ "personaSnapshot": {
2238
+ "type": "text",
2239
+ "required": false,
2240
+ "default": "{}"
2241
+ },
2242
+ "metadata": {
2243
+ "type": "text",
2244
+ "required": false,
2245
+ "default": "{}"
2246
+ },
2247
+ "processedTurnIds": {
2248
+ "type": "text",
2249
+ "required": false,
2250
+ "default": "[]"
2251
+ }
2252
+ },
2253
+ "methods": {
2254
+ "isActive": {
2255
+ "name": "isActive",
2256
+ "async": false,
2257
+ "parameters": [
2258
+ {
2259
+ "name": "now",
2260
+ "type": "Date",
2261
+ "optional": true
2262
+ }
2263
+ ],
2264
+ "returnType": "boolean",
2265
+ "isStatic": false,
2266
+ "isPublic": true
2267
+ },
2268
+ "isExpired": {
2269
+ "name": "isExpired",
2270
+ "async": false,
2271
+ "parameters": [
2272
+ {
2273
+ "name": "now",
2274
+ "type": "Date",
2275
+ "optional": true
2276
+ }
2277
+ ],
2278
+ "returnType": "boolean",
2279
+ "isStatic": false,
2280
+ "isPublic": true
2281
+ },
2282
+ "expire": {
2283
+ "name": "expire",
2284
+ "async": true,
2285
+ "parameters": [],
2286
+ "returnType": "Promise<void>",
2287
+ "isStatic": false,
2288
+ "isPublic": true
2289
+ },
2290
+ "revoke": {
2291
+ "name": "revoke",
2292
+ "async": true,
2293
+ "parameters": [],
2294
+ "returnType": "Promise<void>",
2295
+ "isStatic": false,
2296
+ "isPublic": true
2297
+ },
2298
+ "getPersonaSnapshot": {
2299
+ "name": "getPersonaSnapshot",
2300
+ "async": false,
2301
+ "parameters": [],
2302
+ "returnType": "ConversationPersona",
2303
+ "isStatic": false,
2304
+ "isPublic": true
2305
+ },
2306
+ "setPersonaSnapshot": {
2307
+ "name": "setPersonaSnapshot",
2308
+ "async": false,
2309
+ "parameters": [
2310
+ {
2311
+ "name": "persona",
2312
+ "type": "ConversationPersona",
2313
+ "optional": false
2314
+ }
2315
+ ],
2316
+ "returnType": "void",
2317
+ "isStatic": false,
2318
+ "isPublic": true
2319
+ },
2320
+ "getMetadata": {
2321
+ "name": "getMetadata",
2322
+ "async": false,
2323
+ "parameters": [],
2324
+ "returnType": "Record<string>",
2325
+ "isStatic": false,
2326
+ "isPublic": true
2327
+ },
2328
+ "setMetadata": {
2329
+ "name": "setMetadata",
2330
+ "async": false,
2331
+ "parameters": [
2332
+ {
2333
+ "name": "metadata",
2334
+ "type": "Record<string>",
2335
+ "optional": false
2336
+ }
2337
+ ],
2338
+ "returnType": "void",
2339
+ "isStatic": false,
2340
+ "isPublic": true
2341
+ },
2342
+ "getProcessedTurnIds": {
2343
+ "name": "getProcessedTurnIds",
2344
+ "async": false,
2345
+ "parameters": [],
2346
+ "returnType": "string[]",
2347
+ "isStatic": false,
2348
+ "isPublic": true
2349
+ },
2350
+ "hasProcessedTurn": {
2351
+ "name": "hasProcessedTurn",
2352
+ "async": false,
2353
+ "parameters": [
2354
+ {
2355
+ "name": "turnId",
2356
+ "type": "string",
2357
+ "optional": false
2358
+ }
2359
+ ],
2360
+ "returnType": "boolean",
2361
+ "isStatic": false,
2362
+ "isPublic": true
2363
+ },
2364
+ "recordGatewayTurn": {
2365
+ "name": "recordGatewayTurn",
2366
+ "async": false,
2367
+ "parameters": [
2368
+ {
2369
+ "name": "turnId",
2370
+ "type": "string",
2371
+ "optional": false
2372
+ },
2373
+ {
2374
+ "name": "maxRememberedTurns",
2375
+ "type": "any",
2376
+ "optional": true
2377
+ }
2378
+ ],
2379
+ "returnType": "void",
2380
+ "isStatic": false,
2381
+ "isPublic": true
2382
+ }
2383
+ },
2384
+ "decoratorConfig": {
2385
+ "tableName": "voice_sessions",
2386
+ "api": {
2387
+ "include": [
2388
+ "list",
2389
+ "get"
2390
+ ]
2391
+ },
2392
+ "mcp": {
2393
+ "include": [
2394
+ "list",
2395
+ "get"
2396
+ ]
2397
+ },
2398
+ "cli": true,
2399
+ "tenantScoped": {
2400
+ "mode": "required"
2401
+ }
2402
+ },
2403
+ "extends": "SmrtObject",
2404
+ "exportName": "VoiceSession",
2405
+ "collectionExportName": "VoiceSessionCollection",
2406
+ "validationRules": [
2407
+ {
2408
+ "field": "tenantId",
2409
+ "rule": "required",
2410
+ "fieldType": "text"
2411
+ },
2412
+ {
2413
+ "field": "gatewaySessionId",
2414
+ "rule": "required",
2415
+ "fieldType": "text"
2416
+ },
2417
+ {
2418
+ "field": "actorProfileId",
2419
+ "rule": "required",
2420
+ "fieldType": "crossPackageRef"
2421
+ },
2422
+ {
2423
+ "field": "personaId",
2424
+ "rule": "required",
2425
+ "fieldType": "crossPackageRef"
2426
+ },
2427
+ {
2428
+ "field": "agentSessionId",
2429
+ "rule": "required",
2430
+ "fieldType": "foreignKey"
2431
+ },
2432
+ {
2433
+ "field": "chatRoomId",
2434
+ "rule": "required",
2435
+ "fieldType": "foreignKey"
2436
+ },
2437
+ {
2438
+ "field": "target",
2439
+ "rule": "required",
2440
+ "fieldType": "text"
2441
+ },
2442
+ {
2443
+ "field": "status",
2444
+ "rule": "required",
2445
+ "fieldType": "text"
2446
+ },
2447
+ {
2448
+ "field": "expiresAt",
2449
+ "rule": "required",
2450
+ "fieldType": "datetime"
2451
+ }
2452
+ ],
2453
+ "schema": {
2454
+ "tableName": "voice_sessions",
2455
+ "ddl": "CREATE TABLE IF NOT EXISTS \"voice_sessions\" (\n \"id\" UUID PRIMARY KEY NOT NULL,\n \"slug\" TEXT NOT NULL,\n \"context\" TEXT NOT NULL DEFAULT '',\n \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"tenant_id\" UUID NOT NULL,\n \"gateway_session_id\" TEXT NOT NULL DEFAULT '',\n \"actor_profile_id\" UUID NOT NULL,\n \"actor_user_id\" UUID,\n \"persona_id\" UUID NOT NULL,\n \"agent_session_id\" UUID NOT NULL,\n \"chat_room_id\" UUID NOT NULL,\n \"thread_id\" UUID,\n \"target\" TEXT NOT NULL DEFAULT 'smrt:chat',\n \"status\" TEXT NOT NULL DEFAULT 'active',\n \"expires_at\" TIMESTAMP NOT NULL,\n \"last_turn_at\" TIMESTAMP,\n \"last_gateway_turn_id\" TEXT,\n \"persona_snapshot\" TEXT DEFAULT '{}',\n \"metadata\" TEXT DEFAULT '{}',\n \"processed_turn_ids\" TEXT DEFAULT '[]'\n);",
2456
+ "columns": {
2457
+ "id": {
2458
+ "type": "UUID",
2459
+ "primaryKey": true,
2460
+ "referenceKind": "id",
2461
+ "notNull": true
2462
+ },
2463
+ "slug": {
2464
+ "type": "TEXT",
2465
+ "notNull": true
2466
+ },
2467
+ "context": {
2468
+ "type": "TEXT",
2469
+ "notNull": true,
2470
+ "default": ""
2471
+ },
2472
+ "created_at": {
2473
+ "type": "TIMESTAMP",
2474
+ "notNull": true,
2475
+ "default": "current_timestamp"
2476
+ },
2477
+ "updated_at": {
2478
+ "type": "TIMESTAMP",
2479
+ "notNull": true,
2480
+ "default": "current_timestamp"
2481
+ },
2482
+ "tenant_id": {
2483
+ "type": "UUID",
2484
+ "referenceKind": "tenantId",
2485
+ "notNull": true,
2486
+ "unique": false
2487
+ },
2488
+ "gateway_session_id": {
2489
+ "type": "TEXT",
2490
+ "notNull": true,
2491
+ "unique": false,
2492
+ "default": ""
2493
+ },
2494
+ "actor_profile_id": {
2495
+ "type": "UUID",
2496
+ "referenceKind": "crossPackageRef",
2497
+ "notNull": true,
2498
+ "unique": false
2499
+ },
2500
+ "actor_user_id": {
2501
+ "type": "UUID",
2502
+ "referenceKind": "crossPackageRef",
2503
+ "notNull": false,
2504
+ "unique": false
2505
+ },
2506
+ "persona_id": {
2507
+ "type": "UUID",
2508
+ "referenceKind": "crossPackageRef",
2509
+ "notNull": true,
2510
+ "unique": false
2511
+ },
2512
+ "agent_session_id": {
2513
+ "type": "UUID",
2514
+ "referenceKind": "foreignKey",
2515
+ "notNull": true,
2516
+ "unique": false
2517
+ },
2518
+ "chat_room_id": {
2519
+ "type": "UUID",
2520
+ "referenceKind": "foreignKey",
2521
+ "notNull": true,
2522
+ "unique": false
2523
+ },
2524
+ "thread_id": {
2525
+ "type": "UUID",
2526
+ "referenceKind": "foreignKey",
2527
+ "notNull": false,
2528
+ "unique": false
2529
+ },
2530
+ "target": {
2531
+ "type": "TEXT",
2532
+ "notNull": true,
2533
+ "unique": false,
2534
+ "default": "smrt:chat"
2535
+ },
2536
+ "status": {
2537
+ "type": "TEXT",
2538
+ "notNull": true,
2539
+ "unique": false,
2540
+ "default": "active"
2541
+ },
2542
+ "expires_at": {
2543
+ "type": "TIMESTAMP",
2544
+ "notNull": true,
2545
+ "unique": false
2546
+ },
2547
+ "last_turn_at": {
2548
+ "type": "TIMESTAMP",
2549
+ "notNull": false,
2550
+ "unique": false
2551
+ },
2552
+ "last_gateway_turn_id": {
2553
+ "type": "TEXT",
2554
+ "notNull": false,
2555
+ "unique": false
2556
+ },
2557
+ "persona_snapshot": {
2558
+ "type": "TEXT",
2559
+ "notNull": false,
2560
+ "unique": false,
2561
+ "default": "{}"
2562
+ },
2563
+ "metadata": {
2564
+ "type": "TEXT",
2565
+ "notNull": false,
2566
+ "unique": false,
2567
+ "default": "{}"
2568
+ },
2569
+ "processed_turn_ids": {
2570
+ "type": "TEXT",
2571
+ "notNull": false,
2572
+ "unique": false,
2573
+ "default": "[]"
2574
+ }
2575
+ },
2576
+ "indexes": [
2577
+ {
2578
+ "name": "voice_sessions_id_idx",
2579
+ "columns": [
2580
+ "id"
2581
+ ]
2582
+ },
2583
+ {
2584
+ "name": "voice_sessions_slug_context_idx",
2585
+ "columns": [
2586
+ "slug",
2587
+ "context"
2588
+ ],
2589
+ "unique": true
2590
+ }
2591
+ ],
2592
+ "version": "348c29ef"
2593
+ }
2594
+ },
1877
2595
  "@happyvertical/smrt-chat:AgentSessionCollection": {
1878
2596
  "name": "agentsessioncollection",
1879
2597
  "className": "AgentSessionCollection",
@@ -2799,6 +3517,191 @@
2799
3517
  ],
2800
3518
  "version": "760b62bd"
2801
3519
  }
3520
+ },
3521
+ "@happyvertical/smrt-chat:VoiceGatewayTurnCollection": {
3522
+ "name": "voicegatewayturncollection",
3523
+ "className": "VoiceGatewayTurnCollection",
3524
+ "qualifiedName": "@happyvertical/smrt-chat:VoiceGatewayTurnCollection",
3525
+ "collection": "voicegatewayturns",
3526
+ "filePath": "/home/runner/_work/smrt/smrt/packages/chat/src/collections/VoiceGatewayTurnCollection.ts",
3527
+ "packageName": "@happyvertical/smrt-chat",
3528
+ "fields": {},
3529
+ "methods": {
3530
+ "reserveTurn": {
3531
+ "name": "reserveTurn",
3532
+ "async": true,
3533
+ "parameters": [
3534
+ {
3535
+ "name": "input",
3536
+ "type": "object",
3537
+ "optional": false
3538
+ }
3539
+ ],
3540
+ "returnType": "Promise<VoiceGatewayTurn>",
3541
+ "isStatic": false,
3542
+ "isPublic": true
3543
+ }
3544
+ },
3545
+ "decoratorConfig": {
3546
+ "tableName": "voice_gateway_turns"
3547
+ },
3548
+ "extends": "SmrtCollection",
3549
+ "extendsTypeArg": "VoiceGatewayTurn",
3550
+ "exportName": "VoiceGatewayTurnCollection",
3551
+ "collectionExportName": "VoiceGatewayTurnCollectionCollection",
3552
+ "schema": {
3553
+ "tableName": "voice_gateway_turns",
3554
+ "ddl": "CREATE TABLE IF NOT EXISTS \"voice_gateway_turns\" (\n \"id\" UUID PRIMARY KEY NOT NULL,\n \"slug\" TEXT NOT NULL,\n \"context\" TEXT NOT NULL DEFAULT '',\n \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp\n);",
3555
+ "columns": {
3556
+ "id": {
3557
+ "type": "UUID",
3558
+ "primaryKey": true,
3559
+ "referenceKind": "id",
3560
+ "notNull": true
3561
+ },
3562
+ "slug": {
3563
+ "type": "TEXT",
3564
+ "notNull": true
3565
+ },
3566
+ "context": {
3567
+ "type": "TEXT",
3568
+ "notNull": true,
3569
+ "default": ""
3570
+ },
3571
+ "created_at": {
3572
+ "type": "TIMESTAMP",
3573
+ "notNull": true,
3574
+ "default": "current_timestamp"
3575
+ },
3576
+ "updated_at": {
3577
+ "type": "TIMESTAMP",
3578
+ "notNull": true,
3579
+ "default": "current_timestamp"
3580
+ }
3581
+ },
3582
+ "indexes": [
3583
+ {
3584
+ "name": "voice_gateway_turns_id_idx",
3585
+ "columns": [
3586
+ "id"
3587
+ ]
3588
+ },
3589
+ {
3590
+ "name": "voice_gateway_turns_slug_context_idx",
3591
+ "columns": [
3592
+ "slug",
3593
+ "context"
3594
+ ],
3595
+ "unique": true
3596
+ }
3597
+ ],
3598
+ "version": "b0808d94"
3599
+ }
3600
+ },
3601
+ "@happyvertical/smrt-chat:VoiceSessionCollection": {
3602
+ "name": "voicesessioncollection",
3603
+ "className": "VoiceSessionCollection",
3604
+ "qualifiedName": "@happyvertical/smrt-chat:VoiceSessionCollection",
3605
+ "collection": "voicesessions",
3606
+ "filePath": "/home/runner/_work/smrt/smrt/packages/chat/src/collections/VoiceSessionCollection.ts",
3607
+ "packageName": "@happyvertical/smrt-chat",
3608
+ "fields": {},
3609
+ "methods": {
3610
+ "getActiveById": {
3611
+ "name": "getActiveById",
3612
+ "async": true,
3613
+ "parameters": [
3614
+ {
3615
+ "name": "id",
3616
+ "type": "string",
3617
+ "optional": false
3618
+ },
3619
+ {
3620
+ "name": "target",
3621
+ "type": "any",
3622
+ "optional": true,
3623
+ "default": "smrt:chat"
3624
+ }
3625
+ ],
3626
+ "returnType": "Promise<VoiceSession | null>",
3627
+ "isStatic": false,
3628
+ "isPublic": true
3629
+ },
3630
+ "expireStale": {
3631
+ "name": "expireStale",
3632
+ "async": true,
3633
+ "parameters": [
3634
+ {
3635
+ "name": "olderThan",
3636
+ "type": "Date",
3637
+ "optional": true
3638
+ },
3639
+ {
3640
+ "name": "scope",
3641
+ "type": "object",
3642
+ "optional": true
3643
+ }
3644
+ ],
3645
+ "returnType": "Promise<number>",
3646
+ "isStatic": false,
3647
+ "isPublic": true
3648
+ }
3649
+ },
3650
+ "decoratorConfig": {
3651
+ "tableName": "voice_sessions"
3652
+ },
3653
+ "extends": "SmrtCollection",
3654
+ "extendsTypeArg": "VoiceSession",
3655
+ "exportName": "VoiceSessionCollection",
3656
+ "collectionExportName": "VoiceSessionCollectionCollection",
3657
+ "schema": {
3658
+ "tableName": "voice_sessions",
3659
+ "ddl": "CREATE TABLE IF NOT EXISTS \"voice_sessions\" (\n \"id\" UUID PRIMARY KEY NOT NULL,\n \"slug\" TEXT NOT NULL,\n \"context\" TEXT NOT NULL DEFAULT '',\n \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp\n);",
3660
+ "columns": {
3661
+ "id": {
3662
+ "type": "UUID",
3663
+ "primaryKey": true,
3664
+ "referenceKind": "id",
3665
+ "notNull": true
3666
+ },
3667
+ "slug": {
3668
+ "type": "TEXT",
3669
+ "notNull": true
3670
+ },
3671
+ "context": {
3672
+ "type": "TEXT",
3673
+ "notNull": true,
3674
+ "default": ""
3675
+ },
3676
+ "created_at": {
3677
+ "type": "TIMESTAMP",
3678
+ "notNull": true,
3679
+ "default": "current_timestamp"
3680
+ },
3681
+ "updated_at": {
3682
+ "type": "TIMESTAMP",
3683
+ "notNull": true,
3684
+ "default": "current_timestamp"
3685
+ }
3686
+ },
3687
+ "indexes": [
3688
+ {
3689
+ "name": "voice_sessions_id_idx",
3690
+ "columns": [
3691
+ "id"
3692
+ ]
3693
+ },
3694
+ {
3695
+ "name": "voice_sessions_slug_context_idx",
3696
+ "columns": [
3697
+ "slug",
3698
+ "context"
3699
+ ],
3700
+ "unique": true
3701
+ }
3702
+ ],
3703
+ "version": "d9f462ed"
3704
+ }
2802
3705
  }
2803
3706
  },
2804
3707
  "moduleType": "smrt",