@cuijy/free-api 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +299 -0
  3. package/bin/freeapi +8 -0
  4. package/dist/cli/commands/chat.d.ts +3 -0
  5. package/dist/cli/commands/chat.d.ts.map +1 -0
  6. package/dist/cli/commands/chat.js +39 -0
  7. package/dist/cli/commands/chat.js.map +1 -0
  8. package/dist/cli/commands/config.d.ts +3 -0
  9. package/dist/cli/commands/config.d.ts.map +1 -0
  10. package/dist/cli/commands/config.js +289 -0
  11. package/dist/cli/commands/config.js.map +1 -0
  12. package/dist/cli/commands/init.d.ts +3 -0
  13. package/dist/cli/commands/init.d.ts.map +1 -0
  14. package/dist/cli/commands/init.js +114 -0
  15. package/dist/cli/commands/init.js.map +1 -0
  16. package/dist/cli/commands/list.d.ts +3 -0
  17. package/dist/cli/commands/list.d.ts.map +1 -0
  18. package/dist/cli/commands/list.js +109 -0
  19. package/dist/cli/commands/list.js.map +1 -0
  20. package/dist/cli/commands/logs.d.ts +3 -0
  21. package/dist/cli/commands/logs.d.ts.map +1 -0
  22. package/dist/cli/commands/logs.js +51 -0
  23. package/dist/cli/commands/logs.js.map +1 -0
  24. package/dist/cli/commands/start.d.ts +3 -0
  25. package/dist/cli/commands/start.d.ts.map +1 -0
  26. package/dist/cli/commands/start.js +34 -0
  27. package/dist/cli/commands/start.js.map +1 -0
  28. package/dist/cli/commands/status.d.ts +3 -0
  29. package/dist/cli/commands/status.d.ts.map +1 -0
  30. package/dist/cli/commands/status.js +45 -0
  31. package/dist/cli/commands/status.js.map +1 -0
  32. package/dist/cli/commands/stop.d.ts +3 -0
  33. package/dist/cli/commands/stop.d.ts.map +1 -0
  34. package/dist/cli/commands/stop.js +54 -0
  35. package/dist/cli/commands/stop.js.map +1 -0
  36. package/dist/cli/index.d.ts +3 -0
  37. package/dist/cli/index.d.ts.map +1 -0
  38. package/dist/cli/index.js +79 -0
  39. package/dist/cli/index.js.map +1 -0
  40. package/dist/index.d.ts +7 -0
  41. package/dist/index.d.ts.map +1 -0
  42. package/dist/index.js +17 -0
  43. package/dist/index.js.map +1 -0
  44. package/dist/services/base/index.d.ts +112 -0
  45. package/dist/services/base/index.d.ts.map +1 -0
  46. package/dist/services/base/index.js +51 -0
  47. package/dist/services/base/index.js.map +1 -0
  48. package/dist/services/base/types.d.ts +114 -0
  49. package/dist/services/base/types.d.ts.map +1 -0
  50. package/dist/services/base/types.js +7 -0
  51. package/dist/services/base/types.js.map +1 -0
  52. package/dist/services/chatgpt/api-client.d.ts +81 -0
  53. package/dist/services/chatgpt/api-client.d.ts.map +1 -0
  54. package/dist/services/chatgpt/api-client.js +325 -0
  55. package/dist/services/chatgpt/api-client.js.map +1 -0
  56. package/dist/services/chatgpt/cli-adapter.d.ts +108 -0
  57. package/dist/services/chatgpt/cli-adapter.d.ts.map +1 -0
  58. package/dist/services/chatgpt/cli-adapter.js +315 -0
  59. package/dist/services/chatgpt/cli-adapter.js.map +1 -0
  60. package/dist/services/chatgpt/config-manager.d.ts +87 -0
  61. package/dist/services/chatgpt/config-manager.d.ts.map +1 -0
  62. package/dist/services/chatgpt/config-manager.js +344 -0
  63. package/dist/services/chatgpt/config-manager.js.map +1 -0
  64. package/dist/services/chatgpt/config-wizard.d.ts +35 -0
  65. package/dist/services/chatgpt/config-wizard.d.ts.map +1 -0
  66. package/dist/services/chatgpt/config-wizard.js +524 -0
  67. package/dist/services/chatgpt/config-wizard.js.map +1 -0
  68. package/dist/services/chatgpt/error-handler.d.ts +94 -0
  69. package/dist/services/chatgpt/error-handler.d.ts.map +1 -0
  70. package/dist/services/chatgpt/error-handler.js +409 -0
  71. package/dist/services/chatgpt/error-handler.js.map +1 -0
  72. package/dist/services/chatgpt/exports.d.ts +71 -0
  73. package/dist/services/chatgpt/exports.d.ts.map +1 -0
  74. package/dist/services/chatgpt/exports.js +81 -0
  75. package/dist/services/chatgpt/exports.js.map +1 -0
  76. package/dist/services/chatgpt/index.d.ts +125 -0
  77. package/dist/services/chatgpt/index.d.ts.map +1 -0
  78. package/dist/services/chatgpt/index.js +394 -0
  79. package/dist/services/chatgpt/index.js.map +1 -0
  80. package/dist/services/chatgpt/service-adapter.d.ts +152 -0
  81. package/dist/services/chatgpt/service-adapter.d.ts.map +1 -0
  82. package/dist/services/chatgpt/service-adapter.js +430 -0
  83. package/dist/services/chatgpt/service-adapter.js.map +1 -0
  84. package/dist/services/chatgpt/session-manager.d.ts +113 -0
  85. package/dist/services/chatgpt/session-manager.d.ts.map +1 -0
  86. package/dist/services/chatgpt/session-manager.js +396 -0
  87. package/dist/services/chatgpt/session-manager.js.map +1 -0
  88. package/dist/services/chatgpt/types.d.ts +130 -0
  89. package/dist/services/chatgpt/types.d.ts.map +1 -0
  90. package/dist/services/chatgpt/types.js +19 -0
  91. package/dist/services/chatgpt/types.js.map +1 -0
  92. package/dist/utils/config.d.ts +61 -0
  93. package/dist/utils/config.d.ts.map +1 -0
  94. package/dist/utils/config.js +215 -0
  95. package/dist/utils/config.js.map +1 -0
  96. package/package.json +91 -0
@@ -0,0 +1,113 @@
1
+ /**
2
+ * ChatGPT Session Manager
3
+ * Handles user authentication, session management, and token refresh
4
+ */
5
+ import { ChatGPTConfig, AuthenticationResponse, Conversation } from './types';
6
+ import { ChatGPTAPIClient } from './api-client';
7
+ import { EventEmitter } from 'events';
8
+ export interface SessionData {
9
+ session_id: string;
10
+ user_id?: string;
11
+ email?: string;
12
+ access_token?: string;
13
+ refresh_token?: string;
14
+ session_token?: string;
15
+ expires_at: number;
16
+ created_at: number;
17
+ last_activity: number;
18
+ conversations: Map<string, Conversation>;
19
+ token_count: number;
20
+ }
21
+ export declare class ChatGPTSessionManager extends EventEmitter {
22
+ private client;
23
+ private config;
24
+ private sessions;
25
+ private currentSessionId?;
26
+ private refreshInterval?;
27
+ constructor(client: ChatGPTAPIClient, config: ChatGPTConfig);
28
+ /**
29
+ * Set up event listeners
30
+ */
31
+ private setupEventListeners;
32
+ /**
33
+ * Authenticate user (for authenticated mode)
34
+ */
35
+ authenticate(email: string, password: string): Promise<AuthenticationResponse>;
36
+ /**
37
+ * Authenticate with ChatGPT API
38
+ */
39
+ private authenticateWithChatGPT;
40
+ /**
41
+ * Create a new session
42
+ */
43
+ private createSession;
44
+ /**
45
+ * Refresh session token
46
+ */
47
+ refreshSession(): Promise<boolean>;
48
+ /**
49
+ * Start automatic session refresh
50
+ */
51
+ private startSessionRefresh;
52
+ /**
53
+ * Get current session
54
+ */
55
+ getCurrentSession(): SessionData | undefined;
56
+ /**
57
+ * Switch to a different session
58
+ */
59
+ switchSession(sessionId: string): boolean;
60
+ /**
61
+ * Clear current session
62
+ */
63
+ clearCurrentSession(): void;
64
+ /**
65
+ * Get all sessions
66
+ */
67
+ getAllSessions(): SessionData[];
68
+ /**
69
+ * Add conversation to current session
70
+ */
71
+ addConversation(conversation: Conversation): void;
72
+ /**
73
+ * Get conversation by ID
74
+ */
75
+ getConversation(conversationId: string): Conversation | undefined;
76
+ /**
77
+ * Get all conversations in current session
78
+ */
79
+ getAllConversations(): Conversation[];
80
+ /**
81
+ * Delete conversation
82
+ */
83
+ deleteConversation(conversationId: string): boolean;
84
+ /**
85
+ * Update conversation
86
+ */
87
+ updateConversation(conversation: Conversation): boolean;
88
+ /**
89
+ * Get session statistics
90
+ */
91
+ getSessionStats(): {
92
+ total_sessions: number;
93
+ active_session?: string;
94
+ total_conversations: number;
95
+ total_tokens: number;
96
+ };
97
+ /**
98
+ * Clean up expired sessions
99
+ */
100
+ cleanupExpiredSessions(): number;
101
+ /**
102
+ * Generate unique session ID
103
+ */
104
+ private generateSessionId;
105
+ /**
106
+ * Utility function for delays
107
+ */
108
+ /**
109
+ * Clean up resources
110
+ */
111
+ destroy(): void;
112
+ }
113
+ //# sourceMappingURL=session-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../../src/services/chatgpt/session-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAe,sBAAsB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGtC,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACzC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,qBAAsB,SAAQ,YAAY;IACrD,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,QAAQ,CAAuC;IACvD,OAAO,CAAC,gBAAgB,CAAC,CAAS;IAClC,OAAO,CAAC,eAAe,CAAC,CAAiB;gBAE7B,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,aAAa;IAc3D;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAW3B;;OAEG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAwCpF;;OAEG;YACW,uBAAuB;IA8BrC;;OAEG;YACW,aAAa;IAuB3B;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IA4BxC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAiB3B;;OAEG;IACH,iBAAiB,IAAI,WAAW,GAAG,SAAS;IAO5C;;OAEG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IA8BzC;;OAEG;IACH,mBAAmB,IAAI,IAAI;IAe3B;;OAEG;IACH,cAAc,IAAI,WAAW,EAAE;IAI/B;;OAEG;IACH,eAAe,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI;IAUjD;;OAEG;IACH,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAQjE;;OAEG;IACH,mBAAmB,IAAI,YAAY,EAAE;IAQrC;;OAEG;IACH,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO;IAenD;;OAEG;IACH,kBAAkB,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO;IAgBvD;;OAEG;IACH,eAAe,IAAI;QACjB,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,YAAY,EAAE,MAAM,CAAC;KACtB;IAiBD;;OAEG;IACH,sBAAsB,IAAI,MAAM;IAkBhC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;OAEG;IAKH;;OAEG;IACH,OAAO,IAAI,IAAI;CAQhB"}
@@ -0,0 +1,396 @@
1
+ "use strict";
2
+ /**
3
+ * ChatGPT Session Manager
4
+ * Handles user authentication, session management, and token refresh
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.ChatGPTSessionManager = void 0;
41
+ const types_1 = require("./types");
42
+ const events_1 = require("events");
43
+ const crypto = __importStar(require("crypto"));
44
+ class ChatGPTSessionManager extends events_1.EventEmitter {
45
+ client;
46
+ config;
47
+ sessions = new Map();
48
+ currentSessionId;
49
+ refreshInterval;
50
+ constructor(client, config) {
51
+ super();
52
+ this.client = client;
53
+ this.config = config;
54
+ // Set up event listeners
55
+ this.setupEventListeners();
56
+ // Start session refresh interval if in authenticated mode
57
+ if (config.mode === types_1.ChatGPTMode.AUTHENTICATED) {
58
+ this.startSessionRefresh();
59
+ }
60
+ }
61
+ /**
62
+ * Set up event listeners
63
+ */
64
+ setupEventListeners() {
65
+ this.client.on('auth:invalid', () => {
66
+ this.emit('session:expired');
67
+ this.clearCurrentSession();
68
+ });
69
+ this.client.on('error', (error) => {
70
+ this.emit('session:error', error);
71
+ });
72
+ }
73
+ /**
74
+ * Authenticate user (for authenticated mode)
75
+ */
76
+ async authenticate(email, password) {
77
+ if (this.config.mode !== types_1.ChatGPTMode.AUTHENTICATED) {
78
+ throw new Error('Authentication only available in authenticated mode');
79
+ }
80
+ try {
81
+ this.emit('auth:start');
82
+ // Use real ChatGPT authentication
83
+ const authResponse = await this.authenticateWithChatGPT(email, password);
84
+ if (authResponse.authenticated) {
85
+ // Create new session
86
+ const session = await this.createSession(authResponse);
87
+ this.currentSessionId = session.session_id;
88
+ // Update client configuration with tokens
89
+ this.client.updateConfig({
90
+ credentials: {
91
+ email,
92
+ password,
93
+ access_token: authResponse.access_token,
94
+ refresh_token: authResponse.refresh_token,
95
+ session_token: authResponse.session_token
96
+ }
97
+ });
98
+ this.emit('auth:success', authResponse);
99
+ this.emit('session:created', session);
100
+ }
101
+ else {
102
+ this.emit('auth:failed', { email, reason: 'Invalid credentials' });
103
+ }
104
+ return authResponse;
105
+ }
106
+ catch (error) {
107
+ this.emit('auth:error', error);
108
+ throw error;
109
+ }
110
+ }
111
+ /**
112
+ * Authenticate with ChatGPT API
113
+ */
114
+ async authenticateWithChatGPT(email, _password) {
115
+ try {
116
+ // Note: ChatGPT web interface uses a different authentication flow than the API
117
+ // For API access, users typically use API keys, not email/password
118
+ // For web access, we would need to simulate browser login
119
+ // For now, we'll support two modes:
120
+ // 1. API Key mode (recommended) - uses OpenAI API key
121
+ // 2. Web login mode (experimental) - would require browser automation
122
+ if (this.config.api_key) {
123
+ // API Key authentication
124
+ return {
125
+ authenticated: true,
126
+ user_id: 'api_user',
127
+ email,
128
+ access_token: this.config.api_key,
129
+ expires_in: 0 // API keys don't expire
130
+ };
131
+ }
132
+ else {
133
+ // Web login would require browser automation (puppeteer/playwright)
134
+ // For now, we'll return an error
135
+ throw new Error('Web login not yet implemented. Please use API key authentication.');
136
+ }
137
+ }
138
+ catch (error) {
139
+ this.emit('auth:error', error);
140
+ throw error;
141
+ }
142
+ }
143
+ /**
144
+ * Create a new session
145
+ */
146
+ async createSession(authResponse) {
147
+ const sessionId = this.generateSessionId();
148
+ const now = Date.now();
149
+ const expiresAt = now + (authResponse.expires_in || 3600) * 1000;
150
+ const session = {
151
+ session_id: sessionId,
152
+ user_id: authResponse.user_id,
153
+ email: authResponse.email,
154
+ access_token: authResponse.access_token,
155
+ refresh_token: authResponse.refresh_token,
156
+ session_token: authResponse.session_token,
157
+ expires_at: expiresAt,
158
+ created_at: now,
159
+ last_activity: now,
160
+ conversations: new Map(),
161
+ token_count: 0
162
+ };
163
+ this.sessions.set(sessionId, session);
164
+ return session;
165
+ }
166
+ /**
167
+ * Refresh session token
168
+ */
169
+ async refreshSession() {
170
+ const session = this.getCurrentSession();
171
+ if (!session) {
172
+ return false;
173
+ }
174
+ try {
175
+ this.emit('session:refresh:start');
176
+ // For API key authentication, there's no refresh needed
177
+ // API keys don't expire, just update last activity
178
+ if (session.access_token && session.access_token.startsWith('sk-')) {
179
+ session.last_activity = Date.now();
180
+ this.sessions.set(session.session_id, session);
181
+ this.emit('session:refreshed', session);
182
+ return true;
183
+ }
184
+ // For web login, we would need to refresh the session
185
+ // This is not implemented yet
186
+ this.emit('session:refresh:error', new Error('Session refresh not supported for web login'));
187
+ return false;
188
+ }
189
+ catch (error) {
190
+ this.emit('session:refresh:error', error);
191
+ return false;
192
+ }
193
+ }
194
+ /**
195
+ * Start automatic session refresh
196
+ */
197
+ startSessionRefresh() {
198
+ if (this.refreshInterval) {
199
+ clearInterval(this.refreshInterval);
200
+ }
201
+ // Refresh 5 minutes before expiration
202
+ this.refreshInterval = setInterval(async () => {
203
+ const session = this.getCurrentSession();
204
+ if (session && session.expires_at) {
205
+ const timeUntilExpiry = session.expires_at - Date.now();
206
+ if (timeUntilExpiry < 5 * 60 * 1000) { // 5 minutes
207
+ await this.refreshSession();
208
+ }
209
+ }
210
+ }, 60 * 1000); // Check every minute
211
+ }
212
+ /**
213
+ * Get current session
214
+ */
215
+ getCurrentSession() {
216
+ if (!this.currentSessionId) {
217
+ return undefined;
218
+ }
219
+ return this.sessions.get(this.currentSessionId);
220
+ }
221
+ /**
222
+ * Switch to a different session
223
+ */
224
+ switchSession(sessionId) {
225
+ if (!this.sessions.has(sessionId)) {
226
+ return false;
227
+ }
228
+ const oldSessionId = this.currentSessionId;
229
+ this.currentSessionId = sessionId;
230
+ const session = this.sessions.get(sessionId);
231
+ // Update client with session tokens
232
+ this.client.updateConfig({
233
+ credentials: {
234
+ email: session.email || '',
235
+ password: '', // Password is not stored for security
236
+ access_token: session.access_token,
237
+ refresh_token: session.refresh_token,
238
+ session_token: session.session_token || ''
239
+ }
240
+ });
241
+ this.emit('session:switched', {
242
+ from: oldSessionId,
243
+ to: sessionId,
244
+ session
245
+ });
246
+ return true;
247
+ }
248
+ /**
249
+ * Clear current session
250
+ */
251
+ clearCurrentSession() {
252
+ if (this.currentSessionId) {
253
+ const session = this.sessions.get(this.currentSessionId);
254
+ this.sessions.delete(this.currentSessionId);
255
+ this.currentSessionId = undefined;
256
+ // Clear client credentials
257
+ this.client.updateConfig({
258
+ credentials: undefined
259
+ });
260
+ this.emit('session:cleared', session);
261
+ }
262
+ }
263
+ /**
264
+ * Get all sessions
265
+ */
266
+ getAllSessions() {
267
+ return Array.from(this.sessions.values());
268
+ }
269
+ /**
270
+ * Add conversation to current session
271
+ */
272
+ addConversation(conversation) {
273
+ const session = this.getCurrentSession();
274
+ if (session) {
275
+ session.conversations.set(conversation.id, conversation);
276
+ session.last_activity = Date.now();
277
+ session.token_count += conversation.token_count;
278
+ this.emit('conversation:added', { sessionId: session.session_id, conversation });
279
+ }
280
+ }
281
+ /**
282
+ * Get conversation by ID
283
+ */
284
+ getConversation(conversationId) {
285
+ const session = this.getCurrentSession();
286
+ if (session) {
287
+ return session.conversations.get(conversationId);
288
+ }
289
+ return undefined;
290
+ }
291
+ /**
292
+ * Get all conversations in current session
293
+ */
294
+ getAllConversations() {
295
+ const session = this.getCurrentSession();
296
+ if (session) {
297
+ return Array.from(session.conversations.values());
298
+ }
299
+ return [];
300
+ }
301
+ /**
302
+ * Delete conversation
303
+ */
304
+ deleteConversation(conversationId) {
305
+ const session = this.getCurrentSession();
306
+ if (session) {
307
+ const conversation = session.conversations.get(conversationId);
308
+ if (conversation) {
309
+ session.conversations.delete(conversationId);
310
+ session.token_count -= conversation.token_count;
311
+ session.last_activity = Date.now();
312
+ this.emit('conversation:deleted', { sessionId: session.session_id, conversationId });
313
+ return true;
314
+ }
315
+ }
316
+ return false;
317
+ }
318
+ /**
319
+ * Update conversation
320
+ */
321
+ updateConversation(conversation) {
322
+ const session = this.getCurrentSession();
323
+ if (session) {
324
+ const oldConversation = session.conversations.get(conversation.id);
325
+ if (oldConversation) {
326
+ session.token_count -= oldConversation.token_count;
327
+ session.token_count += conversation.token_count;
328
+ }
329
+ session.conversations.set(conversation.id, conversation);
330
+ session.last_activity = Date.now();
331
+ this.emit('conversation:updated', { sessionId: session.session_id, conversation });
332
+ return true;
333
+ }
334
+ return false;
335
+ }
336
+ /**
337
+ * Get session statistics
338
+ */
339
+ getSessionStats() {
340
+ let totalConversations = 0;
341
+ let totalTokens = 0;
342
+ this.sessions.forEach(session => {
343
+ totalConversations += session.conversations.size;
344
+ totalTokens += session.token_count;
345
+ });
346
+ return {
347
+ total_sessions: this.sessions.size,
348
+ active_session: this.currentSessionId,
349
+ total_conversations: totalConversations,
350
+ total_tokens: totalTokens
351
+ };
352
+ }
353
+ /**
354
+ * Clean up expired sessions
355
+ */
356
+ cleanupExpiredSessions() {
357
+ const now = Date.now();
358
+ let cleanedCount = 0;
359
+ for (const [sessionId, session] of this.sessions.entries()) {
360
+ if (session.expires_at < now) {
361
+ this.sessions.delete(sessionId);
362
+ if (this.currentSessionId === sessionId) {
363
+ this.currentSessionId = undefined;
364
+ }
365
+ cleanedCount++;
366
+ this.emit('session:expired:cleanup', session);
367
+ }
368
+ }
369
+ return cleanedCount;
370
+ }
371
+ /**
372
+ * Generate unique session ID
373
+ */
374
+ generateSessionId() {
375
+ return `sess_${crypto.randomBytes(12).toString('hex')}`;
376
+ }
377
+ /**
378
+ * Utility function for delays
379
+ */
380
+ // private delay(ms: number): Promise<void> {
381
+ // return new Promise(resolve => setTimeout(resolve, ms));
382
+ // }
383
+ /**
384
+ * Clean up resources
385
+ */
386
+ destroy() {
387
+ if (this.refreshInterval) {
388
+ clearInterval(this.refreshInterval);
389
+ }
390
+ this.sessions.clear();
391
+ this.removeAllListeners();
392
+ this.emit('manager:destroyed');
393
+ }
394
+ }
395
+ exports.ChatGPTSessionManager = ChatGPTSessionManager;
396
+ //# sourceMappingURL=session-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../../../src/services/chatgpt/session-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,130 @@
1
+ /**
2
+ * ChatGPT API Types and Interfaces
3
+ */
4
+ export declare enum ChatGPTMode {
5
+ PUBLIC = "public",
6
+ AUTHENTICATED = "authenticated"
7
+ }
8
+ export declare enum ChatGPTModel {
9
+ GPT4 = "gpt-4",
10
+ GPT4_TURBO = "gpt-4-turbo-preview",
11
+ GPT35_TURBO = "gpt-3.5-turbo",
12
+ GPT35_TURBO_16K = "gpt-3.5-turbo-16k"
13
+ }
14
+ export interface ChatGPTConfig {
15
+ mode: ChatGPTMode;
16
+ enabled: boolean;
17
+ base_url: string;
18
+ api_key?: string;
19
+ organization_id?: string;
20
+ model: ChatGPTModel;
21
+ max_tokens: number;
22
+ temperature: number;
23
+ top_p: number;
24
+ frequency_penalty: number;
25
+ presence_penalty: number;
26
+ timeout: number;
27
+ max_retries: number;
28
+ retry_delay: number;
29
+ credentials?: {
30
+ email: string;
31
+ password: string;
32
+ session_token?: string;
33
+ access_token?: string;
34
+ refresh_token?: string;
35
+ };
36
+ requests_per_minute: number;
37
+ tokens_per_minute: number;
38
+ }
39
+ export interface ChatMessage {
40
+ role: 'system' | 'user' | 'assistant';
41
+ content: string;
42
+ name?: string;
43
+ }
44
+ export interface ChatCompletionRequest {
45
+ model: ChatGPTModel;
46
+ messages: ChatMessage[];
47
+ max_tokens?: number;
48
+ temperature?: number;
49
+ top_p?: number;
50
+ frequency_penalty?: number;
51
+ presence_penalty?: number;
52
+ stream?: boolean;
53
+ stop?: string | string[];
54
+ user?: string;
55
+ }
56
+ export interface ChatCompletionResponse {
57
+ id: string;
58
+ object: string;
59
+ created: number;
60
+ model: string;
61
+ choices: Array<{
62
+ index: number;
63
+ message: ChatMessage;
64
+ finish_reason: string;
65
+ }>;
66
+ usage: {
67
+ prompt_tokens: number;
68
+ completion_tokens: number;
69
+ total_tokens: number;
70
+ };
71
+ }
72
+ export interface Conversation {
73
+ id: string;
74
+ title: string;
75
+ created_at: number;
76
+ updated_at: number;
77
+ messages: ChatMessage[];
78
+ model: ChatGPTModel;
79
+ token_count: number;
80
+ }
81
+ export interface AuthenticationResponse {
82
+ authenticated: boolean;
83
+ user_id?: string;
84
+ email?: string;
85
+ access_token?: string;
86
+ refresh_token?: string;
87
+ expires_in?: number;
88
+ session_token?: string;
89
+ }
90
+ export interface UsageStats {
91
+ total_tokens: number;
92
+ prompt_tokens: number;
93
+ completion_tokens: number;
94
+ requests: number;
95
+ rate_limited: boolean;
96
+ last_reset: number;
97
+ }
98
+ export interface ErrorResponse {
99
+ error: {
100
+ message: string;
101
+ type: string;
102
+ param: string | null;
103
+ code: string;
104
+ };
105
+ }
106
+ export interface RateLimitInfo {
107
+ limit: number;
108
+ remaining: number;
109
+ reset: number;
110
+ used: number;
111
+ }
112
+ export interface APIConfig {
113
+ baseURL: string;
114
+ timeout: number;
115
+ headers: Record<string, string>;
116
+ maxRedirects: number;
117
+ maxContentLength: number;
118
+ maxBodyLength: number;
119
+ }
120
+ export interface RequestOptions {
121
+ method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
122
+ url: string;
123
+ data?: any;
124
+ params?: Record<string, any>;
125
+ headers?: Record<string, string>;
126
+ timeout?: number;
127
+ retry?: boolean;
128
+ maxRetries?: number;
129
+ }
130
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/chatgpt/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ /**
3
+ * ChatGPT API Types and Interfaces
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ChatGPTModel = exports.ChatGPTMode = void 0;
7
+ var ChatGPTMode;
8
+ (function (ChatGPTMode) {
9
+ ChatGPTMode["PUBLIC"] = "public";
10
+ ChatGPTMode["AUTHENTICATED"] = "authenticated";
11
+ })(ChatGPTMode || (exports.ChatGPTMode = ChatGPTMode = {}));
12
+ var ChatGPTModel;
13
+ (function (ChatGPTModel) {
14
+ ChatGPTModel["GPT4"] = "gpt-4";
15
+ ChatGPTModel["GPT4_TURBO"] = "gpt-4-turbo-preview";
16
+ ChatGPTModel["GPT35_TURBO"] = "gpt-3.5-turbo";
17
+ ChatGPTModel["GPT35_TURBO_16K"] = "gpt-3.5-turbo-16k";
18
+ })(ChatGPTModel || (exports.ChatGPTModel = ChatGPTModel = {}));
19
+ //# sourceMappingURL=types.js.map