rivet-design 0.14.13 → 0.14.14

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 (71) hide show
  1. package/dist/agent-variants/contracts.d.ts +30 -30
  2. package/dist/cli/commands/mcpServe.d.ts +1 -1
  3. package/dist/index.d.ts +0 -9
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +1 -96
  6. package/dist/index.js.map +1 -1
  7. package/dist/proxy-middleware/proxy-config.d.ts.map +1 -1
  8. package/dist/proxy-middleware/proxy-config.js +33 -19
  9. package/dist/proxy-middleware/proxy-config.js.map +1 -1
  10. package/dist/server.d.ts +0 -19
  11. package/dist/server.d.ts.map +1 -1
  12. package/dist/server.js +17 -491
  13. package/dist/server.js.map +1 -1
  14. package/dist/services/AuthService.d.ts +1 -1
  15. package/dist/services/AuthService.d.ts.map +1 -1
  16. package/dist/services/AuthService.js +5 -4
  17. package/dist/services/AuthService.js.map +1 -1
  18. package/dist/services/MCPOnboardingTelemetry.d.ts +2 -2
  19. package/dist/services/MCPOnboardingTelemetry.d.ts.map +1 -1
  20. package/dist/services/MCPOnboardingTelemetry.js +0 -3
  21. package/dist/services/MCPOnboardingTelemetry.js.map +1 -1
  22. package/dist/services/TelemetryService.d.ts +1 -96
  23. package/dist/services/TelemetryService.d.ts.map +1 -1
  24. package/dist/services/TelemetryService.js +0 -198
  25. package/dist/services/TelemetryService.js.map +1 -1
  26. package/dist/services/accessTokenRefresh.d.ts +0 -11
  27. package/dist/services/accessTokenRefresh.d.ts.map +1 -1
  28. package/dist/services/accessTokenRefresh.js +4 -24
  29. package/dist/services/accessTokenRefresh.js.map +1 -1
  30. package/package.json +1 -3
  31. package/src/ui/dist/assets/main-CHUtDutm.js +422 -0
  32. package/src/ui/dist/assets/main-CrLtwwgK.css +1 -0
  33. package/src/ui/dist/index.html +2 -2
  34. package/dist/demo/sessionRuntime.d.ts +0 -2
  35. package/dist/demo/sessionRuntime.d.ts.map +0 -1
  36. package/dist/demo/sessionRuntime.js +0 -48
  37. package/dist/demo/sessionRuntime.js.map +0 -1
  38. package/dist/hosted-demo.d.ts +0 -2
  39. package/dist/hosted-demo.d.ts.map +0 -1
  40. package/dist/hosted-demo.js +0 -83
  41. package/dist/hosted-demo.js.map +0 -1
  42. package/dist/routes/demo.d.ts +0 -33
  43. package/dist/routes/demo.d.ts.map +0 -1
  44. package/dist/routes/demo.js +0 -180
  45. package/dist/routes/demo.js.map +0 -1
  46. package/dist/services/HostedDemoAuthSessionService.d.ts +0 -50
  47. package/dist/services/HostedDemoAuthSessionService.d.ts.map +0 -1
  48. package/dist/services/HostedDemoAuthSessionService.js +0 -192
  49. package/dist/services/HostedDemoAuthSessionService.js.map +0 -1
  50. package/dist/services/HostedDemoAuthSessionStore.d.ts +0 -44
  51. package/dist/services/HostedDemoAuthSessionStore.d.ts.map +0 -1
  52. package/dist/services/HostedDemoAuthSessionStore.js +0 -90
  53. package/dist/services/HostedDemoAuthSessionStore.js.map +0 -1
  54. package/dist/services/HostedDemoSessionService.d.ts +0 -91
  55. package/dist/services/HostedDemoSessionService.d.ts.map +0 -1
  56. package/dist/services/HostedDemoSessionService.js +0 -568
  57. package/dist/services/HostedDemoSessionService.js.map +0 -1
  58. package/dist/services/HostedDemoSessionStore.d.ts +0 -49
  59. package/dist/services/HostedDemoSessionStore.d.ts.map +0 -1
  60. package/dist/services/HostedDemoSessionStore.js +0 -90
  61. package/dist/services/HostedDemoSessionStore.js.map +0 -1
  62. package/dist/services/hostedDemoSessionAuthRefresh.d.ts +0 -18
  63. package/dist/services/hostedDemoSessionAuthRefresh.d.ts.map +0 -1
  64. package/dist/services/hostedDemoSessionAuthRefresh.js +0 -39
  65. package/dist/services/hostedDemoSessionAuthRefresh.js.map +0 -1
  66. package/dist/utils/shouldRecordHostedDemoSessionAction.d.ts +0 -8
  67. package/dist/utils/shouldRecordHostedDemoSessionAction.d.ts.map +0 -1
  68. package/dist/utils/shouldRecordHostedDemoSessionAction.js +0 -11
  69. package/dist/utils/shouldRecordHostedDemoSessionAction.js.map +0 -1
  70. package/src/ui/dist/assets/main-BfVGaiD6.js +0 -422
  71. package/src/ui/dist/assets/main-CobdEReL.css +0 -1
@@ -1,192 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.HostedDemoAuthSessionService = void 0;
4
- const crypto_1 = require("crypto");
5
- const logger_1 = require("../utils/logger");
6
- const HostedDemoAuthSessionStore_1 = require("./HostedDemoAuthSessionStore");
7
- const AUTH_SESSION_COOKIE_NAME = 'rivet_demo_auth_session';
8
- const AUTH_SESSION_TTL_MS = 12 * 60 * 60 * 1000;
9
- const AUTH_SESSION_CLEANUP_INTERVAL_MS = 5 * 60 * 1000;
10
- const log = (0, logger_1.createLogger)('HostedDemoAuthSessionService');
11
- /**
12
- * Stores browser-scoped auth state for hosted demo mode.
13
- */
14
- class HostedDemoAuthSessionService {
15
- authBySessionId = new Map();
16
- cleanupTimer;
17
- store;
18
- now;
19
- constructor(options) {
20
- this.store = options?.store ?? new HostedDemoAuthSessionStore_1.InMemoryHostedDemoAuthSessionStore();
21
- this.now = options?.now ?? (() => Date.now());
22
- this.cleanupTimer = setInterval(() => {
23
- this.cleanupExpiredSessions();
24
- }, AUTH_SESSION_CLEANUP_INTERVAL_MS);
25
- this.cleanupTimer.unref();
26
- }
27
- async initialize() {
28
- await this.store.initialize();
29
- const records = await this.store.loadAll();
30
- for (const { sessionId, value } of records) {
31
- if (this.now() - value.updatedAt > AUTH_SESSION_TTL_MS) {
32
- void this.store.delete(sessionId);
33
- continue;
34
- }
35
- this.authBySessionId.set(sessionId, value);
36
- }
37
- }
38
- getCookieSessionId(req) {
39
- const cookieHeader = req.headers.cookie;
40
- if (!cookieHeader) {
41
- return null;
42
- }
43
- const pairs = cookieHeader.split(';');
44
- for (const pair of pairs) {
45
- const [rawName, rawValue] = pair.split('=');
46
- if (!rawName || !rawValue) {
47
- continue;
48
- }
49
- if (rawName.trim() !== AUTH_SESSION_COOKIE_NAME) {
50
- continue;
51
- }
52
- return decodeURIComponent(rawValue.trim());
53
- }
54
- return null;
55
- }
56
- setCookieSessionId(res, sessionId) {
57
- res.cookie(AUTH_SESSION_COOKIE_NAME, sessionId, {
58
- httpOnly: true,
59
- sameSite: 'lax',
60
- secure: process.env.NODE_ENV === 'production',
61
- maxAge: AUTH_SESSION_TTL_MS,
62
- path: '/',
63
- });
64
- }
65
- getOrCreateSessionId(req, res) {
66
- const existingSessionId = this.getCookieSessionId(req);
67
- if (existingSessionId) {
68
- this.setCookieSessionId(res, existingSessionId);
69
- return existingSessionId;
70
- }
71
- const sessionId = (0, crypto_1.randomUUID)();
72
- this.setCookieSessionId(res, sessionId);
73
- return sessionId;
74
- }
75
- getAuthForRequest(req) {
76
- const sessionId = this.getCookieSessionId(req);
77
- if (!sessionId) {
78
- return null;
79
- }
80
- return this.getAuthForSessionId(sessionId);
81
- }
82
- getAuthForSessionId(sessionId) {
83
- if (!sessionId) {
84
- return null;
85
- }
86
- const existingAuth = this.authBySessionId.get(sessionId);
87
- if (!existingAuth) {
88
- return null;
89
- }
90
- if (this.now() - existingAuth.updatedAt > AUTH_SESSION_TTL_MS) {
91
- this.authBySessionId.delete(sessionId);
92
- void this.store.delete(sessionId);
93
- return null;
94
- }
95
- return existingAuth;
96
- }
97
- storeAuthForRequest(req, res, auth) {
98
- const sessionId = this.getOrCreateSessionId(req, res);
99
- return this.storeAuthForSessionId(sessionId, res, auth);
100
- }
101
- storeAuthForSessionId(sessionId, res, auth) {
102
- const existingAuth = this.getAuthForSessionId(sessionId);
103
- this.setCookieSessionId(res, sessionId);
104
- const nextValue = {
105
- activeDemoSessionId: existingAuth?.activeDemoSessionId,
106
- ...auth,
107
- updatedAt: this.now(),
108
- };
109
- this.authBySessionId.set(sessionId, nextValue);
110
- this.persist(sessionId, nextValue);
111
- return sessionId;
112
- }
113
- getActiveDemoSessionIdForRequest(req) {
114
- const auth = this.getAuthForRequest(req);
115
- return auth?.activeDemoSessionId ?? null;
116
- }
117
- storeActiveDemoSessionIdForRequest(req, res, demoSessionId) {
118
- const sessionId = this.getOrCreateSessionId(req, res);
119
- this.storeActiveDemoSessionIdForSessionId(sessionId, res, demoSessionId);
120
- }
121
- storeActiveDemoSessionIdForSessionId(sessionId, res, demoSessionId) {
122
- const existingAuth = this.getAuthForSessionId(sessionId);
123
- if (!existingAuth) {
124
- return;
125
- }
126
- this.setCookieSessionId(res, sessionId);
127
- const nextValue = {
128
- ...existingAuth,
129
- activeDemoSessionId: demoSessionId,
130
- updatedAt: this.now(),
131
- };
132
- this.authBySessionId.set(sessionId, nextValue);
133
- this.persist(sessionId, nextValue);
134
- }
135
- clearActiveDemoSessionIdForRequest(req, res) {
136
- const sessionId = this.getCookieSessionId(req);
137
- if (!sessionId) {
138
- return;
139
- }
140
- this.clearActiveDemoSessionIdForSessionId(sessionId, res);
141
- }
142
- clearActiveDemoSessionIdForSessionId(sessionId, res) {
143
- const existingAuth = this.getAuthForSessionId(sessionId);
144
- if (!existingAuth) {
145
- return;
146
- }
147
- this.setCookieSessionId(res, sessionId);
148
- const nextValue = {
149
- ...existingAuth,
150
- updatedAt: this.now(),
151
- };
152
- delete nextValue.activeDemoSessionId;
153
- this.authBySessionId.set(sessionId, nextValue);
154
- this.persist(sessionId, nextValue);
155
- }
156
- /**
157
- * Fully clears the browser-scoped auth for this request (logout): drops the
158
- * in-memory + persisted record and expires the session cookie so the next
159
- * /api/config read sees an unauthenticated session.
160
- */
161
- clearAuthForRequest(req, res) {
162
- const sessionId = this.getCookieSessionId(req);
163
- if (sessionId) {
164
- this.authBySessionId.delete(sessionId);
165
- void this.store.delete(sessionId);
166
- }
167
- res.clearCookie(AUTH_SESSION_COOKIE_NAME, { path: '/' });
168
- }
169
- shutdown() {
170
- clearInterval(this.cleanupTimer);
171
- this.authBySessionId.clear();
172
- void this.store.shutdown();
173
- }
174
- cleanupExpiredSessions() {
175
- const now = this.now();
176
- for (const [sessionId, value] of this.authBySessionId.entries()) {
177
- if (now - value.updatedAt > AUTH_SESSION_TTL_MS) {
178
- this.authBySessionId.delete(sessionId);
179
- void this.store.delete(sessionId);
180
- }
181
- }
182
- }
183
- persist(sessionId, value) {
184
- void this.store
185
- .set(sessionId, value, AUTH_SESSION_TTL_MS)
186
- .catch((error) => {
187
- log.warn('Failed to persist hosted demo auth session:', error);
188
- });
189
- }
190
- }
191
- exports.HostedDemoAuthSessionService = HostedDemoAuthSessionService;
192
- //# sourceMappingURL=HostedDemoAuthSessionService.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"HostedDemoAuthSessionService.js","sourceRoot":"","sources":["../../src/services/HostedDemoAuthSessionService.ts"],"names":[],"mappings":";;;AAAA,mCAAoC;AAEpC,4CAA+C;AAC/C,6EAIsC;AAItC,MAAM,wBAAwB,GAAG,yBAAyB,CAAC;AAC3D,MAAM,mBAAmB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAChD,MAAM,gCAAgC,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AACvD,MAAM,GAAG,GAAG,IAAA,qBAAY,EAAC,8BAA8B,CAAC,CAAC;AAEzD;;GAEG;AACH,MAAa,4BAA4B;IACtB,eAAe,GAAG,IAAI,GAAG,EAAsC,CAAC;IAChE,YAAY,CAAiC;IAC7C,KAAK,CAA6B;IAClC,GAAG,CAAe;IAEnC,YAAY,OAAoE;QAC9E,IAAI,CAAC,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,IAAI,+DAAkC,EAAE,CAAC;QACxE,IAAI,CAAC,GAAG,GAAG,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE;YACnC,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAChC,CAAC,EAAE,gCAAgC,CAAC,CAAC;QACrC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QAC3C,KAAK,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,OAAO,EAAE,CAAC;YAC3C,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,GAAG,mBAAmB,EAAE,CAAC;gBACvD,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAClC,SAAS;YACX,CAAC;YACD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAEO,kBAAkB,CAAC,GAAY;QACrC,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;QACxC,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC5C,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC1B,SAAS;YACX,CAAC;YACD,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,wBAAwB,EAAE,CAAC;gBAChD,SAAS;YACX,CAAC;YACD,OAAO,kBAAkB,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,kBAAkB,CAAC,GAAa,EAAE,SAAiB;QACzD,GAAG,CAAC,MAAM,CAAC,wBAAwB,EAAE,SAAS,EAAE;YAC9C,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY;YAC7C,MAAM,EAAE,mBAAmB;YAC3B,IAAI,EAAE,GAAG;SACV,CAAC,CAAC;IACL,CAAC;IAED,oBAAoB,CAAC,GAAY,EAAE,GAAa;QAC9C,MAAM,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;QACvD,IAAI,iBAAiB,EAAE,CAAC;YACtB,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;YAChD,OAAO,iBAAiB,CAAC;QAC3B,CAAC;QAED,MAAM,SAAS,GAAG,IAAA,mBAAU,GAAE,CAAC;QAC/B,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QACxC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,iBAAiB,CAAC,GAAY;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;QAC/C,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAC7C,CAAC;IAED,mBAAmB,CAAC,SAAiB;QACnC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACzD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC,SAAS,GAAG,mBAAmB,EAAE,CAAC;YAC9D,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACvC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,mBAAmB,CACjB,GAAY,EACZ,GAAa,EACb,IAA8E;QAE9E,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAC1D,CAAC;IAED,qBAAqB,CACnB,SAAiB,EACjB,GAAa,EACb,IAA8E;QAE9E,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QACzD,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QACxC,MAAM,SAAS,GAA+B;YAC5C,mBAAmB,EAAE,YAAY,EAAE,mBAAmB;YACtD,GAAG,IAAI;YACP,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;QACF,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACnC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,gCAAgC,CAAC,GAAY;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACzC,OAAO,IAAI,EAAE,mBAAmB,IAAI,IAAI,CAAC;IAC3C,CAAC;IAED,kCAAkC,CAChC,GAAY,EACZ,GAAa,EACb,aAAqB;QAErB,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACtD,IAAI,CAAC,oCAAoC,CAAC,SAAS,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC;IAC3E,CAAC;IAED,oCAAoC,CAClC,SAAiB,EACjB,GAAa,EACb,aAAqB;QAErB,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QACzD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QACxC,MAAM,SAAS,GAA+B;YAC5C,GAAG,YAAY;YACf,mBAAmB,EAAE,aAAa;YAClC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;QACF,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACrC,CAAC;IAED,kCAAkC,CAAC,GAAY,EAAE,GAAa;QAC5D,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;QAC/C,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QACD,IAAI,CAAC,oCAAoC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAC5D,CAAC;IAED,oCAAoC,CAClC,SAAiB,EACjB,GAAa;QAEb,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QACzD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QACxC,MAAM,SAAS,GAA+B;YAC5C,GAAG,YAAY;YACf,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;QACF,OAAO,SAAS,CAAC,mBAAmB,CAAC;QACrC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACrC,CAAC;IAED;;;;OAIG;IACH,mBAAmB,CAAC,GAAY,EAAE,GAAa;QAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;QAC/C,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACvC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC;QACD,GAAG,CAAC,WAAW,CAAC,wBAAwB,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,QAAQ;QACN,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACjC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAC7B,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC7B,CAAC;IAEO,sBAAsB;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,EAAE,CAAC;YAChE,IAAI,GAAG,GAAG,KAAK,CAAC,SAAS,GAAG,mBAAmB,EAAE,CAAC;gBAChD,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBACvC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;IACH,CAAC;IAEO,OAAO,CAAC,SAAiB,EAAE,KAAiC;QAClE,KAAK,IAAI,CAAC,KAAK;aACZ,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,mBAAmB,CAAC;aAC1C,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACf,GAAG,CAAC,IAAI,CAAC,6CAA6C,EAAE,KAAK,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;IACP,CAAC;CACF;AA1ND,oEA0NC"}
@@ -1,44 +0,0 @@
1
- export type HostedDemoAuthStoreValue = {
2
- token: string;
3
- email: string;
4
- userId?: string;
5
- refreshToken?: string;
6
- activeDemoSessionId?: string;
7
- updatedAt: number;
8
- };
9
- export type HostedDemoAuthStoreRecord = {
10
- sessionId: string;
11
- value: HostedDemoAuthStoreValue;
12
- };
13
- export type HostedDemoAuthSessionStore = {
14
- initialize: () => Promise<void>;
15
- loadAll: () => Promise<HostedDemoAuthStoreRecord[]>;
16
- set: (sessionId: string, value: HostedDemoAuthStoreValue, ttlMs: number) => Promise<void>;
17
- delete: (sessionId: string) => Promise<void>;
18
- shutdown: () => Promise<void>;
19
- };
20
- export declare class InMemoryHostedDemoAuthSessionStore implements HostedDemoAuthSessionStore {
21
- private readonly records;
22
- initialize(): Promise<void>;
23
- loadAll(): Promise<HostedDemoAuthStoreRecord[]>;
24
- set(sessionId: string, value: HostedDemoAuthStoreValue, _ttlMs: number): Promise<void>;
25
- delete(sessionId: string): Promise<void>;
26
- shutdown(): Promise<void>;
27
- }
28
- type RedisHostedDemoAuthSessionStoreOptions = {
29
- redisUrl: string;
30
- keyPrefix: string;
31
- };
32
- export declare class RedisHostedDemoAuthSessionStore implements HostedDemoAuthSessionStore {
33
- private readonly client;
34
- private readonly keyPrefix;
35
- constructor(options: RedisHostedDemoAuthSessionStoreOptions);
36
- initialize(): Promise<void>;
37
- loadAll(): Promise<HostedDemoAuthStoreRecord[]>;
38
- set(sessionId: string, value: HostedDemoAuthStoreValue, ttlMs: number): Promise<void>;
39
- delete(sessionId: string): Promise<void>;
40
- shutdown(): Promise<void>;
41
- private getKey;
42
- }
43
- export {};
44
- //# sourceMappingURL=HostedDemoAuthSessionStore.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"HostedDemoAuthSessionStore.d.ts","sourceRoot":"","sources":["../../src/services/HostedDemoAuthSessionStore.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,wBAAwB,GAAG;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,wBAAwB,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,OAAO,EAAE,MAAM,OAAO,CAAC,yBAAyB,EAAE,CAAC,CAAC;IACpD,GAAG,EAAE,CACH,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,wBAAwB,EAC/B,KAAK,EAAE,MAAM,KACV,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B,CAAC;AAEF,qBAAa,kCACX,YAAW,0BAA0B;IAErC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+C;IAEjE,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,OAAO,IAAI,OAAO,CAAC,yBAAyB,EAAE,CAAC;IAO/C,GAAG,CACP,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,wBAAwB,EAC/B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC;IAIV,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAGhC;AAED,KAAK,sCAAsC,GAAG;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,qBAAa,+BAAgC,YAAW,0BAA0B;IAChF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEvB,OAAO,EAAE,sCAAsC;IAKrD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAU3B,OAAO,IAAI,OAAO,CAAC,yBAAyB,EAAE,CAAC;IA6B/C,GAAG,CACP,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,wBAAwB,EAC/B,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC;IAMV,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAM/B,OAAO,CAAC,MAAM;CAGf"}
@@ -1,90 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RedisHostedDemoAuthSessionStore = exports.InMemoryHostedDemoAuthSessionStore = void 0;
4
- const redis_1 = require("redis");
5
- const logger_1 = require("../utils/logger");
6
- const log = (0, logger_1.createLogger)('HostedDemoAuthSessionStore');
7
- class InMemoryHostedDemoAuthSessionStore {
8
- records = new Map();
9
- async initialize() {
10
- return Promise.resolve();
11
- }
12
- async loadAll() {
13
- return [...this.records.entries()].map(([sessionId, value]) => ({
14
- sessionId,
15
- value,
16
- }));
17
- }
18
- async set(sessionId, value, _ttlMs) {
19
- this.records.set(sessionId, value);
20
- }
21
- async delete(sessionId) {
22
- this.records.delete(sessionId);
23
- }
24
- async shutdown() {
25
- this.records.clear();
26
- }
27
- }
28
- exports.InMemoryHostedDemoAuthSessionStore = InMemoryHostedDemoAuthSessionStore;
29
- class RedisHostedDemoAuthSessionStore {
30
- client;
31
- keyPrefix;
32
- constructor(options) {
33
- this.client = (0, redis_1.createClient)({ url: options.redisUrl });
34
- this.keyPrefix = options.keyPrefix;
35
- }
36
- async initialize() {
37
- if (this.client.isOpen) {
38
- return;
39
- }
40
- this.client.on('error', (error) => {
41
- log.warn('Redis auth session store error:', error);
42
- });
43
- await this.client.connect();
44
- }
45
- async loadAll() {
46
- const records = [];
47
- for await (const keyOrChunk of this.client.scanIterator({
48
- MATCH: `${this.keyPrefix}:*`,
49
- COUNT: 100,
50
- })) {
51
- const keys = Array.isArray(keyOrChunk) ? keyOrChunk : [keyOrChunk];
52
- for (const key of keys) {
53
- const raw = await this.client.get(key);
54
- if (!raw) {
55
- continue;
56
- }
57
- const sessionId = key.slice(`${this.keyPrefix}:`.length);
58
- if (!sessionId) {
59
- continue;
60
- }
61
- try {
62
- const value = JSON.parse(raw);
63
- records.push({ sessionId, value });
64
- }
65
- catch (error) {
66
- log.warn(`Failed to parse auth session payload for ${sessionId}:`, error);
67
- }
68
- }
69
- }
70
- return records;
71
- }
72
- async set(sessionId, value, ttlMs) {
73
- await this.client.set(this.getKey(sessionId), JSON.stringify(value), {
74
- PX: ttlMs,
75
- });
76
- }
77
- async delete(sessionId) {
78
- await this.client.del(this.getKey(sessionId));
79
- }
80
- async shutdown() {
81
- if (this.client.isOpen) {
82
- await this.client.quit();
83
- }
84
- }
85
- getKey(sessionId) {
86
- return `${this.keyPrefix}:${sessionId}`;
87
- }
88
- }
89
- exports.RedisHostedDemoAuthSessionStore = RedisHostedDemoAuthSessionStore;
90
- //# sourceMappingURL=HostedDemoAuthSessionStore.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"HostedDemoAuthSessionStore.js","sourceRoot":"","sources":["../../src/services/HostedDemoAuthSessionStore.ts"],"names":[],"mappings":"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"}
@@ -1,91 +0,0 @@
1
- import { type ChildProcess } from 'child_process';
2
- import { TelemetryService } from './TelemetryService';
3
- import { type HostedDemoSessionPersistedRuntimeState, type HostedDemoSessionStore } from './HostedDemoSessionStore';
4
- export type HostedDemoSession = {
5
- sessionId: string;
6
- userId: string;
7
- createdAt: number;
8
- expiresAt: number;
9
- lastActionAt: number;
10
- worktreePath: string;
11
- projectPath: string;
12
- rivetPort: number;
13
- runtimeState: HostedDemoSessionPersistedRuntimeState;
14
- };
15
- export type HostedDemoSessionWithUrl = HostedDemoSession & {
16
- sessionUrl: string;
17
- };
18
- type RuntimeStartParams = {
19
- projectPath: string;
20
- rivetPort: number;
21
- sessionId: string;
22
- };
23
- type HostedDemoRuntimeDeps = {
24
- now?: () => number;
25
- runGitCommand?: (repoPath: string, args: string[]) => Promise<void>;
26
- startRuntime?: (params: RuntimeStartParams) => Promise<ChildProcess>;
27
- stopRuntime?: (runtimeProcess: ChildProcess) => Promise<void>;
28
- waitForRuntimeHealth?: (rivetPort: number) => Promise<void>;
29
- };
30
- export type HostedDemoSessionConfig = {
31
- repoPath: string;
32
- templateProjectPath: string;
33
- telemetry?: TelemetryService;
34
- worktreesRootPath?: string;
35
- sessionTtlMs?: number;
36
- sessionIdleTtlMs?: number;
37
- maxActiveSessions?: number;
38
- baseRivetPort?: number;
39
- publicBaseUrl?: string;
40
- sessionMetadataStore?: HostedDemoSessionStore;
41
- };
42
- export declare class HostedDemoSessionService {
43
- private readonly config;
44
- private readonly deps;
45
- private readonly telemetry;
46
- private readonly sessionStore;
47
- private readonly sessions;
48
- private pendingSessionCreations;
49
- private readonly cleanupTimer;
50
- private readonly rehydrationLocks;
51
- constructor(config: HostedDemoSessionConfig, deps?: HostedDemoRuntimeDeps);
52
- /**
53
- * Loads durable session rows into memory so stopped sessions can be rehydrated after deploy.
54
- */
55
- initialize(): Promise<void>;
56
- createSession(userId: string): Promise<HostedDemoSessionWithUrl>;
57
- getActiveSessionCount(): number;
58
- getTemplateProjectPath(): string;
59
- getSession(sessionId: string): HostedDemoSession | null;
60
- getSessionOwnerUserId(sessionId: string): string | null;
61
- /**
62
- * Records a Rivet user action for idle TTL (does not extend idle on passive polling).
63
- */
64
- recordSessionAction(sessionId: string): Promise<void>;
65
- getSessionProxyTarget(sessionId: string): string | null;
66
- /**
67
- * Starts the per-session runtime when it was stopped for idle or after process restart.
68
- */
69
- ensureRuntimeReady(sessionId: string): Promise<void>;
70
- closeSession(sessionId: string, options?: {
71
- removeWorktree?: boolean;
72
- }): Promise<void>;
73
- shutdown(): Promise<void>;
74
- private readonly countRunningOrStartingSessions;
75
- private readonly persistSession;
76
- private readonly toPersisted;
77
- private readonly internalFromPersisted;
78
- private readonly runRehydration;
79
- private readonly stopRuntimeForIdle;
80
- private readonly cleanupExpiredSessions;
81
- private readonly safeRemoveWorktree;
82
- private readonly toErrorType;
83
- getSessionUrl(sessionId: string): string;
84
- private readonly toPublicSession;
85
- private readonly defaultRunGitCommand;
86
- private readonly defaultStartRuntime;
87
- private readonly defaultStopRuntime;
88
- private readonly defaultWaitForRuntimeHealth;
89
- }
90
- export {};
91
- //# sourceMappingURL=HostedDemoSessionService.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"HostedDemoSessionService.d.ts","sourceRoot":"","sources":["../../src/services/HostedDemoSessionService.ts"],"names":[],"mappings":"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"}