@steventsao/agent-session 0.1.0 → 0.1.2

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/dist/index.js CHANGED
@@ -23,6 +23,17 @@
23
23
  */
24
24
  // Re-export types from core
25
25
  export * from '@steventsao/agent-session-core';
26
- // Export client
26
+ // Export vanilla client
27
27
  export { AgentSessionClient } from './client';
28
+ // Export RTK slice (import from '@steventsao/agent-session/redux')
29
+ // Usage:
30
+ // ```ts
31
+ // import agentSessionReducer, { connectSession, selectIsConnected } from '@steventsao/agent-session/redux';
32
+ //
33
+ // const store = configureStore({
34
+ // reducer: { agentSession: agentSessionReducer }
35
+ // });
36
+ //
37
+ // dispatch(connectSession({ url: 'wss://...', sessionId: 'session-123' }));
38
+ // ```
28
39
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,4BAA4B;AAC5B,cAAc,gCAAgC,CAAC;AAE/C,gBAAgB;AAChB,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,4BAA4B;AAC5B,cAAc,gCAAgC,CAAC;AAE/C,wBAAwB;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAG9C,mEAAmE;AACnE,SAAS;AACT,QAAQ;AACR,4GAA4G;AAC5G,EAAE;AACF,iCAAiC;AACjC,mDAAmD;AACnD,MAAM;AACN,EAAE;AACF,4EAA4E;AAC5E,MAAM"}
@@ -0,0 +1,137 @@
1
+ /**
2
+ * AgentSession Redux Slice
3
+ *
4
+ * RTK-based state management for agent-session WebSocket.
5
+ * Uses singleton pattern - socket lives outside React (no reconnection loops).
6
+ *
7
+ * Singleton socket pattern to avoid React reconnection loops
8
+ */
9
+ import type { SandboxLifecycle, SandboxStatus, ContentBlock } from '@steventsao/agent-session-core';
10
+ export interface AgentMessage {
11
+ id: string;
12
+ role: 'user' | 'assistant';
13
+ content: string | ContentBlock[];
14
+ timestamp: number;
15
+ }
16
+ interface AgentSessionState {
17
+ isConnected: boolean;
18
+ clientId: string | null;
19
+ sessionId: string | null;
20
+ sandboxStatus: SandboxStatus;
21
+ sandboxId: string | null;
22
+ sandboxUrl: string | null;
23
+ lifecycle: SandboxLifecycle;
24
+ lifecycleMessage: string | null;
25
+ agentStatus: 'idle' | 'streaming' | 'error';
26
+ agentSessionId: string | null;
27
+ messages: AgentMessage[];
28
+ error: string | null;
29
+ }
30
+ type Dispatch = (action: any) => void;
31
+ declare class SessionSocketManager {
32
+ private ws;
33
+ private dispatch;
34
+ private baseUrl;
35
+ private currentSessionId;
36
+ private currentUserId;
37
+ private pingInterval;
38
+ private reconnectTimeout;
39
+ private reconnectAttempts;
40
+ private maxReconnectAttempts;
41
+ private socketId;
42
+ setDispatch(dispatch: Dispatch): void;
43
+ setBaseUrl(url: string): void;
44
+ connect(sessionId: string, userId?: string): void;
45
+ disconnect(): void;
46
+ get isConnected(): boolean;
47
+ private handleMessage;
48
+ send(message: object): void;
49
+ init(metadata?: Record<string, unknown>): void;
50
+ startSandbox(template?: string, bootstrap?: import('@steventsao/agent-session-core').SandboxBootstrapOptions): void;
51
+ stopSandbox(): void;
52
+ exec(cmd: string, cwd?: string): void;
53
+ sendAgentMessage(content: string, model?: {
54
+ id: string;
55
+ provider?: string;
56
+ }, config?: {
57
+ temperature?: number;
58
+ maxTokens?: number;
59
+ }, systemPrompt?: string, agentType?: string): void;
60
+ stopAgent(): void;
61
+ resetAgent(): void;
62
+ private startPing;
63
+ private stopPing;
64
+ private clearReconnect;
65
+ private maybeReconnect;
66
+ }
67
+ export declare const sessionSocketManager: SessionSocketManager;
68
+ export declare const connectSession: import("@reduxjs/toolkit").AsyncThunk<void, {
69
+ url: string;
70
+ sessionId: string;
71
+ userId?: string;
72
+ }, import("@reduxjs/toolkit").AsyncThunkConfig>;
73
+ export declare const disconnectSession: import("@reduxjs/toolkit").AsyncThunk<void, void, import("@reduxjs/toolkit").AsyncThunkConfig>;
74
+ export interface StartSandboxPayload {
75
+ template?: string;
76
+ bootstrap?: import('@steventsao/agent-session-core').SandboxBootstrapOptions;
77
+ }
78
+ export declare const startSandbox: import("@reduxjs/toolkit").AsyncThunk<void, string | StartSandboxPayload | undefined, import("@reduxjs/toolkit").AsyncThunkConfig>;
79
+ export declare const stopSandbox: import("@reduxjs/toolkit").AsyncThunk<void, void, import("@reduxjs/toolkit").AsyncThunkConfig>;
80
+ export declare const execCommand: import("@reduxjs/toolkit").AsyncThunk<void, {
81
+ cmd: string;
82
+ cwd?: string;
83
+ }, import("@reduxjs/toolkit").AsyncThunkConfig>;
84
+ export declare const sendAgentMessage: import("@reduxjs/toolkit").AsyncThunk<void, {
85
+ content: string;
86
+ model?: {
87
+ id: string;
88
+ provider?: string;
89
+ };
90
+ config?: {
91
+ temperature?: number;
92
+ maxTokens?: number;
93
+ };
94
+ systemPrompt?: string;
95
+ agentType?: string;
96
+ }, import("@reduxjs/toolkit").AsyncThunkConfig>;
97
+ export declare const stopAgent: import("@reduxjs/toolkit").AsyncThunk<void, void, import("@reduxjs/toolkit").AsyncThunkConfig>;
98
+ export declare const resetAgent: import("@reduxjs/toolkit").AsyncThunk<void, void, import("@reduxjs/toolkit").AsyncThunkConfig>;
99
+ export declare const setConnected: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
100
+ clientId: string;
101
+ sessionId: string;
102
+ }, "agentSession/setConnected">, setDisconnected: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"agentSession/setDisconnected">, setReady: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
103
+ sandboxId?: string;
104
+ sandboxUrl?: string;
105
+ }, "agentSession/setReady">, setSandboxStatus: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
106
+ status: SandboxStatus;
107
+ sandboxId?: string;
108
+ sandboxUrl?: string;
109
+ error?: string;
110
+ }, "agentSession/setSandboxStatus">, setLifecycle: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
111
+ phase: SandboxLifecycle;
112
+ message?: string;
113
+ }, "agentSession/setLifecycle">, agentStarted: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"agentSession/agentStarted">, updateAgentMessage: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
114
+ content: ContentBlock[];
115
+ }, "agentSession/updateAgentMessage">, agentDone: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
116
+ sessionId?: string;
117
+ }, "agentSession/agentDone">, agentError: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
118
+ error: string;
119
+ }, "agentSession/agentError">, addUserMessage: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "agentSession/addUserMessage">, setError: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "agentSession/setError">, clearMessages: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"agentSession/clearMessages">, clearAgentSession: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"agentSession/clearAgentSession">, resetState: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"agentSession/resetState">;
120
+ type RootState = {
121
+ agentSession: AgentSessionState;
122
+ };
123
+ export declare const selectIsConnected: (state: RootState) => boolean;
124
+ export declare const selectClientId: (state: RootState) => string | null;
125
+ export declare const selectSessionId: (state: RootState) => string | null;
126
+ export declare const selectSandboxStatus: (state: RootState) => SandboxStatus;
127
+ export declare const selectSandboxId: (state: RootState) => string | null;
128
+ export declare const selectSandboxUrl: (state: RootState) => string | null;
129
+ export declare const selectLifecycle: (state: RootState) => SandboxLifecycle;
130
+ export declare const selectLifecycleMessage: (state: RootState) => string | null;
131
+ export declare const selectAgentStatus: (state: RootState) => "error" | "idle" | "streaming";
132
+ export declare const selectAgentSessionId: (state: RootState) => string | null;
133
+ export declare const selectMessages: (state: RootState) => AgentMessage[];
134
+ export declare const selectError: (state: RootState) => string | null;
135
+ declare const _default: import("@reduxjs/toolkit").Reducer<AgentSessionState>;
136
+ export default _default;
137
+ //# sourceMappingURL=slice.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slice.d.ts","sourceRoot":"","sources":["../src/slice.ts"],"names":[],"mappings":"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"}
package/dist/slice.js ADDED
@@ -0,0 +1,383 @@
1
+ /**
2
+ * AgentSession Redux Slice
3
+ *
4
+ * RTK-based state management for agent-session WebSocket.
5
+ * Uses singleton pattern - socket lives outside React (no reconnection loops).
6
+ *
7
+ * Singleton socket pattern to avoid React reconnection loops
8
+ */
9
+ import { createSlice, createAsyncThunk } from '@reduxjs/toolkit';
10
+ const initialState = {
11
+ isConnected: false,
12
+ clientId: null,
13
+ sessionId: null,
14
+ sandboxStatus: 'idle',
15
+ sandboxId: null,
16
+ sandboxUrl: null,
17
+ lifecycle: 'idle',
18
+ lifecycleMessage: null,
19
+ agentStatus: 'idle',
20
+ agentSessionId: null,
21
+ messages: [],
22
+ error: null,
23
+ };
24
+ class SessionSocketManager {
25
+ ws = null;
26
+ dispatch = null;
27
+ baseUrl = null;
28
+ currentSessionId = null;
29
+ currentUserId = null;
30
+ pingInterval = null;
31
+ reconnectTimeout = null;
32
+ reconnectAttempts = 0;
33
+ maxReconnectAttempts = 5;
34
+ socketId = 0; // Prevents stale handlers
35
+ setDispatch(dispatch) {
36
+ this.dispatch = dispatch;
37
+ }
38
+ setBaseUrl(url) {
39
+ this.baseUrl = url.replace(/\/$/, '');
40
+ }
41
+ connect(sessionId, userId) {
42
+ if (!this.baseUrl) {
43
+ console.error('[SessionSocket] Base URL not set');
44
+ return;
45
+ }
46
+ // Already connected to same session
47
+ if (this.ws?.readyState === WebSocket.OPEN && this.currentSessionId === sessionId) {
48
+ console.log('[SessionSocket] Already connected to', sessionId);
49
+ return;
50
+ }
51
+ // Disconnect from previous if different session
52
+ if (this.currentSessionId && this.currentSessionId !== sessionId) {
53
+ console.log(`[SessionSocket] Switching from ${this.currentSessionId} to ${sessionId}`);
54
+ this.disconnect();
55
+ }
56
+ this.currentSessionId = sessionId;
57
+ this.currentUserId = userId || null;
58
+ this.reconnectAttempts = 0;
59
+ const thisSocketId = ++this.socketId;
60
+ const params = new URLSearchParams();
61
+ if (userId)
62
+ params.set('userId', userId);
63
+ const url = `${this.baseUrl}/session/${sessionId}/ws?${params}`;
64
+ console.log('[SessionSocket] Connecting to:', url);
65
+ this.ws = new WebSocket(url);
66
+ this.ws.onopen = () => {
67
+ if (thisSocketId !== this.socketId)
68
+ return;
69
+ console.log('[SessionSocket] Connected');
70
+ this.reconnectAttempts = 0;
71
+ this.startPing();
72
+ };
73
+ this.ws.onmessage = (event) => {
74
+ if (thisSocketId !== this.socketId)
75
+ return;
76
+ try {
77
+ const data = JSON.parse(event.data);
78
+ this.handleMessage(data);
79
+ }
80
+ catch (err) {
81
+ console.error('[SessionSocket] Parse error:', err);
82
+ }
83
+ };
84
+ this.ws.onclose = (event) => {
85
+ if (thisSocketId !== this.socketId) {
86
+ console.log(`[SessionSocket] Ignoring stale onclose`);
87
+ return;
88
+ }
89
+ console.log('[SessionSocket] Disconnected:', event.code);
90
+ this.stopPing();
91
+ this.dispatch?.(setDisconnected());
92
+ this.maybeReconnect();
93
+ };
94
+ this.ws.onerror = (event) => {
95
+ if (thisSocketId !== this.socketId)
96
+ return;
97
+ console.error('[SessionSocket] Error:', event);
98
+ };
99
+ }
100
+ disconnect() {
101
+ this.stopPing();
102
+ this.clearReconnect();
103
+ this.socketId++;
104
+ this.ws?.close();
105
+ this.ws = null;
106
+ this.currentSessionId = null;
107
+ this.currentUserId = null;
108
+ this.dispatch?.(setDisconnected());
109
+ }
110
+ get isConnected() {
111
+ return this.ws?.readyState === WebSocket.OPEN;
112
+ }
113
+ handleMessage(event) {
114
+ if (!this.dispatch)
115
+ return;
116
+ switch (event.type) {
117
+ case 'CONNECTED':
118
+ this.dispatch(setConnected({
119
+ clientId: event.clientId,
120
+ sessionId: event.sessionId,
121
+ }));
122
+ break;
123
+ case 'READY':
124
+ this.dispatch(setReady({
125
+ sandboxId: event.sandboxId ?? undefined,
126
+ sandboxUrl: event.sandboxUrl ?? undefined,
127
+ }));
128
+ break;
129
+ case 'SANDBOX_STATUS':
130
+ this.dispatch(setSandboxStatus({
131
+ status: event.status,
132
+ sandboxId: event.sandboxId,
133
+ sandboxUrl: event.sandboxUrl,
134
+ error: event.error,
135
+ }));
136
+ break;
137
+ case 'LIFECYCLE':
138
+ this.dispatch(setLifecycle({
139
+ phase: event.phase,
140
+ message: event.message,
141
+ }));
142
+ break;
143
+ case 'AGENT_STARTED':
144
+ this.dispatch(agentStarted());
145
+ break;
146
+ case 'AGENT_MESSAGE':
147
+ if (event.message?.content) {
148
+ this.dispatch(updateAgentMessage({ content: event.message.content }));
149
+ }
150
+ break;
151
+ case 'AGENT_DONE':
152
+ this.dispatch(agentDone({ sessionId: event.sessionId }));
153
+ break;
154
+ case 'AGENT_ERROR':
155
+ this.dispatch(agentError({ error: event.error }));
156
+ break;
157
+ case 'ERROR':
158
+ this.dispatch(setError(event.msg));
159
+ break;
160
+ case 'PONG':
161
+ break;
162
+ default:
163
+ console.log('[SessionSocket] Event:', event.type);
164
+ }
165
+ }
166
+ send(message) {
167
+ if (this.ws?.readyState !== WebSocket.OPEN) {
168
+ console.warn('[SessionSocket] Not connected');
169
+ return;
170
+ }
171
+ this.ws.send(JSON.stringify(message));
172
+ }
173
+ // Commands
174
+ init(metadata) {
175
+ this.send({ type: 'INIT', metadata });
176
+ }
177
+ startSandbox(template, bootstrap) {
178
+ this.send({ type: 'START_SANDBOX', template, bootstrap });
179
+ }
180
+ stopSandbox() {
181
+ this.send({ type: 'STOP_SANDBOX' });
182
+ }
183
+ exec(cmd, cwd) {
184
+ this.send({ type: 'EXEC', cmd, cwd });
185
+ }
186
+ sendAgentMessage(content, model, config, systemPrompt, agentType) {
187
+ this.send({
188
+ type: 'AGENT_MESSAGE',
189
+ content,
190
+ model,
191
+ config,
192
+ systemPrompt,
193
+ agentType,
194
+ });
195
+ }
196
+ stopAgent() {
197
+ this.send({ type: 'AGENT_STOP' });
198
+ }
199
+ resetAgent() {
200
+ this.send({ type: 'AGENT_RESET' });
201
+ }
202
+ startPing() {
203
+ this.stopPing();
204
+ this.pingInterval = setInterval(() => {
205
+ this.send({ type: 'PING' });
206
+ }, 30000);
207
+ }
208
+ stopPing() {
209
+ if (this.pingInterval) {
210
+ clearInterval(this.pingInterval);
211
+ this.pingInterval = null;
212
+ }
213
+ }
214
+ clearReconnect() {
215
+ if (this.reconnectTimeout) {
216
+ clearTimeout(this.reconnectTimeout);
217
+ this.reconnectTimeout = null;
218
+ }
219
+ }
220
+ maybeReconnect() {
221
+ if (!this.currentSessionId)
222
+ return;
223
+ if (this.reconnectAttempts >= this.maxReconnectAttempts) {
224
+ console.error('[SessionSocket] Max reconnect attempts');
225
+ this.dispatch?.(setError('Max reconnect attempts reached'));
226
+ return;
227
+ }
228
+ this.reconnectAttempts++;
229
+ const delay = Math.min(1000 * Math.pow(2, this.reconnectAttempts), 30000);
230
+ console.log(`[SessionSocket] Reconnecting in ${delay}ms`);
231
+ this.reconnectTimeout = setTimeout(() => {
232
+ if (this.currentSessionId) {
233
+ this.connect(this.currentSessionId, this.currentUserId || undefined);
234
+ }
235
+ }, delay);
236
+ }
237
+ }
238
+ // Singleton instance
239
+ export const sessionSocketManager = new SessionSocketManager();
240
+ // =============================================================================
241
+ // Async Thunks
242
+ // =============================================================================
243
+ export const connectSession = createAsyncThunk('agentSession/connect', async ({ url, sessionId, userId }, { dispatch }) => {
244
+ sessionSocketManager.setDispatch(dispatch);
245
+ sessionSocketManager.setBaseUrl(url);
246
+ sessionSocketManager.connect(sessionId, userId);
247
+ });
248
+ export const disconnectSession = createAsyncThunk('agentSession/disconnect', async () => {
249
+ sessionSocketManager.disconnect();
250
+ });
251
+ export const startSandbox = createAsyncThunk('agentSession/startSandbox', async (payload) => {
252
+ if (typeof payload === 'string') {
253
+ // Legacy: just template string
254
+ sessionSocketManager.startSandbox(payload);
255
+ }
256
+ else if (payload) {
257
+ // New: full payload with bootstrap options
258
+ sessionSocketManager.startSandbox(payload.template, payload.bootstrap);
259
+ }
260
+ else {
261
+ sessionSocketManager.startSandbox();
262
+ }
263
+ });
264
+ export const stopSandbox = createAsyncThunk('agentSession/stopSandbox', async () => {
265
+ sessionSocketManager.stopSandbox();
266
+ });
267
+ export const execCommand = createAsyncThunk('agentSession/exec', async ({ cmd, cwd }) => {
268
+ sessionSocketManager.exec(cmd, cwd);
269
+ });
270
+ export const sendAgentMessage = createAsyncThunk('agentSession/sendMessage', async ({ content, model, config, systemPrompt, agentType }, { dispatch }) => {
271
+ // Add user message to state
272
+ dispatch(addUserMessage(content));
273
+ // Send via socket
274
+ sessionSocketManager.sendAgentMessage(content, model, config, systemPrompt, agentType);
275
+ });
276
+ export const stopAgent = createAsyncThunk('agentSession/stopAgent', async () => {
277
+ sessionSocketManager.stopAgent();
278
+ });
279
+ export const resetAgent = createAsyncThunk('agentSession/resetAgent', async (_, { dispatch }) => {
280
+ sessionSocketManager.resetAgent();
281
+ dispatch(clearAgentSession());
282
+ });
283
+ // =============================================================================
284
+ // Slice
285
+ // =============================================================================
286
+ const agentSessionSlice = createSlice({
287
+ name: 'agentSession',
288
+ initialState,
289
+ reducers: {
290
+ // Connection
291
+ setConnected: (state, action) => {
292
+ state.isConnected = true;
293
+ state.clientId = action.payload.clientId;
294
+ state.sessionId = action.payload.sessionId;
295
+ state.error = null;
296
+ },
297
+ setDisconnected: (state) => {
298
+ state.isConnected = false;
299
+ state.clientId = null;
300
+ },
301
+ // Sandbox
302
+ setReady: (state, action) => {
303
+ if (action.payload.sandboxId)
304
+ state.sandboxId = action.payload.sandboxId;
305
+ if (action.payload.sandboxUrl)
306
+ state.sandboxUrl = action.payload.sandboxUrl;
307
+ },
308
+ setSandboxStatus: (state, action) => {
309
+ state.sandboxStatus = action.payload.status;
310
+ if (action.payload.sandboxId)
311
+ state.sandboxId = action.payload.sandboxId;
312
+ if (action.payload.sandboxUrl)
313
+ state.sandboxUrl = action.payload.sandboxUrl;
314
+ if (action.payload.error)
315
+ state.error = action.payload.error;
316
+ },
317
+ setLifecycle: (state, action) => {
318
+ state.lifecycle = action.payload.phase;
319
+ state.lifecycleMessage = action.payload.message || null;
320
+ },
321
+ // Agent
322
+ agentStarted: (state) => {
323
+ state.agentStatus = 'streaming';
324
+ state.messages.push({
325
+ id: `msg-${Date.now()}`,
326
+ role: 'assistant',
327
+ content: '',
328
+ timestamp: Date.now(),
329
+ });
330
+ },
331
+ updateAgentMessage: (state, action) => {
332
+ const lastIdx = state.messages.length - 1;
333
+ if (lastIdx >= 0 && state.messages[lastIdx].role === 'assistant') {
334
+ state.messages[lastIdx].content = action.payload.content;
335
+ }
336
+ },
337
+ agentDone: (state, action) => {
338
+ state.agentStatus = 'idle';
339
+ if (action.payload.sessionId)
340
+ state.agentSessionId = action.payload.sessionId;
341
+ },
342
+ agentError: (state, action) => {
343
+ state.agentStatus = 'error';
344
+ state.error = action.payload.error;
345
+ },
346
+ addUserMessage: (state, action) => {
347
+ state.messages.push({
348
+ id: `msg-${Date.now()}`,
349
+ role: 'user',
350
+ content: action.payload,
351
+ timestamp: Date.now(),
352
+ });
353
+ state.error = null;
354
+ },
355
+ // Error
356
+ setError: (state, action) => {
357
+ state.error = action.payload;
358
+ },
359
+ // Reset
360
+ clearMessages: (state) => {
361
+ state.messages = [];
362
+ },
363
+ clearAgentSession: (state) => {
364
+ state.agentSessionId = null;
365
+ },
366
+ resetState: () => initialState,
367
+ },
368
+ });
369
+ export const { setConnected, setDisconnected, setReady, setSandboxStatus, setLifecycle, agentStarted, updateAgentMessage, agentDone, agentError, addUserMessage, setError, clearMessages, clearAgentSession, resetState, } = agentSessionSlice.actions;
370
+ export const selectIsConnected = (state) => state.agentSession.isConnected;
371
+ export const selectClientId = (state) => state.agentSession.clientId;
372
+ export const selectSessionId = (state) => state.agentSession.sessionId;
373
+ export const selectSandboxStatus = (state) => state.agentSession.sandboxStatus;
374
+ export const selectSandboxId = (state) => state.agentSession.sandboxId;
375
+ export const selectSandboxUrl = (state) => state.agentSession.sandboxUrl;
376
+ export const selectLifecycle = (state) => state.agentSession.lifecycle;
377
+ export const selectLifecycleMessage = (state) => state.agentSession.lifecycleMessage;
378
+ export const selectAgentStatus = (state) => state.agentSession.agentStatus;
379
+ export const selectAgentSessionId = (state) => state.agentSession.agentSessionId;
380
+ export const selectMessages = (state) => state.agentSession.messages;
381
+ export const selectError = (state) => state.agentSession.error;
382
+ export default agentSessionSlice.reducer;
383
+ //# sourceMappingURL=slice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slice.js","sourceRoot":"","sources":["../src/slice.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * React Hook for agent-session
3
3
  */
4
- import type { ServerEvent, SandboxLifecycle, SandboxStatus, ContentBlock } from '@steventsao/agent-session-core';
4
+ import type { ServerEvent, SandboxLifecycle, SandboxStatus, ContentBlock, SessionRefreshConfig } from '@steventsao/agent-session-core';
5
5
  export interface AgentMessage {
6
6
  id: string;
7
7
  role: 'user' | 'assistant';
@@ -17,6 +17,11 @@ export interface UseAgentSessionOptions {
17
17
  userId?: string;
18
18
  /** Auto-connect on mount (default: true if sessionId provided) */
19
19
  autoConnect?: boolean;
20
+ /**
21
+ * Session refresh configuration - controls behavior when sessionId changes.
22
+ * Default: 'reset' - clears all state when switching sessions (recommended for document isolation)
23
+ */
24
+ refreshConfig?: SessionRefreshConfig;
20
25
  /** Event callbacks */
21
26
  onLifecycle?: (phase: SandboxLifecycle, message?: string) => void;
22
27
  onAgentMessage?: (event: ServerEvent) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"use-agent-session.d.ts","sourceRoot":"","sources":["../src/use-agent-session.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EACV,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,YAAY,EACb,MAAM,gCAAgC,CAAC;AAExC,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,YAAY,EAAE,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,+DAA+D;IAC/D,GAAG,EAAE,MAAM,CAAC;IACZ,+BAA+B;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kEAAkE;IAClE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,sBAAsB;IACtB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAClE,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IAC9C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,qBAAqB;IAEpC,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAGzB,aAAa,EAAE,aAAa,CAAC;IAC7B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,gBAAgB,CAAC;IAC5B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAGhC,WAAW,EAAE,MAAM,GAAG,WAAW,GAAG,OAAO,CAAC;IAC5C,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAG9B,QAAQ,EAAE,YAAY,EAAE,CAAC;IAGzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAGrB,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACtD,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,YAAY,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,WAAW,EAAE,CACX,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,EACzC,OAAO,CAAC,EAAE;QACR,MAAM,CAAC,EAAE;YAAE,WAAW,CAAC,EAAE,MAAM,CAAC;YAAC,SAAS,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACtD,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,KACE,IAAI,CAAC;IACV,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,aAAa,EAAE,MAAM,IAAI,CAAC;CAC3B;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,qBAAqB,CAwOtF"}
1
+ {"version":3,"file":"use-agent-session.d.ts","sourceRoot":"","sources":["../src/use-agent-session.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EACV,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,oBAAoB,EACrB,MAAM,gCAAgC,CAAC;AAMxC,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,YAAY,EAAE,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,+DAA+D;IAC/D,GAAG,EAAE,MAAM,CAAC;IACZ,+BAA+B;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kEAAkE;IAClE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrC,sBAAsB;IACtB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAClE,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IAC9C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,qBAAqB;IAEpC,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAGzB,aAAa,EAAE,aAAa,CAAC;IAC7B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,gBAAgB,CAAC;IAC5B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAGhC,WAAW,EAAE,MAAM,GAAG,WAAW,GAAG,OAAO,CAAC;IAC5C,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAG9B,QAAQ,EAAE,YAAY,EAAE,CAAC;IAGzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAGrB,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACtD,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,YAAY,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,WAAW,EAAE,CACX,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,EACzC,OAAO,CAAC,EAAE;QACR,MAAM,CAAC,EAAE;YAAE,WAAW,CAAC,EAAE,MAAM,CAAC;YAAC,SAAS,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACtD,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,KACE,IAAI,CAAC;IACV,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,aAAa,EAAE,MAAM,IAAI,CAAC;CAC3B;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,qBAAqB,CAsStF"}
@@ -3,9 +3,20 @@
3
3
  */
4
4
  import { useEffect, useState, useCallback, useRef } from 'react';
5
5
  import { AgentSessionClient } from './client';
6
+ import { DEFAULT_SESSION_REFRESH_CONFIG, shouldResetOnSessionChange, } from '@steventsao/agent-session-core';
6
7
  export function useAgentSession(options) {
7
- const { url, sessionId, userId, autoConnect = true, onLifecycle, onAgentMessage, onError } = options;
8
+ const { url, sessionId, userId, autoConnect = true, refreshConfig = DEFAULT_SESSION_REFRESH_CONFIG, onLifecycle, onAgentMessage, onError, } = options;
8
9
  const clientRef = useRef(null);
10
+ const unsubscribersRef = useRef([]);
11
+ const prevSessionIdRef = useRef(null);
12
+ // Store callbacks in refs to avoid dependency issues (Redux best practice)
13
+ const onLifecycleRef = useRef(onLifecycle);
14
+ const onAgentMessageRef = useRef(onAgentMessage);
15
+ const onErrorRef = useRef(onError);
16
+ // Update refs on each render
17
+ onLifecycleRef.current = onLifecycle;
18
+ onAgentMessageRef.current = onAgentMessage;
19
+ onErrorRef.current = onError;
9
20
  // Connection state
10
21
  const [isConnected, setIsConnected] = useState(false);
11
22
  const [clientId, setClientId] = useState(null);
@@ -22,10 +33,44 @@ export function useAgentSession(options) {
22
33
  const [messages, setMessages] = useState([]);
23
34
  // Error state
24
35
  const [error, setError] = useState(null);
36
+ // Reset state when sessionId changes (based on refreshConfig)
37
+ useEffect(() => {
38
+ if (shouldResetOnSessionChange(refreshConfig, prevSessionIdRef.current, sessionId || null)) {
39
+ console.log(`[useAgentSession] Session changed: ${prevSessionIdRef.current} -> ${sessionId}, resetting state`);
40
+ // Reset sandbox state
41
+ setSandboxId(null);
42
+ setSandboxUrl(null);
43
+ setSandboxStatus('idle');
44
+ setLifecycle('idle');
45
+ setLifecycleMessage(null);
46
+ // Reset agent state based on config
47
+ if (refreshConfig.clearMessagesOnReset !== false) {
48
+ setMessages([]);
49
+ }
50
+ if (refreshConfig.clearAgentSessionOnReset !== false) {
51
+ setAgentSessionId(null);
52
+ }
53
+ setAgentStatus('idle');
54
+ setError(null);
55
+ }
56
+ prevSessionIdRef.current = sessionId || null;
57
+ }, [sessionId, refreshConfig]);
25
58
  // Initialize client when sessionId is available
59
+ // CRITICAL: Only depend on stable values (url, sessionId, userId, autoConnect)
60
+ // Callbacks are accessed via refs to prevent reconnection loops
26
61
  useEffect(() => {
27
62
  if (!sessionId)
28
63
  return;
64
+ // Already connected to same session - don't recreate
65
+ if (clientRef.current &&
66
+ clientRef.current.isConnected &&
67
+ connectedSessionId === sessionId) {
68
+ return;
69
+ }
70
+ // Cleanup previous client
71
+ unsubscribersRef.current.forEach((unsub) => unsub());
72
+ unsubscribersRef.current = [];
73
+ clientRef.current?.disconnect();
29
74
  const client = new AgentSessionClient({
30
75
  url,
31
76
  sessionId,
@@ -33,19 +78,18 @@ export function useAgentSession(options) {
33
78
  autoConnect: false,
34
79
  });
35
80
  clientRef.current = client;
36
- // Set up event handlers
37
- const unsubscribers = [];
38
- unsubscribers.push(client.on('CONNECTED', (event) => {
81
+ // Set up event handlers (use refs for callbacks)
82
+ unsubscribersRef.current.push(client.on('CONNECTED', (event) => {
39
83
  setIsConnected(true);
40
84
  setClientId(event.clientId);
41
85
  setConnectedSessionId(event.sessionId);
42
86
  setError(null);
43
87
  }));
44
- unsubscribers.push(client.on('READY', (event) => {
88
+ unsubscribersRef.current.push(client.on('READY', (event) => {
45
89
  setSandboxId(event.sandboxId);
46
90
  setSandboxUrl(event.sandboxUrl);
47
91
  }));
48
- unsubscribers.push(client.on('SANDBOX_STATUS', (event) => {
92
+ unsubscribersRef.current.push(client.on('SANDBOX_STATUS', (event) => {
49
93
  setSandboxStatus(event.status);
50
94
  if (event.sandboxId)
51
95
  setSandboxId(event.sandboxId);
@@ -54,12 +98,12 @@ export function useAgentSession(options) {
54
98
  if (event.error)
55
99
  setError(event.error);
56
100
  }));
57
- unsubscribers.push(client.on('LIFECYCLE', (event) => {
101
+ unsubscribersRef.current.push(client.on('LIFECYCLE', (event) => {
58
102
  setLifecycle(event.phase);
59
103
  setLifecycleMessage(event.message || null);
60
- onLifecycle?.(event.phase, event.message);
104
+ onLifecycleRef.current?.(event.phase, event.message);
61
105
  }));
62
- unsubscribers.push(client.on('AGENT_STARTED', () => {
106
+ unsubscribersRef.current.push(client.on('AGENT_STARTED', () => {
63
107
  setAgentStatus('streaming');
64
108
  const id = `msg-${Date.now()}`;
65
109
  setMessages((prev) => [
@@ -67,8 +111,8 @@ export function useAgentSession(options) {
67
111
  { id, role: 'assistant', content: '', timestamp: Date.now() },
68
112
  ]);
69
113
  }));
70
- unsubscribers.push(client.on('AGENT_MESSAGE', (event) => {
71
- onAgentMessage?.(event);
114
+ unsubscribersRef.current.push(client.on('AGENT_MESSAGE', (event) => {
115
+ onAgentMessageRef.current?.(event);
72
116
  if (event.message?.content) {
73
117
  setMessages((prev) => {
74
118
  const lastIdx = prev.length - 1;
@@ -84,21 +128,21 @@ export function useAgentSession(options) {
84
128
  });
85
129
  }
86
130
  }));
87
- unsubscribers.push(client.on('AGENT_DONE', (event) => {
131
+ unsubscribersRef.current.push(client.on('AGENT_DONE', (event) => {
88
132
  setAgentStatus('idle');
89
133
  if (event.sessionId)
90
134
  setAgentSessionId(event.sessionId);
91
135
  }));
92
- unsubscribers.push(client.on('AGENT_ERROR', (event) => {
136
+ unsubscribersRef.current.push(client.on('AGENT_ERROR', (event) => {
93
137
  setAgentStatus('error');
94
138
  setError(event.error);
95
- onError?.(event.error);
139
+ onErrorRef.current?.(event.error);
96
140
  }));
97
- unsubscribers.push(client.on('ERROR', (event) => {
141
+ unsubscribersRef.current.push(client.on('ERROR', (event) => {
98
142
  setError(event.msg);
99
- onError?.(event.msg);
143
+ onErrorRef.current?.(event.msg);
100
144
  }));
101
- unsubscribers.push(client.on('SYSTEM', (event) => {
145
+ unsubscribersRef.current.push(client.on('SYSTEM', (event) => {
102
146
  if (event.msg === 'Disconnected') {
103
147
  setIsConnected(false);
104
148
  }
@@ -108,10 +152,12 @@ export function useAgentSession(options) {
108
152
  client.connect();
109
153
  }
110
154
  return () => {
111
- unsubscribers.forEach((unsub) => unsub());
155
+ unsubscribersRef.current.forEach((unsub) => unsub());
156
+ unsubscribersRef.current = [];
112
157
  client.disconnect();
113
158
  };
114
- }, [url, sessionId, userId, autoConnect, onLifecycle, onAgentMessage, onError]);
159
+ // eslint-disable-next-line react-hooks/exhaustive-deps
160
+ }, [url, sessionId, userId, autoConnect]); // INTENTIONALLY omit callbacks - accessed via refs
115
161
  // Actions
116
162
  const connect = useCallback((sid, uid) => {
117
163
  if (clientRef.current) {
@@ -1 +1 @@
1
- {"version":3,"file":"use-agent-session.js","sourceRoot":"","sources":["../src/use-agent-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-agent-session.js","sourceRoot":"","sources":["../src/use-agent-session.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steventsao/agent-session",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "Client SDK for agent-session - WebSocket sessions with E2B sandboxes and AI agents",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -13,6 +13,10 @@
13
13
  "./react": {
14
14
  "types": "./dist/react.d.ts",
15
15
  "import": "./dist/react.js"
16
+ },
17
+ "./redux": {
18
+ "types": "./dist/slice.d.ts",
19
+ "import": "./dist/slice.js"
16
20
  }
17
21
  },
18
22
  "files": [
@@ -23,16 +27,21 @@
23
27
  "dev": "tsc --watch"
24
28
  },
25
29
  "dependencies": {
26
- "@steventsao/agent-session-core": "^0.1.0"
30
+ "@steventsao/agent-session-core": "^0.1.1"
27
31
  },
28
32
  "devDependencies": {
33
+ "@reduxjs/toolkit": "^2.0.0",
29
34
  "@types/react": "^18.0.0",
30
35
  "typescript": "^5.0.0"
31
36
  },
32
37
  "peerDependencies": {
38
+ "@reduxjs/toolkit": ">=2.0.0",
33
39
  "react": ">=18.0.0"
34
40
  },
35
41
  "peerDependenciesMeta": {
42
+ "@reduxjs/toolkit": {
43
+ "optional": true
44
+ },
36
45
  "react": {
37
46
  "optional": true
38
47
  }