@intella/sdk 0.0.8 → 0.0.9
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.
- package/README.md +70 -6
- package/dist/agent-manager.d.ts +4 -4
- package/dist/agent-manager.d.ts.map +1 -1
- package/dist/agent-manager.js +12 -7
- package/dist/agent-manager.js.map +1 -1
- package/dist/agents/base-agent.d.ts +35 -2
- package/dist/agents/base-agent.d.ts.map +1 -1
- package/dist/agents/base-agent.js +280 -24
- package/dist/agents/base-agent.js.map +1 -1
- package/dist/agents/claude-agent.d.ts +1 -1
- package/dist/agents/claude-agent.d.ts.map +1 -1
- package/dist/agents/claude-agent.js +2 -1
- package/dist/agents/claude-agent.js.map +1 -1
- package/dist/agents/codex-agent.d.ts +1 -1
- package/dist/agents/codex-agent.d.ts.map +1 -1
- package/dist/agents/codex-agent.js +2 -1
- package/dist/agents/codex-agent.js.map +1 -1
- package/dist/agents/intella-lite-agent.d.ts +1 -1
- package/dist/agents/intella-lite-agent.d.ts.map +1 -1
- package/dist/agents/intella-lite-agent.js +2 -1
- package/dist/agents/intella-lite-agent.js.map +1 -1
- package/dist/agents/opencode-agent.d.ts +1 -1
- package/dist/agents/opencode-agent.d.ts.map +1 -1
- package/dist/agents/opencode-agent.js +2 -3
- package/dist/agents/opencode-agent.js.map +1 -1
- package/dist/index.d.ts +22 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +31 -11
- package/dist/index.js.map +1 -1
- package/dist/sandbox/{agent-installers.d.ts → agents/agent-installers.d.ts} +1 -1
- package/dist/sandbox/agents/agent-installers.d.ts.map +1 -0
- package/dist/sandbox/{agent-installers.js → agents/agent-installers.js} +5 -4
- package/dist/sandbox/agents/agent-installers.js.map +1 -0
- package/dist/sandbox/{agent-setup.d.ts → agents/agent-setup.d.ts} +1 -1
- package/dist/sandbox/agents/agent-setup.d.ts.map +1 -0
- package/dist/sandbox/{agent-setup.js → agents/agent-setup.js} +3 -2
- package/dist/sandbox/agents/agent-setup.js.map +1 -0
- package/dist/sandbox/agents/agents.d.ts +49 -0
- package/dist/sandbox/agents/agents.d.ts.map +1 -0
- package/dist/sandbox/agents/agents.js +71 -0
- package/dist/sandbox/agents/agents.js.map +1 -0
- package/dist/sandbox/config.d.ts +1 -1
- package/dist/sandbox/config.d.ts.map +1 -1
- package/dist/sandbox/config.js +26 -18
- package/dist/sandbox/config.js.map +1 -1
- package/dist/sandbox/file-utils.d.ts +20 -0
- package/dist/sandbox/file-utils.d.ts.map +1 -0
- package/dist/sandbox/file-utils.js +101 -0
- package/dist/sandbox/file-utils.js.map +1 -0
- package/dist/sandbox/operations/code-operations.d.ts +68 -0
- package/dist/sandbox/operations/code-operations.d.ts.map +1 -0
- package/dist/sandbox/operations/code-operations.js +208 -0
- package/dist/sandbox/operations/code-operations.js.map +1 -0
- package/dist/sandbox/operations/git-operations.d.ts +27 -0
- package/dist/sandbox/operations/git-operations.d.ts.map +1 -0
- package/dist/sandbox/operations/git-operations.js +235 -0
- package/dist/sandbox/operations/git-operations.js.map +1 -0
- package/dist/sandbox/providers/base-provider.d.ts +283 -0
- package/dist/sandbox/providers/base-provider.d.ts.map +1 -0
- package/dist/sandbox/providers/base-provider.js +816 -0
- package/dist/sandbox/providers/base-provider.js.map +1 -0
- package/dist/sandbox/{daytona-provider.d.ts → providers/daytona-provider.d.ts} +19 -16
- package/dist/sandbox/providers/daytona-provider.d.ts.map +1 -0
- package/dist/sandbox/{daytona-provider.js → providers/daytona-provider.js} +96 -27
- package/dist/sandbox/providers/daytona-provider.js.map +1 -0
- package/dist/sandbox/{e2b-provider.d.ts → providers/e2b-provider.d.ts} +16 -10
- package/dist/sandbox/providers/e2b-provider.d.ts.map +1 -0
- package/dist/sandbox/{e2b-provider.js → providers/e2b-provider.js} +51 -29
- package/dist/sandbox/providers/e2b-provider.js.map +1 -0
- package/dist/sandbox/{local-provider.d.ts → providers/local-provider.d.ts} +12 -6
- package/dist/sandbox/providers/local-provider.d.ts.map +1 -0
- package/dist/sandbox/{local-provider.js → providers/local-provider.js} +24 -21
- package/dist/sandbox/providers/local-provider.js.map +1 -0
- package/dist/sandbox/{modal-provider.d.ts → providers/modal-provider.d.ts} +18 -12
- package/dist/sandbox/providers/modal-provider.d.ts.map +1 -0
- package/dist/sandbox/{modal-provider.js → providers/modal-provider.js} +49 -29
- package/dist/sandbox/providers/modal-provider.js.map +1 -0
- package/dist/sandbox/{vercel-provider.d.ts → providers/vercel-provider.d.ts} +19 -14
- package/dist/sandbox/providers/vercel-provider.d.ts.map +1 -0
- package/dist/sandbox/{vercel-provider.js → providers/vercel-provider.js} +41 -42
- package/dist/sandbox/providers/vercel-provider.js.map +1 -0
- package/dist/sandbox/utils/detector.d.ts +28 -0
- package/dist/sandbox/utils/detector.d.ts.map +1 -0
- package/dist/sandbox/utils/detector.js +243 -0
- package/dist/sandbox/utils/detector.js.map +1 -0
- package/dist/sandbox-manager.js +5 -5
- package/dist/sandbox-manager.js.map +1 -1
- package/dist/sdk.d.ts +4 -3
- package/dist/sdk.d.ts.map +1 -1
- package/dist/sdk.js +7 -3
- package/dist/sdk.js.map +1 -1
- package/dist/session/execution-store.d.ts +71 -0
- package/dist/session/execution-store.d.ts.map +1 -0
- package/dist/session/execution-store.js +156 -0
- package/dist/session/execution-store.js.map +1 -0
- package/dist/session/index.d.ts +14 -0
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/index.js +20 -0
- package/dist/session/index.js.map +1 -0
- package/dist/session/manager.d.ts +164 -0
- package/dist/session/manager.d.ts.map +1 -0
- package/dist/session/manager.js +493 -0
- package/dist/session/manager.js.map +1 -0
- package/dist/session/store.d.ts +20 -0
- package/dist/session/store.d.ts.map +1 -0
- package/dist/session/store.js +69 -0
- package/dist/session/store.js.map +1 -0
- package/dist/session/types.d.ts +57 -0
- package/dist/session/types.d.ts.map +1 -0
- package/dist/session/types.js +2 -0
- package/dist/session/types.js.map +1 -0
- package/dist/types.d.ts +622 -19
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +35 -0
- package/dist/types.js.map +1 -1
- package/dist/utils/cli-daemon.d.ts.map +1 -1
- package/dist/utils/cli-daemon.js +1 -3
- package/dist/utils/cli-daemon.js.map +1 -1
- package/dist/utils/machine-id.d.ts +8 -0
- package/dist/utils/machine-id.d.ts.map +1 -0
- package/dist/utils/machine-id.js +19 -0
- package/dist/utils/machine-id.js.map +1 -0
- package/dist/utils/redis/client.d.ts +18 -0
- package/dist/utils/redis/client.d.ts.map +1 -0
- package/dist/utils/redis/client.js +52 -0
- package/dist/utils/redis/client.js.map +1 -0
- package/dist/utils/redis/index.d.ts +2 -0
- package/dist/utils/redis/index.d.ts.map +1 -0
- package/dist/utils/redis/index.js +2 -0
- package/dist/utils/redis/index.js.map +1 -0
- package/dist/utils/{redis-stream.d.ts → redis/stream.d.ts} +41 -74
- package/dist/utils/redis/stream.d.ts.map +1 -0
- package/dist/utils/{redis-stream.js → redis/stream.js} +133 -69
- package/dist/utils/redis/stream.js.map +1 -0
- package/dist/utils/repo-context.d.ts +16 -0
- package/dist/utils/repo-context.d.ts.map +1 -0
- package/dist/utils/repo-context.js +65 -0
- package/dist/utils/repo-context.js.map +1 -0
- package/dist/utils/tool-response.d.ts +20 -0
- package/dist/utils/tool-response.d.ts.map +1 -0
- package/dist/utils/tool-response.js +68 -0
- package/dist/utils/tool-response.js.map +1 -0
- package/package.json +22 -7
- package/dist/sandbox/agent-installers.d.ts.map +0 -1
- package/dist/sandbox/agent-installers.js.map +0 -1
- package/dist/sandbox/agent-setup.d.ts.map +0 -1
- package/dist/sandbox/agent-setup.js.map +0 -1
- package/dist/sandbox/base-provider.d.ts +0 -106
- package/dist/sandbox/base-provider.d.ts.map +0 -1
- package/dist/sandbox/base-provider.js +0 -74
- package/dist/sandbox/base-provider.js.map +0 -1
- package/dist/sandbox/daytona-provider.d.ts.map +0 -1
- package/dist/sandbox/daytona-provider.js.map +0 -1
- package/dist/sandbox/e2b-provider.d.ts.map +0 -1
- package/dist/sandbox/e2b-provider.js.map +0 -1
- package/dist/sandbox/local-provider.d.ts.map +0 -1
- package/dist/sandbox/local-provider.js.map +0 -1
- package/dist/sandbox/modal-provider.d.ts.map +0 -1
- package/dist/sandbox/modal-provider.js.map +0 -1
- package/dist/sandbox/vercel-provider.d.ts.map +0 -1
- package/dist/sandbox/vercel-provider.js.map +0 -1
- package/dist/utils/redis-stream.d.ts.map +0 -1
- package/dist/utils/redis-stream.js.map +0 -1
|
@@ -0,0 +1,493 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session Manager
|
|
3
|
+
*
|
|
4
|
+
* Provides session management for both local and sandbox modes.
|
|
5
|
+
* Local mode: Creates and manages sessions on the current machine.
|
|
6
|
+
* Sandbox mode: Publishes session:init commands to an already-running sandbox daemon.
|
|
7
|
+
*/
|
|
8
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync, readdirSync, unlinkSync, rmSync } from 'fs';
|
|
9
|
+
import { join } from 'path';
|
|
10
|
+
import { homedir } from 'os';
|
|
11
|
+
import { publishCommand, waitForSuccess } from '../utils/redis/stream.js';
|
|
12
|
+
import { IdGenerator } from '../utils/id.util.js';
|
|
13
|
+
import { saveSessionToRedis, deleteSessionFromRedis, getSessionFromRedis } from './store.js';
|
|
14
|
+
// =============================================================================
|
|
15
|
+
// Configuration Utilities
|
|
16
|
+
// =============================================================================
|
|
17
|
+
/**
|
|
18
|
+
* Get the root Intella directory path (.intella)
|
|
19
|
+
* Defaults to user's home directory, but can be overridden with INTELLA_ROOT env var
|
|
20
|
+
*/
|
|
21
|
+
function getIntellaRoot() {
|
|
22
|
+
return process.env.INTELLA_ROOT || join(homedir(), '.intella');
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Get the sessions directory path
|
|
26
|
+
*/
|
|
27
|
+
export function getSessionsDir() {
|
|
28
|
+
return join(getIntellaRoot(), 'sessions');
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Get the workspace directory path for a specific session
|
|
32
|
+
*/
|
|
33
|
+
export function getSessionWorkspaceDir(sessionId) {
|
|
34
|
+
return join(getSessionsDir(), sessionId, 'workspace');
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Get the session file path
|
|
38
|
+
*/
|
|
39
|
+
function getSessionFilePath(sessionId) {
|
|
40
|
+
return join(getSessionsDir(), `${sessionId}.json`);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Ensure directories exist
|
|
44
|
+
*/
|
|
45
|
+
function ensureDirectories() {
|
|
46
|
+
const sessionsDir = getSessionsDir();
|
|
47
|
+
if (!existsSync(sessionsDir)) {
|
|
48
|
+
mkdirSync(sessionsDir, { recursive: true });
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Generate a unique session ID
|
|
53
|
+
*/
|
|
54
|
+
function generateSessionId() {
|
|
55
|
+
return IdGenerator.generatePrefixUlid('sess');
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* SessionManager class for managing sessions locally and remotely.
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```typescript
|
|
62
|
+
* const manager = new SessionManager();
|
|
63
|
+
*
|
|
64
|
+
* // Create a local session
|
|
65
|
+
* const session = manager.createLocal({ agentType: AgentType.CLAUDE });
|
|
66
|
+
*
|
|
67
|
+
* // Get a session
|
|
68
|
+
* const retrieved = manager.get(session.id);
|
|
69
|
+
*
|
|
70
|
+
* // List active sessions
|
|
71
|
+
* const sessions = manager.list({ status: 'active' });
|
|
72
|
+
*
|
|
73
|
+
* // End a session
|
|
74
|
+
* manager.end(session.id);
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
77
|
+
export class SessionManager {
|
|
78
|
+
/**
|
|
79
|
+
* Create a new SessionManager instance
|
|
80
|
+
*/
|
|
81
|
+
constructor() {
|
|
82
|
+
ensureDirectories();
|
|
83
|
+
}
|
|
84
|
+
// ===========================================================================
|
|
85
|
+
// Local Session Operations
|
|
86
|
+
// ===========================================================================
|
|
87
|
+
/**
|
|
88
|
+
* Create a local session
|
|
89
|
+
*/
|
|
90
|
+
async createLocal(options) {
|
|
91
|
+
ensureDirectories();
|
|
92
|
+
const sessionId = options.sessionId || generateSessionId();
|
|
93
|
+
const now = Date.now();
|
|
94
|
+
const session = {
|
|
95
|
+
id: sessionId,
|
|
96
|
+
sandboxId: options.sandboxId,
|
|
97
|
+
sandboxProvider: options.sandboxProvider,
|
|
98
|
+
agentType: options.agentType,
|
|
99
|
+
model: options.model,
|
|
100
|
+
status: options.status || 'active',
|
|
101
|
+
startedAt: now,
|
|
102
|
+
metadata: options.metadata,
|
|
103
|
+
};
|
|
104
|
+
// Create workspace directory
|
|
105
|
+
const workspaceDir = getSessionWorkspaceDir(sessionId);
|
|
106
|
+
if (!existsSync(workspaceDir)) {
|
|
107
|
+
mkdirSync(workspaceDir, { recursive: true });
|
|
108
|
+
}
|
|
109
|
+
// Save session to file
|
|
110
|
+
const sessionPath = getSessionFilePath(sessionId);
|
|
111
|
+
writeFileSync(sessionPath, JSON.stringify(session, null, 2), 'utf-8');
|
|
112
|
+
try {
|
|
113
|
+
await saveSessionToRedis(session);
|
|
114
|
+
}
|
|
115
|
+
catch (err) {
|
|
116
|
+
console.error('Error saving session to Redis:', err);
|
|
117
|
+
}
|
|
118
|
+
return session;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Get a session by ID.
|
|
122
|
+
* Tries local file first; if not found, checks Redis.
|
|
123
|
+
*/
|
|
124
|
+
async get(sessionId) {
|
|
125
|
+
const sessionPath = getSessionFilePath(sessionId);
|
|
126
|
+
if (existsSync(sessionPath)) {
|
|
127
|
+
try {
|
|
128
|
+
const content = readFileSync(sessionPath, 'utf-8');
|
|
129
|
+
return JSON.parse(content);
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
// Fall through to Redis
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return getSessionFromRedis(sessionId);
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Update a session
|
|
139
|
+
*/
|
|
140
|
+
async update(sessionId, updates) {
|
|
141
|
+
const session = await this.get(sessionId);
|
|
142
|
+
if (!session) {
|
|
143
|
+
return null;
|
|
144
|
+
}
|
|
145
|
+
const updatedSession = {
|
|
146
|
+
...session,
|
|
147
|
+
...updates,
|
|
148
|
+
id: sessionId, // Ensure ID cannot be changed
|
|
149
|
+
};
|
|
150
|
+
const sessionPath = getSessionFilePath(sessionId);
|
|
151
|
+
writeFileSync(sessionPath, JSON.stringify(updatedSession, null, 2), 'utf-8');
|
|
152
|
+
try {
|
|
153
|
+
await saveSessionToRedis(updatedSession);
|
|
154
|
+
}
|
|
155
|
+
catch (err) {
|
|
156
|
+
console.error('Error saving session to Redis:', err);
|
|
157
|
+
}
|
|
158
|
+
return updatedSession;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* End a local session (mark as ended)
|
|
162
|
+
*/
|
|
163
|
+
async endLocal(sessionId) {
|
|
164
|
+
const session = await this.get(sessionId);
|
|
165
|
+
if (!session) {
|
|
166
|
+
return null;
|
|
167
|
+
}
|
|
168
|
+
const endedSession = {
|
|
169
|
+
...session,
|
|
170
|
+
status: 'ended',
|
|
171
|
+
endedAt: Date.now(),
|
|
172
|
+
};
|
|
173
|
+
const sessionPath = getSessionFilePath(sessionId);
|
|
174
|
+
writeFileSync(sessionPath, JSON.stringify(endedSession, null, 2), 'utf-8');
|
|
175
|
+
try {
|
|
176
|
+
await saveSessionToRedis(endedSession);
|
|
177
|
+
}
|
|
178
|
+
catch (err) {
|
|
179
|
+
console.error('Error saving session to Redis:', err);
|
|
180
|
+
}
|
|
181
|
+
return endedSession;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Delete a session completely (file and workspace)
|
|
185
|
+
*/
|
|
186
|
+
async delete(sessionId) {
|
|
187
|
+
const sessionPath = getSessionFilePath(sessionId);
|
|
188
|
+
const sessionDir = join(getSessionsDir(), sessionId);
|
|
189
|
+
let deleted = false;
|
|
190
|
+
// Delete session file
|
|
191
|
+
if (existsSync(sessionPath)) {
|
|
192
|
+
try {
|
|
193
|
+
unlinkSync(sessionPath);
|
|
194
|
+
deleted = true;
|
|
195
|
+
}
|
|
196
|
+
catch {
|
|
197
|
+
// Ignore deletion errors
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
// Delete session directory (workspace, executions, etc.)
|
|
201
|
+
if (existsSync(sessionDir)) {
|
|
202
|
+
try {
|
|
203
|
+
rmSync(sessionDir, { recursive: true, force: true });
|
|
204
|
+
deleted = true;
|
|
205
|
+
}
|
|
206
|
+
catch {
|
|
207
|
+
// Ignore deletion errors
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
try {
|
|
211
|
+
await deleteSessionFromRedis(sessionId);
|
|
212
|
+
}
|
|
213
|
+
catch (err) {
|
|
214
|
+
console.error('Error deleting session from Redis:', err);
|
|
215
|
+
}
|
|
216
|
+
return deleted;
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* List all sessions
|
|
220
|
+
*/
|
|
221
|
+
list(options) {
|
|
222
|
+
ensureDirectories();
|
|
223
|
+
const sessionsDir = getSessionsDir();
|
|
224
|
+
const files = readdirSync(sessionsDir).filter(f => f.endsWith('.json'));
|
|
225
|
+
const sessions = [];
|
|
226
|
+
for (const file of files) {
|
|
227
|
+
try {
|
|
228
|
+
const content = readFileSync(join(sessionsDir, file), 'utf-8');
|
|
229
|
+
const session = JSON.parse(content);
|
|
230
|
+
// Filter by status
|
|
231
|
+
if (options?.status && options.status !== 'all') {
|
|
232
|
+
if (session.status !== options.status) {
|
|
233
|
+
continue;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
sessions.push(session);
|
|
237
|
+
}
|
|
238
|
+
catch {
|
|
239
|
+
// Skip invalid session files
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
// Sort by startedAt descending (most recent first)
|
|
243
|
+
sessions.sort((a, b) => b.startedAt - a.startedAt);
|
|
244
|
+
// Apply limit
|
|
245
|
+
if (options?.limit && options.limit > 0) {
|
|
246
|
+
return sessions.slice(0, options.limit);
|
|
247
|
+
}
|
|
248
|
+
return sessions;
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Get the active session (most recent active session)
|
|
252
|
+
*/
|
|
253
|
+
getActive() {
|
|
254
|
+
const activeSessions = this.list({ status: 'active', limit: 1 });
|
|
255
|
+
return activeSessions.length > 0 ? activeSessions[0] : null;
|
|
256
|
+
}
|
|
257
|
+
// ===========================================================================
|
|
258
|
+
// Remote Session Operations (Sandbox)
|
|
259
|
+
// ===========================================================================
|
|
260
|
+
/**
|
|
261
|
+
* Create a remote session by publishing session:init to a sandbox daemon.
|
|
262
|
+
*
|
|
263
|
+
* This method sends a session:init command to a running sandbox daemon,
|
|
264
|
+
* which will create the session locally within the sandbox and optionally
|
|
265
|
+
* run setup steps (git clone, npm install, etc.).
|
|
266
|
+
*
|
|
267
|
+
* @param options - Remote session creation options
|
|
268
|
+
* @returns Session and command ID
|
|
269
|
+
*
|
|
270
|
+
* @example
|
|
271
|
+
* ```typescript
|
|
272
|
+
* const result = await sessionManager.createRemote({
|
|
273
|
+
* sandboxId: 'sandbox-123',
|
|
274
|
+
* agentType: AgentType.CLAUDE,
|
|
275
|
+
* model: 'sonnet',
|
|
276
|
+
* sandboxProvider: SandboxProviderType.E2B,
|
|
277
|
+
* setup: {
|
|
278
|
+
* gitClone: [{ url: 'https://github.com/user/repo.git' }],
|
|
279
|
+
* },
|
|
280
|
+
* });
|
|
281
|
+
* console.log('Session created:', result.session.id);
|
|
282
|
+
* ```
|
|
283
|
+
*/
|
|
284
|
+
async createRemote(options) {
|
|
285
|
+
const sandboxProviderInstance = options.sandboxProviderInstance;
|
|
286
|
+
const sessionId = options.sessionId || generateSessionId();
|
|
287
|
+
const waitForResult = options.waitForResult !== false; // Default to true
|
|
288
|
+
const timeout = options.timeout || 5 * 60 * 1000; // Default 5 minutes
|
|
289
|
+
if (sandboxProviderInstance) {
|
|
290
|
+
const session = await sandboxProviderInstance.createSession({
|
|
291
|
+
sessionId,
|
|
292
|
+
agentType: options.agentType,
|
|
293
|
+
model: options.model,
|
|
294
|
+
metadata: options.metadata,
|
|
295
|
+
setup: options.setup,
|
|
296
|
+
});
|
|
297
|
+
return { session };
|
|
298
|
+
}
|
|
299
|
+
// Build and publish the session:init command
|
|
300
|
+
const commandId = await publishCommand(options.sandboxId, {
|
|
301
|
+
type: 'session:init',
|
|
302
|
+
sessionId,
|
|
303
|
+
data: {
|
|
304
|
+
sessionId,
|
|
305
|
+
agentType: options.agentType,
|
|
306
|
+
model: options.model,
|
|
307
|
+
setup: options.setup,
|
|
308
|
+
},
|
|
309
|
+
metadata: (options.metadata ?? {}),
|
|
310
|
+
apiKeys: options.apiKeys ?? {},
|
|
311
|
+
env: {},
|
|
312
|
+
timestamp: Date.now(),
|
|
313
|
+
});
|
|
314
|
+
if (!waitForResult) {
|
|
315
|
+
// Return immediately without waiting
|
|
316
|
+
// The session object will be minimal since we don't have the daemon's response
|
|
317
|
+
const session = {
|
|
318
|
+
id: sessionId,
|
|
319
|
+
sandboxId: options.sandboxId,
|
|
320
|
+
agentType: options.agentType,
|
|
321
|
+
model: options.model,
|
|
322
|
+
status: 'active',
|
|
323
|
+
startedAt: Date.now(),
|
|
324
|
+
metadata: options.metadata,
|
|
325
|
+
};
|
|
326
|
+
return { session, commandId };
|
|
327
|
+
}
|
|
328
|
+
// Wait for success
|
|
329
|
+
const result = await waitForSuccess(options.sandboxId, commandId, undefined, timeout);
|
|
330
|
+
if (result.type !== 'success') {
|
|
331
|
+
throw new Error(`Remote session creation failed: ${result.error || 'Unknown error'}`);
|
|
332
|
+
}
|
|
333
|
+
// Parse the session from the result
|
|
334
|
+
const resultData = result.data;
|
|
335
|
+
if (!resultData.session) {
|
|
336
|
+
throw new Error('Remote session creation succeeded but no session data returned');
|
|
337
|
+
}
|
|
338
|
+
return {
|
|
339
|
+
session: resultData.session,
|
|
340
|
+
commandId,
|
|
341
|
+
};
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* End a remote session by publishing session:end to a sandbox daemon.
|
|
345
|
+
*
|
|
346
|
+
* @param sandboxId - Sandbox ID where the session is running
|
|
347
|
+
* @param sessionId - Session ID to end
|
|
348
|
+
* @param timeout - Timeout for waiting (in ms, default: 30 seconds)
|
|
349
|
+
*/
|
|
350
|
+
async endRemote(sandboxId, sessionId, timeout) {
|
|
351
|
+
const commandId = await publishCommand(sandboxId, {
|
|
352
|
+
type: 'session:end',
|
|
353
|
+
sessionId,
|
|
354
|
+
data: { sessionId },
|
|
355
|
+
metadata: {},
|
|
356
|
+
apiKeys: {},
|
|
357
|
+
env: {},
|
|
358
|
+
timestamp: Date.now(),
|
|
359
|
+
});
|
|
360
|
+
const result = await waitForSuccess(sandboxId, commandId, undefined, timeout || 30000);
|
|
361
|
+
if (result.type !== 'success') {
|
|
362
|
+
throw new Error(`Remote session end failed: ${result.error || 'Unknown error'}`);
|
|
363
|
+
}
|
|
364
|
+
const resultData = result.data;
|
|
365
|
+
return resultData || null;
|
|
366
|
+
}
|
|
367
|
+
// ===========================================================================
|
|
368
|
+
// Multi-mode Session Operations (Local or Sandbox)
|
|
369
|
+
// ===========================================================================
|
|
370
|
+
/**
|
|
371
|
+
* Create a session with the specified mode
|
|
372
|
+
*
|
|
373
|
+
* @param options - Session creation options
|
|
374
|
+
* @returns Session and optional command ID (for sandbox mode)
|
|
375
|
+
*/
|
|
376
|
+
async create(options) {
|
|
377
|
+
if (options.mode === 'local') {
|
|
378
|
+
// Local mode: Create session directly on current machine
|
|
379
|
+
const session = await this.createLocal({
|
|
380
|
+
sessionId: options.sessionId,
|
|
381
|
+
agentType: options.agentType,
|
|
382
|
+
model: options.model,
|
|
383
|
+
metadata: options.metadata,
|
|
384
|
+
});
|
|
385
|
+
return { session };
|
|
386
|
+
}
|
|
387
|
+
// Sandbox mode: Delegate to createRemote
|
|
388
|
+
if (!options.sandboxId) {
|
|
389
|
+
throw new Error('sandboxId is required for sandbox mode');
|
|
390
|
+
}
|
|
391
|
+
return this.createRemote({
|
|
392
|
+
sandboxId: options.sandboxId,
|
|
393
|
+
sessionId: options.sessionId,
|
|
394
|
+
agentType: options.agentType,
|
|
395
|
+
model: options.model,
|
|
396
|
+
apiKeys: options.apiKeys,
|
|
397
|
+
metadata: options.metadata,
|
|
398
|
+
setup: options.setup,
|
|
399
|
+
});
|
|
400
|
+
}
|
|
401
|
+
/**
|
|
402
|
+
* End a session (local or sandbox mode)
|
|
403
|
+
*
|
|
404
|
+
* @param sessionId - Session ID to end
|
|
405
|
+
* @param options - Optional sandbox config for remote session end
|
|
406
|
+
*/
|
|
407
|
+
async end(sessionId, options) {
|
|
408
|
+
if (!options?.mode || options.mode === 'local') {
|
|
409
|
+
// Local mode: End session directly
|
|
410
|
+
return await this.endLocal(sessionId);
|
|
411
|
+
}
|
|
412
|
+
// Sandbox mode: Delegate to endRemote
|
|
413
|
+
if (!options.sandboxId) {
|
|
414
|
+
throw new Error('sandboxId is required for sandbox mode');
|
|
415
|
+
}
|
|
416
|
+
return this.endRemote(options.sandboxId, sessionId);
|
|
417
|
+
}
|
|
418
|
+
// ===========================================================================
|
|
419
|
+
// Utility Methods
|
|
420
|
+
// ===========================================================================
|
|
421
|
+
/**
|
|
422
|
+
* Get the workspace directory for a session
|
|
423
|
+
*/
|
|
424
|
+
getWorkspaceDir(sessionId) {
|
|
425
|
+
return getSessionWorkspaceDir(sessionId);
|
|
426
|
+
}
|
|
427
|
+
/**
|
|
428
|
+
* Get the sessions directory
|
|
429
|
+
*/
|
|
430
|
+
getSessionsDir() {
|
|
431
|
+
return getSessionsDir();
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
// =============================================================================
|
|
435
|
+
// Standalone Functions (for backward compatibility)
|
|
436
|
+
// =============================================================================
|
|
437
|
+
// Create a default instance for standalone function usage
|
|
438
|
+
const defaultManager = new SessionManager();
|
|
439
|
+
/**
|
|
440
|
+
* Create a local session
|
|
441
|
+
*/
|
|
442
|
+
export async function createLocalSession(options) {
|
|
443
|
+
return await defaultManager.createLocal(options);
|
|
444
|
+
}
|
|
445
|
+
/**
|
|
446
|
+
* Get a session by ID
|
|
447
|
+
*/
|
|
448
|
+
export async function getSession(sessionId) {
|
|
449
|
+
return await defaultManager.get(sessionId);
|
|
450
|
+
}
|
|
451
|
+
/**
|
|
452
|
+
* Update a session
|
|
453
|
+
*/
|
|
454
|
+
export async function updateSession(sessionId, updates) {
|
|
455
|
+
return await defaultManager.update(sessionId, updates);
|
|
456
|
+
}
|
|
457
|
+
/**
|
|
458
|
+
* End a local session
|
|
459
|
+
*/
|
|
460
|
+
export async function endLocalSession(sessionId) {
|
|
461
|
+
return await defaultManager.endLocal(sessionId);
|
|
462
|
+
}
|
|
463
|
+
/**
|
|
464
|
+
* Delete a session
|
|
465
|
+
*/
|
|
466
|
+
export async function deleteSession(sessionId) {
|
|
467
|
+
return await defaultManager.delete(sessionId);
|
|
468
|
+
}
|
|
469
|
+
/**
|
|
470
|
+
* List sessions
|
|
471
|
+
*/
|
|
472
|
+
export function listSessions(options) {
|
|
473
|
+
return defaultManager.list(options);
|
|
474
|
+
}
|
|
475
|
+
/**
|
|
476
|
+
* Get the active session
|
|
477
|
+
*/
|
|
478
|
+
export function getActiveSession() {
|
|
479
|
+
return defaultManager.getActive();
|
|
480
|
+
}
|
|
481
|
+
/**
|
|
482
|
+
* Create a session (multi-mode)
|
|
483
|
+
*/
|
|
484
|
+
export async function createSession(options) {
|
|
485
|
+
return defaultManager.create(options);
|
|
486
|
+
}
|
|
487
|
+
/**
|
|
488
|
+
* End a session (multi-mode)
|
|
489
|
+
*/
|
|
490
|
+
export async function endSession(sessionId, options) {
|
|
491
|
+
return defaultManager.end(sessionId, options);
|
|
492
|
+
}
|
|
493
|
+
//# sourceMappingURL=manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/session/manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session Redis Store
|
|
3
|
+
*
|
|
4
|
+
* Handles persisting session metadata to Redis at session:{sessionId}.
|
|
5
|
+
* Mirrors file-based storage for consistency when Redis is configured.
|
|
6
|
+
*/
|
|
7
|
+
import type { SessionMetadata } from '../types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Save session metadata to Redis
|
|
10
|
+
*/
|
|
11
|
+
export declare function saveSessionToRedis(session: SessionMetadata, redisUrl?: string): Promise<void>;
|
|
12
|
+
/**
|
|
13
|
+
* Read session metadata from Redis
|
|
14
|
+
*/
|
|
15
|
+
export declare function getSessionFromRedis(sessionId: string, redisUrl?: string): Promise<SessionMetadata | null>;
|
|
16
|
+
/**
|
|
17
|
+
* Delete session metadata from Redis
|
|
18
|
+
*/
|
|
19
|
+
export declare function deleteSessionFromRedis(sessionId: string, redisUrl?: string): Promise<void>;
|
|
20
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/session/store.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAWnD;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,eAAe,EACxB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAaf;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAmBjC;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,SAAS,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAYf"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session Redis Store
|
|
3
|
+
*
|
|
4
|
+
* Handles persisting session metadata to Redis at session:{sessionId}.
|
|
5
|
+
* Mirrors file-based storage for consistency when Redis is configured.
|
|
6
|
+
*/
|
|
7
|
+
import { getRedisClient } from '../utils/redis/client.js';
|
|
8
|
+
const SESSION_TTL_SECONDS = 7 * 24 * 60 * 60; // 7 days
|
|
9
|
+
/**
|
|
10
|
+
* Get the Redis key for a session
|
|
11
|
+
*/
|
|
12
|
+
function getSessionKey(sessionId) {
|
|
13
|
+
return `session:${sessionId}`;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Save session metadata to Redis
|
|
17
|
+
*/
|
|
18
|
+
export async function saveSessionToRedis(session, redisUrl) {
|
|
19
|
+
const client = await getRedisClient(redisUrl);
|
|
20
|
+
if (!client) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
try {
|
|
24
|
+
const key = getSessionKey(session.id);
|
|
25
|
+
const value = JSON.stringify(session);
|
|
26
|
+
await client.set(key, value, { EX: SESSION_TTL_SECONDS });
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
console.error('Error saving session to Redis:', error);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Read session metadata from Redis
|
|
34
|
+
*/
|
|
35
|
+
export async function getSessionFromRedis(sessionId, redisUrl) {
|
|
36
|
+
const client = await getRedisClient(redisUrl);
|
|
37
|
+
if (!client) {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
try {
|
|
41
|
+
const key = getSessionKey(sessionId);
|
|
42
|
+
const value = await client.get(key);
|
|
43
|
+
if (!value) {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
return JSON.parse(value);
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
console.error('Error reading session from Redis:', error);
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Delete session metadata from Redis
|
|
55
|
+
*/
|
|
56
|
+
export async function deleteSessionFromRedis(sessionId, redisUrl) {
|
|
57
|
+
const client = await getRedisClient(redisUrl);
|
|
58
|
+
if (!client) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
try {
|
|
62
|
+
const key = getSessionKey(sessionId);
|
|
63
|
+
await client.del(key);
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
console.error('Error deleting session from Redis:', error);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/session/store.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG1D,MAAM,mBAAmB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS;AAEvD;;GAEG;AACH,SAAS,aAAa,CAAC,SAAiB;IACtC,OAAO,WAAW,SAAS,EAAE,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAwB,EACxB,QAAiB;IAEjB,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC9C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,mBAAmB,EAAE,CAAC,CAAC;IAC5D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;IACzD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,SAAiB,EACjB,QAAiB;IAEjB,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC9C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;QACrC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEpC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAoB,CAAC;IAC9C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,SAAiB,EACjB,QAAiB;IAEjB,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC9C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;QACrC,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { AgentType } from "../types.js";
|
|
2
|
+
import { SessionMode } from "../types.js";
|
|
3
|
+
import { SandboxProviderType } from "../types.js";
|
|
4
|
+
import { ISandboxProvider } from "../types.js";
|
|
5
|
+
/**
|
|
6
|
+
* Options for creating a local session
|
|
7
|
+
*/
|
|
8
|
+
export interface CreateLocalSessionOptions {
|
|
9
|
+
sessionId?: string;
|
|
10
|
+
agentType: AgentType;
|
|
11
|
+
model?: string;
|
|
12
|
+
sandboxId?: string;
|
|
13
|
+
sandboxProvider?: string;
|
|
14
|
+
status?: 'active' | 'ended';
|
|
15
|
+
metadata?: Record<string, unknown>;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Options for listing sessions
|
|
19
|
+
*/
|
|
20
|
+
export interface ListSessionsOptions {
|
|
21
|
+
status?: 'active' | 'ended' | 'all';
|
|
22
|
+
limit?: number;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Options for ending a session
|
|
26
|
+
*/
|
|
27
|
+
export interface EndSessionOptions {
|
|
28
|
+
mode?: SessionMode;
|
|
29
|
+
sandboxId?: string;
|
|
30
|
+
sandboxProvider?: SandboxProviderType;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Options for creating a remote session (in a sandbox)
|
|
34
|
+
*/
|
|
35
|
+
export interface CreateRemoteSessionOptions {
|
|
36
|
+
/** Sandbox ID where the daemon is running (required) */
|
|
37
|
+
sandboxId: string;
|
|
38
|
+
/** Sandbox provider type */
|
|
39
|
+
sandboxProvider?: SandboxProviderType;
|
|
40
|
+
sandboxProviderInstance?: ISandboxProvider;
|
|
41
|
+
sessionId?: string;
|
|
42
|
+
/** Agent type for this session */
|
|
43
|
+
agentType: AgentType;
|
|
44
|
+
/** Model to use */
|
|
45
|
+
model?: string;
|
|
46
|
+
/** API keys for the session */
|
|
47
|
+
apiKeys?: Record<string, string>;
|
|
48
|
+
/** Additional metadata */
|
|
49
|
+
metadata?: Record<string, unknown>;
|
|
50
|
+
/** Setup steps to run after session creation */
|
|
51
|
+
setup?: import('../types.js').SessionInitSetup;
|
|
52
|
+
/** Whether to wait for the session to be created (default: true) */
|
|
53
|
+
waitForResult?: boolean;
|
|
54
|
+
/** Timeout for waiting (in ms, default: 5 minutes) */
|
|
55
|
+
timeout?: number;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/session/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAI/C;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,KAAK,CAAC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,mBAAmB,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,wDAAwD;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,eAAe,CAAC,EAAE,mBAAmB,CAAC;IAEtC,uBAAuB,CAAC,EAAE,gBAAgB,CAAC;IAG3C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kCAAkC;IAClC,SAAS,EAAE,SAAS,CAAC;IACrB,mBAAmB;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,gDAAgD;IAChD,KAAK,CAAC,EAAE,OAAO,aAAa,EAAE,gBAAgB,CAAC;IAC/C,oEAAoE;IACpE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/session/types.ts"],"names":[],"mappings":""}
|