@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,315 @@
1
+ "use strict";
2
+ /**
3
+ * ChatGPT CLI Adapter
4
+ * Integrates ChatGPT service with FreeAPI CLI framework
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.ChatGPTCliAdapter = void 0;
8
+ exports.createChatGPTCliAdapter = createChatGPTCliAdapter;
9
+ exports.registerChatGPTService = registerChatGPTService;
10
+ const exports_1 = require("./exports");
11
+ const base_1 = require("../base");
12
+ class ChatGPTCliAdapter extends base_1.BaseServiceAdapter {
13
+ service;
14
+ config;
15
+ constructor(config) {
16
+ super('chatgpt', config);
17
+ this.config = config;
18
+ // Create ChatGPT service instance
19
+ const encryptionKey = process.env.FREEAPI_ENCRYPTION_KEY || 'default-key-change-me';
20
+ this.service = (0, exports_1.createChatGPTService)(encryptionKey);
21
+ // Set up event forwarding
22
+ this.setupEventForwarding();
23
+ }
24
+ /**
25
+ * Set up event forwarding
26
+ */
27
+ setupEventForwarding() {
28
+ // Forward service events to base adapter
29
+ this.service.on('service:initializing', () => this.emit('service:initializing', this.name));
30
+ this.service.on('service:initialized', () => this.emit('service:initialized', this.name));
31
+ this.service.on('service:init:error', (error) => this.emit('service:error', this.name, error));
32
+ this.service.on('chat:start', (data) => this.emit('chat:start', this.name, data));
33
+ this.service.on('chat:success', (data) => this.emit('chat:success', this.name, data));
34
+ this.service.on('chat:error', (data) => this.emit('chat:error', this.name, data));
35
+ this.service.on('config:loaded', (config) => this.emit('config:loaded', this.name, config));
36
+ this.service.on('config:saved', (config) => this.emit('config:saved', this.name, config));
37
+ this.service.on('config:updated', (config) => this.emit('config:updated', this.name, config));
38
+ this.service.on('error:handled', (error) => this.emit('service:error', this.name, error));
39
+ this.service.on('log', (logEntry) => this.emit('service:log', this.name, logEntry));
40
+ }
41
+ /**
42
+ * Initialize the service
43
+ */
44
+ async initialize() {
45
+ try {
46
+ await this.service.initialize();
47
+ this.status = 'ready';
48
+ this.emit('service:ready', this.name);
49
+ }
50
+ catch (error) {
51
+ this.status = 'error';
52
+ this.emit('service:error', this.name, error);
53
+ throw error;
54
+ }
55
+ }
56
+ /**
57
+ * Send a chat message
58
+ */
59
+ async sendMessage(request) {
60
+ if (this.status !== 'ready') {
61
+ await this.initialize();
62
+ }
63
+ try {
64
+ const options = {
65
+ conversationId: request.conversationId,
66
+ stream: request.stream,
67
+ temperature: request.temperature,
68
+ maxTokens: request.maxTokens,
69
+ systemPrompt: request.systemPrompt
70
+ };
71
+ const response = await this.service.sendMessage(request.message, options);
72
+ return {
73
+ id: response.conversationId,
74
+ message: response.message.content,
75
+ conversationId: response.conversationId,
76
+ usage: response.usage,
77
+ finishReason: response.finish_reason,
78
+ timestamp: Date.now()
79
+ };
80
+ }
81
+ catch (error) {
82
+ this.emit('service:error', this.name, error);
83
+ throw error;
84
+ }
85
+ }
86
+ /**
87
+ * Get service status
88
+ */
89
+ async getStatus() {
90
+ const serviceStatus = this.service.getStatus();
91
+ const usageStats = this.service.getUsageStats();
92
+ return {
93
+ name: this.name,
94
+ status: this.status,
95
+ enabled: this.config.enabled,
96
+ mode: serviceStatus.mode,
97
+ authenticated: serviceStatus.authenticated,
98
+ hasActiveSession: serviceStatus.hasActiveSession,
99
+ totalConversations: serviceStatus.totalConversations,
100
+ totalTokens: serviceStatus.totalTokens,
101
+ rateLimited: serviceStatus.rateLimited,
102
+ errorCount: 0, // TODO: Get from error handler
103
+ lastError: undefined,
104
+ usage: {
105
+ totalTokens: usageStats.total_tokens,
106
+ promptTokens: usageStats.prompt_tokens,
107
+ completionTokens: usageStats.completion_tokens,
108
+ requests: usageStats.requests
109
+ }
110
+ };
111
+ }
112
+ /**
113
+ * Get service information
114
+ */
115
+ async getInfo() {
116
+ const config = this.service.getConfiguration();
117
+ return {
118
+ name: 'ChatGPT',
119
+ version: '1.0.0',
120
+ description: 'OpenAI ChatGPT service with public and authenticated modes',
121
+ capabilities: ['chat', 'conversation_history', 'authentication'],
122
+ limitations: ['rate_limited', 'requires_api_key'],
123
+ config: {
124
+ base_url: config.base_url,
125
+ mode: config.mode,
126
+ model: config.model,
127
+ max_tokens: config.max_tokens,
128
+ temperature: config.temperature,
129
+ timeout: config.timeout
130
+ }
131
+ };
132
+ }
133
+ /**
134
+ * Update configuration
135
+ */
136
+ async updateConfig(newConfig) {
137
+ this.config = { ...this.config, ...newConfig };
138
+ // Convert to ChatGPT config format
139
+ const chatGPTConfig = this.convertToChatGPTConfig(newConfig);
140
+ this.service.updateConfiguration(chatGPTConfig);
141
+ this.emit('config:updated', this.name, this.config);
142
+ }
143
+ /**
144
+ * Convert FreeAPI service config to ChatGPT config
145
+ */
146
+ convertToChatGPTConfig(serviceConfig) {
147
+ const config = {};
148
+ if (serviceConfig.settings) {
149
+ if (serviceConfig.settings.base_url)
150
+ config.base_url = serviceConfig.settings.base_url;
151
+ if (serviceConfig.settings.model)
152
+ config.model = serviceConfig.settings.model;
153
+ if (serviceConfig.settings.max_tokens)
154
+ config.max_tokens = serviceConfig.settings.max_tokens;
155
+ if (serviceConfig.settings.temperature)
156
+ config.temperature = serviceConfig.settings.temperature;
157
+ if (serviceConfig.settings.timeout)
158
+ config.timeout = serviceConfig.settings.timeout;
159
+ }
160
+ if (serviceConfig.credentials) {
161
+ config.mode = 'authenticated';
162
+ config.credentials = {
163
+ email: serviceConfig.credentials.username,
164
+ password: serviceConfig.credentials.password
165
+ };
166
+ }
167
+ return config;
168
+ }
169
+ /**
170
+ * Authenticate user
171
+ */
172
+ async authenticate(credentials) {
173
+ try {
174
+ const response = await this.service.authenticate(credentials.username, credentials.password);
175
+ return response.authenticated;
176
+ }
177
+ catch (error) {
178
+ this.emit('service:error', this.name, error);
179
+ return false;
180
+ }
181
+ }
182
+ /**
183
+ * Test service connection
184
+ */
185
+ async testConnection() {
186
+ return this.service.testConnection();
187
+ }
188
+ /**
189
+ * Get conversations
190
+ */
191
+ async getConversations() {
192
+ const conversations = this.service.getAllConversations();
193
+ return conversations.map(conv => ({
194
+ id: conv.id,
195
+ title: conv.title,
196
+ created_at: conv.created_at,
197
+ updated_at: conv.updated_at,
198
+ message_count: conv.messages.length,
199
+ token_count: conv.token_count,
200
+ model: conv.model
201
+ }));
202
+ }
203
+ /**
204
+ * Get conversation by ID
205
+ */
206
+ async getConversation(conversationId) {
207
+ const conversation = this.service.getConversation(conversationId);
208
+ if (!conversation) {
209
+ throw new Error(`Conversation ${conversationId} not found`);
210
+ }
211
+ return {
212
+ id: conversation.id,
213
+ title: conversation.title,
214
+ created_at: conversation.created_at,
215
+ updated_at: conversation.updated_at,
216
+ messages: conversation.messages,
217
+ token_count: conversation.token_count,
218
+ model: conversation.model
219
+ };
220
+ }
221
+ /**
222
+ * Delete conversation
223
+ */
224
+ async deleteConversation(conversationId) {
225
+ return this.service.deleteConversation(conversationId);
226
+ }
227
+ /**
228
+ * Get usage statistics
229
+ */
230
+ async getUsage() {
231
+ const usageStats = this.service.getUsageStats();
232
+ return {
233
+ tokens: {
234
+ total: usageStats.total_tokens,
235
+ prompt: usageStats.prompt_tokens,
236
+ completion: usageStats.completion_tokens
237
+ },
238
+ requests: usageStats.requests,
239
+ rate_limited: usageStats.rate_limited,
240
+ errors: {
241
+ total: 0,
242
+ retryable: 0,
243
+ last_error: 0
244
+ }
245
+ };
246
+ }
247
+ /**
248
+ * Get error information
249
+ */
250
+ async getErrors(_limit = 10) {
251
+ // TODO: Implement error retrieval
252
+ return [];
253
+ }
254
+ /**
255
+ * Get recovery actions
256
+ */
257
+ async getRecoveryActions() {
258
+ // TODO: Implement recovery actions
259
+ return [];
260
+ }
261
+ /**
262
+ * Clear error history
263
+ */
264
+ async clearErrorHistory() {
265
+ // TODO: Implement error history clearing
266
+ }
267
+ /**
268
+ * Backup configuration
269
+ */
270
+ async backupConfig(backupDir) {
271
+ return this.service.backupConfiguration(backupDir);
272
+ }
273
+ /**
274
+ * Restore configuration from backup
275
+ */
276
+ async restoreConfig(backupFile) {
277
+ await this.service.restoreConfiguration(backupFile);
278
+ }
279
+ /**
280
+ * List available backups
281
+ */
282
+ async listBackups(backupDir) {
283
+ return this.service.listBackups(backupDir);
284
+ }
285
+ /**
286
+ * Reset configuration to defaults
287
+ */
288
+ async resetConfig() {
289
+ await this.service.resetConfiguration();
290
+ }
291
+ /**
292
+ * Clean up resources
293
+ */
294
+ async destroy() {
295
+ this.service.destroy();
296
+ this.status = 'stopped';
297
+ this.emit('service:stopped', this.name);
298
+ }
299
+ }
300
+ exports.ChatGPTCliAdapter = ChatGPTCliAdapter;
301
+ /**
302
+ * Create ChatGPT CLI adapter factory function
303
+ */
304
+ function createChatGPTCliAdapter(config) {
305
+ return new ChatGPTCliAdapter(config);
306
+ }
307
+ /**
308
+ * Register ChatGPT service with FreeAPI
309
+ */
310
+ function registerChatGPTService() {
311
+ // This would be called by the main FreeAPI service registry
312
+ console.log('ChatGPT service registered');
313
+ }
314
+ exports.default = ChatGPTCliAdapter;
315
+ //# sourceMappingURL=cli-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-adapter.js","sourceRoot":"","sources":["../../../src/services/chatgpt/cli-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * ChatGPT Configuration Manager
3
+ * Handles configuration loading, validation, and persistence
4
+ */
5
+ import { ChatGPTConfig, ChatGPTMode, ChatGPTModel } from './types';
6
+ export interface ConfigValidationResult {
7
+ valid: boolean;
8
+ errors: string[];
9
+ warnings: string[];
10
+ }
11
+ export declare class ChatGPTConfigManager {
12
+ private defaultConfig;
13
+ private configDir;
14
+ private configFile;
15
+ constructor(configDir?: string);
16
+ /**
17
+ * Load configuration from file or create default
18
+ */
19
+ loadConfig(): Promise<ChatGPTConfig>;
20
+ /**
21
+ * Save configuration to file
22
+ */
23
+ saveConfig(config: ChatGPTConfig): Promise<void>;
24
+ /**
25
+ * Merge user config with defaults
26
+ */
27
+ private mergeWithDefaults;
28
+ /**
29
+ * Validate configuration
30
+ */
31
+ validateConfig(config: ChatGPTConfig): ConfigValidationResult;
32
+ /**
33
+ * Check if string is a valid URL
34
+ */
35
+ private isValidUrl;
36
+ /**
37
+ * Get configuration file path
38
+ */
39
+ getConfigFilePath(): string;
40
+ /**
41
+ * Get configuration directory
42
+ */
43
+ getConfigDir(): string;
44
+ /**
45
+ * Get default configuration
46
+ */
47
+ getDefaultConfig(): ChatGPTConfig;
48
+ /**
49
+ * Create configuration from user input
50
+ */
51
+ createConfigFromInput(input: {
52
+ mode: ChatGPTMode;
53
+ base_url?: string;
54
+ api_key?: string;
55
+ email?: string;
56
+ password?: string;
57
+ model?: ChatGPTModel;
58
+ max_tokens?: number;
59
+ temperature?: number;
60
+ }): ChatGPTConfig;
61
+ /**
62
+ * Encrypt sensitive data in configuration
63
+ */
64
+ encryptSensitiveData(config: ChatGPTConfig, encryptionKey: string): ChatGPTConfig;
65
+ /**
66
+ * Decrypt sensitive data in configuration
67
+ */
68
+ decryptSensitiveData(config: ChatGPTConfig, encryptionKey: string): ChatGPTConfig;
69
+ /**
70
+ * Simple XOR encryption for demo purposes
71
+ * In production, use proper encryption like AES
72
+ */
73
+ private xorEncrypt;
74
+ /**
75
+ * Backup configuration
76
+ */
77
+ backupConfig(backupDir?: string): Promise<string>;
78
+ /**
79
+ * Restore configuration from backup
80
+ */
81
+ restoreConfig(backupFile: string): Promise<ChatGPTConfig>;
82
+ /**
83
+ * List available backups
84
+ */
85
+ listBackups(backupDir?: string): Promise<string[]>;
86
+ }
87
+ //# sourceMappingURL=config-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-manager.d.ts","sourceRoot":"","sources":["../../../src/services/chatgpt/config-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAKnE,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,aAAa,CAenB;IAEF,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAS;gBAEf,SAAS,CAAC,EAAE,MAAM;IAK9B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC;IA4B1C;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBtD;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAiBzB;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,sBAAsB;IAwE7D;;OAEG;IACH,OAAO,CAAC,UAAU;IASlB;;OAEG;IACH,iBAAiB,IAAI,MAAM;IAI3B;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,gBAAgB,IAAI,aAAa;IAIjC;;OAEG;IACH,qBAAqB,CAAC,KAAK,EAAE;QAC3B,IAAI,EAAE,WAAW,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,YAAY,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,aAAa;IAgCjB;;OAEG;IACH,oBAAoB,CAAC,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,GAAG,aAAa;IAkBjF;;OAEG;IACH,oBAAoB,CAAC,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,GAAG,aAAa;IAiBjF;;;OAGG;IACH,OAAO,CAAC,UAAU;IASlB;;OAEG;IACG,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAcvD;;OAEG;IACG,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAiB/D;;OAEG;IACG,WAAW,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAczD"}