@superdangerous/app-framework 4.9.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 (239) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +652 -0
  3. package/dist/api/logsRouter.d.ts +20 -0
  4. package/dist/api/logsRouter.d.ts.map +1 -0
  5. package/dist/api/logsRouter.js +515 -0
  6. package/dist/api/logsRouter.js.map +1 -0
  7. package/dist/cli/dev-server.d.ts +7 -0
  8. package/dist/cli/dev-server.d.ts.map +1 -0
  9. package/dist/cli/dev-server.js +640 -0
  10. package/dist/cli/dev-server.js.map +1 -0
  11. package/dist/cli/index.d.ts +7 -0
  12. package/dist/cli/index.d.ts.map +1 -0
  13. package/dist/cli/index.js +26 -0
  14. package/dist/cli/index.js.map +1 -0
  15. package/dist/core/StandardServer.d.ts +129 -0
  16. package/dist/core/StandardServer.d.ts.map +1 -0
  17. package/dist/core/StandardServer.js +453 -0
  18. package/dist/core/StandardServer.js.map +1 -0
  19. package/dist/core/apiResponse.d.ts +69 -0
  20. package/dist/core/apiResponse.d.ts.map +1 -0
  21. package/dist/core/apiResponse.js +127 -0
  22. package/dist/core/apiResponse.js.map +1 -0
  23. package/dist/core/healthCheck.d.ts +160 -0
  24. package/dist/core/healthCheck.d.ts.map +1 -0
  25. package/dist/core/healthCheck.js +398 -0
  26. package/dist/core/healthCheck.js.map +1 -0
  27. package/dist/core/index.d.ts +40 -0
  28. package/dist/core/index.d.ts.map +1 -0
  29. package/dist/core/index.js +40 -0
  30. package/dist/core/index.js.map +1 -0
  31. package/dist/core/logger.d.ts +117 -0
  32. package/dist/core/logger.d.ts.map +1 -0
  33. package/dist/core/logger.js +826 -0
  34. package/dist/core/logger.js.map +1 -0
  35. package/dist/core/portUtils.d.ts +71 -0
  36. package/dist/core/portUtils.d.ts.map +1 -0
  37. package/dist/core/portUtils.js +240 -0
  38. package/dist/core/portUtils.js.map +1 -0
  39. package/dist/core/storageService.d.ts +119 -0
  40. package/dist/core/storageService.d.ts.map +1 -0
  41. package/dist/core/storageService.js +405 -0
  42. package/dist/core/storageService.js.map +1 -0
  43. package/dist/desktop/bundler.d.ts +40 -0
  44. package/dist/desktop/bundler.d.ts.map +1 -0
  45. package/dist/desktop/bundler.js +176 -0
  46. package/dist/desktop/bundler.js.map +1 -0
  47. package/dist/desktop/index.d.ts +25 -0
  48. package/dist/desktop/index.d.ts.map +1 -0
  49. package/dist/desktop/index.js +15 -0
  50. package/dist/desktop/index.js.map +1 -0
  51. package/dist/desktop/native-modules.d.ts +66 -0
  52. package/dist/desktop/native-modules.d.ts.map +1 -0
  53. package/dist/desktop/native-modules.js +200 -0
  54. package/dist/desktop/native-modules.js.map +1 -0
  55. package/dist/index.d.ts +29 -0
  56. package/dist/index.d.ts.map +1 -0
  57. package/dist/index.js +39 -0
  58. package/dist/index.js.map +1 -0
  59. package/dist/logging/LogCategories.d.ts +87 -0
  60. package/dist/logging/LogCategories.d.ts.map +1 -0
  61. package/dist/logging/LogCategories.js +205 -0
  62. package/dist/logging/LogCategories.js.map +1 -0
  63. package/dist/middleware/aiErrorHandler.d.ts +31 -0
  64. package/dist/middleware/aiErrorHandler.d.ts.map +1 -0
  65. package/dist/middleware/aiErrorHandler.js +181 -0
  66. package/dist/middleware/aiErrorHandler.js.map +1 -0
  67. package/dist/middleware/auth.d.ts +101 -0
  68. package/dist/middleware/auth.d.ts.map +1 -0
  69. package/dist/middleware/auth.js +230 -0
  70. package/dist/middleware/auth.js.map +1 -0
  71. package/dist/middleware/cors.d.ts +56 -0
  72. package/dist/middleware/cors.d.ts.map +1 -0
  73. package/dist/middleware/cors.js +123 -0
  74. package/dist/middleware/cors.js.map +1 -0
  75. package/dist/middleware/errorHandler.d.ts +13 -0
  76. package/dist/middleware/errorHandler.d.ts.map +1 -0
  77. package/dist/middleware/errorHandler.js +85 -0
  78. package/dist/middleware/errorHandler.js.map +1 -0
  79. package/dist/middleware/fileUpload.d.ts +62 -0
  80. package/dist/middleware/fileUpload.d.ts.map +1 -0
  81. package/dist/middleware/fileUpload.js +175 -0
  82. package/dist/middleware/fileUpload.js.map +1 -0
  83. package/dist/middleware/health.d.ts +48 -0
  84. package/dist/middleware/health.d.ts.map +1 -0
  85. package/dist/middleware/health.js +143 -0
  86. package/dist/middleware/health.js.map +1 -0
  87. package/dist/middleware/index.d.ts +20 -0
  88. package/dist/middleware/index.d.ts.map +1 -0
  89. package/dist/middleware/index.js +18 -0
  90. package/dist/middleware/index.js.map +1 -0
  91. package/dist/middleware/openapi.d.ts +64 -0
  92. package/dist/middleware/openapi.d.ts.map +1 -0
  93. package/dist/middleware/openapi.js +258 -0
  94. package/dist/middleware/openapi.js.map +1 -0
  95. package/dist/middleware/requestLogging.d.ts +22 -0
  96. package/dist/middleware/requestLogging.d.ts.map +1 -0
  97. package/dist/middleware/requestLogging.js +61 -0
  98. package/dist/middleware/requestLogging.js.map +1 -0
  99. package/dist/middleware/session.d.ts +84 -0
  100. package/dist/middleware/session.d.ts.map +1 -0
  101. package/dist/middleware/session.js +189 -0
  102. package/dist/middleware/session.js.map +1 -0
  103. package/dist/middleware/validation.d.ts +1337 -0
  104. package/dist/middleware/validation.d.ts.map +1 -0
  105. package/dist/middleware/validation.js +483 -0
  106. package/dist/middleware/validation.js.map +1 -0
  107. package/dist/services/aiService.d.ts +180 -0
  108. package/dist/services/aiService.d.ts.map +1 -0
  109. package/dist/services/aiService.js +547 -0
  110. package/dist/services/aiService.js.map +1 -0
  111. package/dist/services/conversationStorage.d.ts +38 -0
  112. package/dist/services/conversationStorage.d.ts.map +1 -0
  113. package/dist/services/conversationStorage.js +158 -0
  114. package/dist/services/conversationStorage.js.map +1 -0
  115. package/dist/services/crossPlatformBuffer.d.ts +84 -0
  116. package/dist/services/crossPlatformBuffer.d.ts.map +1 -0
  117. package/dist/services/crossPlatformBuffer.js +246 -0
  118. package/dist/services/crossPlatformBuffer.js.map +1 -0
  119. package/dist/services/index.d.ts +17 -0
  120. package/dist/services/index.d.ts.map +1 -0
  121. package/dist/services/index.js +18 -0
  122. package/dist/services/index.js.map +1 -0
  123. package/dist/services/networkService.d.ts +81 -0
  124. package/dist/services/networkService.d.ts.map +1 -0
  125. package/dist/services/networkService.js +268 -0
  126. package/dist/services/networkService.js.map +1 -0
  127. package/dist/services/queueService.d.ts +112 -0
  128. package/dist/services/queueService.d.ts.map +1 -0
  129. package/dist/services/queueService.js +338 -0
  130. package/dist/services/queueService.js.map +1 -0
  131. package/dist/services/settingsService.d.ts +135 -0
  132. package/dist/services/settingsService.d.ts.map +1 -0
  133. package/dist/services/settingsService.js +425 -0
  134. package/dist/services/settingsService.js.map +1 -0
  135. package/dist/services/systemMonitor.d.ts +208 -0
  136. package/dist/services/systemMonitor.d.ts.map +1 -0
  137. package/dist/services/systemMonitor.js +693 -0
  138. package/dist/services/systemMonitor.js.map +1 -0
  139. package/dist/services/updateService.d.ts +78 -0
  140. package/dist/services/updateService.d.ts.map +1 -0
  141. package/dist/services/updateService.js +252 -0
  142. package/dist/services/updateService.js.map +1 -0
  143. package/dist/services/websocketEvents.d.ts +372 -0
  144. package/dist/services/websocketEvents.d.ts.map +1 -0
  145. package/dist/services/websocketEvents.js +338 -0
  146. package/dist/services/websocketEvents.js.map +1 -0
  147. package/dist/services/websocketServer.d.ts +80 -0
  148. package/dist/services/websocketServer.d.ts.map +1 -0
  149. package/dist/services/websocketServer.js +299 -0
  150. package/dist/services/websocketServer.js.map +1 -0
  151. package/dist/settings/SettingsSchema.d.ts +151 -0
  152. package/dist/settings/SettingsSchema.d.ts.map +1 -0
  153. package/dist/settings/SettingsSchema.js +424 -0
  154. package/dist/settings/SettingsSchema.js.map +1 -0
  155. package/dist/testing/TestServer.d.ts +69 -0
  156. package/dist/testing/TestServer.d.ts.map +1 -0
  157. package/dist/testing/TestServer.js +250 -0
  158. package/dist/testing/TestServer.js.map +1 -0
  159. package/dist/types/index.d.ts +137 -0
  160. package/dist/types/index.d.ts.map +1 -0
  161. package/dist/types/index.js +5 -0
  162. package/dist/types/index.js.map +1 -0
  163. package/dist/utils/appPaths.d.ts +74 -0
  164. package/dist/utils/appPaths.d.ts.map +1 -0
  165. package/dist/utils/appPaths.js +162 -0
  166. package/dist/utils/appPaths.js.map +1 -0
  167. package/dist/utils/fs-utils.d.ts +50 -0
  168. package/dist/utils/fs-utils.d.ts.map +1 -0
  169. package/dist/utils/fs-utils.js +114 -0
  170. package/dist/utils/fs-utils.js.map +1 -0
  171. package/dist/utils/index.d.ts +12 -0
  172. package/dist/utils/index.d.ts.map +1 -0
  173. package/dist/utils/index.js +10 -0
  174. package/dist/utils/index.js.map +1 -0
  175. package/dist/utils/standardConfig.d.ts +61 -0
  176. package/dist/utils/standardConfig.d.ts.map +1 -0
  177. package/dist/utils/standardConfig.js +109 -0
  178. package/dist/utils/standardConfig.js.map +1 -0
  179. package/dist/utils/startupBanner.d.ts +34 -0
  180. package/dist/utils/startupBanner.d.ts.map +1 -0
  181. package/dist/utils/startupBanner.js +169 -0
  182. package/dist/utils/startupBanner.js.map +1 -0
  183. package/dist/utils/startupLogger.d.ts +45 -0
  184. package/dist/utils/startupLogger.d.ts.map +1 -0
  185. package/dist/utils/startupLogger.js +200 -0
  186. package/dist/utils/startupLogger.js.map +1 -0
  187. package/package.json +151 -0
  188. package/src/api/logsRouter.ts +600 -0
  189. package/src/cli/dev-server.ts +803 -0
  190. package/src/cli/index.ts +31 -0
  191. package/src/core/StandardServer.ts +587 -0
  192. package/src/core/apiResponse.ts +202 -0
  193. package/src/core/healthCheck.ts +565 -0
  194. package/src/core/index.ts +80 -0
  195. package/src/core/logger.ts +1092 -0
  196. package/src/core/portUtils.ts +319 -0
  197. package/src/core/storageService.ts +595 -0
  198. package/src/desktop/bundler.ts +271 -0
  199. package/src/desktop/index.ts +18 -0
  200. package/src/desktop/native-modules.ts +289 -0
  201. package/src/index.ts +142 -0
  202. package/src/logging/LogCategories.ts +302 -0
  203. package/src/middleware/aiErrorHandler.ts +278 -0
  204. package/src/middleware/auth.ts +329 -0
  205. package/src/middleware/cors.ts +187 -0
  206. package/src/middleware/errorHandler.ts +103 -0
  207. package/src/middleware/fileUpload.ts +252 -0
  208. package/src/middleware/health.ts +206 -0
  209. package/src/middleware/index.ts +71 -0
  210. package/src/middleware/openapi.ts +305 -0
  211. package/src/middleware/requestLogging.ts +92 -0
  212. package/src/middleware/session.ts +238 -0
  213. package/src/middleware/validation.ts +603 -0
  214. package/src/services/aiService.ts +789 -0
  215. package/src/services/conversationStorage.ts +232 -0
  216. package/src/services/crossPlatformBuffer.ts +341 -0
  217. package/src/services/index.ts +47 -0
  218. package/src/services/networkService.ts +351 -0
  219. package/src/services/queueService.ts +446 -0
  220. package/src/services/settingsService.ts +549 -0
  221. package/src/services/systemMonitor.ts +936 -0
  222. package/src/services/updateService.ts +334 -0
  223. package/src/services/websocketEvents.ts +409 -0
  224. package/src/services/websocketServer.ts +394 -0
  225. package/src/settings/SettingsSchema.ts +664 -0
  226. package/src/testing/TestServer.ts +312 -0
  227. package/src/types/index.ts +154 -0
  228. package/src/utils/appPaths.ts +196 -0
  229. package/src/utils/fs-utils.ts +130 -0
  230. package/src/utils/index.ts +15 -0
  231. package/src/utils/standardConfig.ts +178 -0
  232. package/src/utils/startupBanner.ts +287 -0
  233. package/src/utils/startupLogger.ts +268 -0
  234. package/ui/dist/index.d.mts +1221 -0
  235. package/ui/dist/index.d.ts +1221 -0
  236. package/ui/dist/index.js +73 -0
  237. package/ui/dist/index.js.map +1 -0
  238. package/ui/dist/index.mjs +73 -0
  239. package/ui/dist/index.mjs.map +1 -0
@@ -0,0 +1,158 @@
1
+ /**
2
+ * Conversation Storage Service
3
+ * Provides persistent storage for AI conversations using lowdb
4
+ */
5
+ import { Low } from "lowdb";
6
+ import { JSONFile } from "lowdb/node";
7
+ import path from "path";
8
+ import { ensureDir } from "fs-extra";
9
+ import { createLogger } from "../core/index.js";
10
+ let logger; // Will be initialized when needed
11
+ function ensureLogger() {
12
+ if (!logger) {
13
+ logger = createLogger("ConversationStorage");
14
+ }
15
+ return logger;
16
+ }
17
+ const defaultData = {
18
+ conversations: {},
19
+ };
20
+ class ConversationStorage {
21
+ db = null;
22
+ initialized = false;
23
+ async initialize() {
24
+ if (this.initialized)
25
+ return;
26
+ try {
27
+ // Ensure data directory exists
28
+ const dataDir = path.join(process.cwd(), "data");
29
+ await ensureDir(dataDir);
30
+ // Initialize lowdb with JSON file adapter
31
+ const dbPath = path.join(dataDir, "conversations.json");
32
+ const adapter = new JSONFile(dbPath);
33
+ this.db = new Low(adapter, defaultData);
34
+ // Read data from file
35
+ await this.db.read();
36
+ // Initialize with default data if file doesn't exist
37
+ if (!this.db.data) {
38
+ this.db.data = defaultData;
39
+ await this.db.write();
40
+ }
41
+ // Ensure conversations object exists
42
+ if (!this.db.data.conversations) {
43
+ this.db.data.conversations = {};
44
+ await this.db.write();
45
+ }
46
+ this.initialized = true;
47
+ ensureLogger().info("Conversation storage initialized");
48
+ }
49
+ catch (_error) {
50
+ ensureLogger().error("Failed to initialize conversation storage:", _error);
51
+ throw _error;
52
+ }
53
+ }
54
+ async getConversation(conversationId) {
55
+ await this.initialize();
56
+ return this.db.data.conversations[conversationId] || null;
57
+ }
58
+ async saveConversation(conversationId, conversation) {
59
+ await this.initialize();
60
+ const now = new Date().toISOString();
61
+ const existing = this.db.data.conversations[conversationId];
62
+ const fullConversation = {
63
+ ...existing,
64
+ ...conversation,
65
+ id: conversationId,
66
+ messages: conversation.messages ?? existing?.messages ?? [],
67
+ createdAt: existing?.createdAt ?? conversation.createdAt ?? now,
68
+ updatedAt: now,
69
+ };
70
+ this.db.data.conversations[conversationId] = fullConversation;
71
+ await this.db.write();
72
+ ensureLogger().debug(`Saved conversation: ${conversationId}`);
73
+ return fullConversation;
74
+ }
75
+ async deleteConversation(conversationId) {
76
+ await this.initialize();
77
+ if (this.db.data.conversations[conversationId]) {
78
+ delete this.db.data.conversations[conversationId];
79
+ await this.db.write();
80
+ ensureLogger().debug(`Deleted conversation: ${conversationId}`);
81
+ return true;
82
+ }
83
+ return false;
84
+ }
85
+ async getAllConversations() {
86
+ await this.initialize();
87
+ return Object.values(this.db.data.conversations);
88
+ }
89
+ async getRecentConversations(limit = 10) {
90
+ await this.initialize();
91
+ const conversations = Object.values(this.db.data.conversations);
92
+ return conversations
93
+ .sort((a, b) => new Date(b.updatedAt).getTime() - new Date(a.updatedAt).getTime())
94
+ .slice(0, limit);
95
+ }
96
+ async addMessage(conversationId, message) {
97
+ await this.initialize();
98
+ let conversation = this.db.data.conversations[conversationId];
99
+ if (!conversation) {
100
+ conversation = {
101
+ id: conversationId,
102
+ messages: [],
103
+ createdAt: new Date().toISOString(),
104
+ updatedAt: new Date().toISOString(),
105
+ };
106
+ }
107
+ message.timestamp = message.timestamp || new Date().toISOString();
108
+ conversation.messages.push(message);
109
+ conversation.updatedAt = new Date().toISOString();
110
+ this.db.data.conversations[conversationId] = conversation;
111
+ await this.db.write();
112
+ return conversation;
113
+ }
114
+ async clearAllConversations() {
115
+ await this.initialize();
116
+ this.db.data.conversations = {};
117
+ await this.db.write();
118
+ ensureLogger().info("Cleared all conversations");
119
+ }
120
+ async exportConversations() {
121
+ await this.initialize();
122
+ return { ...this.db.data };
123
+ }
124
+ async importConversations(data) {
125
+ await this.initialize();
126
+ this.db.data = data;
127
+ await this.db.write();
128
+ ensureLogger().info("Imported conversations");
129
+ }
130
+ async getConversationStats() {
131
+ await this.initialize();
132
+ const conversations = Object.values(this.db.data.conversations);
133
+ return {
134
+ total: conversations.length,
135
+ totalMessages: conversations.reduce((sum, c) => sum + c.messages.length, 0),
136
+ averageLength: conversations.length > 0
137
+ ? conversations.reduce((sum, c) => sum + c.messages.length, 0) /
138
+ conversations.length
139
+ : 0,
140
+ oldestConversation: conversations.length > 0
141
+ ? conversations.reduce((oldest, c) => new Date(c.createdAt) < new Date(oldest.createdAt) ? c : oldest).createdAt
142
+ : null,
143
+ newestConversation: conversations.length > 0
144
+ ? conversations.reduce((newest, c) => new Date(c.createdAt) > new Date(newest.createdAt) ? c : newest).createdAt
145
+ : null,
146
+ };
147
+ }
148
+ }
149
+ // Singleton instance
150
+ let conversationStorage = null;
151
+ export function getConversationStorage() {
152
+ if (!conversationStorage) {
153
+ conversationStorage = new ConversationStorage();
154
+ }
155
+ return conversationStorage;
156
+ }
157
+ export default ConversationStorage;
158
+ //# sourceMappingURL=conversationStorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversationStorage.js","sourceRoot":"","sources":["../../src/services/conversationStorage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Cross-Platform Buffer Handling Module
3
+ *
4
+ * Ensures consistent data representation across ARM and x86 architectures
5
+ * by using explicit buffer operations that are not affected by processor endianness.
6
+ */
7
+ export type Endianness = "LE" | "BE";
8
+ export type DataType = "uint16" | "int16" | "uint32" | "int32" | "float32" | "float64" | "bool";
9
+ export interface BufferOptions {
10
+ endian?: Endianness;
11
+ wordSwap?: boolean;
12
+ byteSwap?: boolean;
13
+ }
14
+ export declare class CrossPlatformBuffer {
15
+ private systemEndianness;
16
+ constructor();
17
+ /**
18
+ * Detect system endianness (for logging/debugging only)
19
+ */
20
+ private detectSystemEndianness;
21
+ /**
22
+ * Get system endianness
23
+ */
24
+ getSystemEndianness(): Endianness;
25
+ /**
26
+ * Convert float32 to two 16-bit registers with explicit endianness control
27
+ */
28
+ float32ToRegisters(value: number, endian?: Endianness, wordSwap?: boolean, byteSwap?: boolean): [number, number];
29
+ /**
30
+ * Convert two 16-bit registers to float32 with explicit endianness control
31
+ */
32
+ registersToFloat32(reg1: number, reg2: number, endian?: Endianness, wordSwap?: boolean, byteSwap?: boolean): number;
33
+ /**
34
+ * Convert int32 to two 16-bit registers
35
+ */
36
+ int32ToRegisters(value: number, endian?: Endianness, wordSwap?: boolean): [number, number];
37
+ /**
38
+ * Convert two 16-bit registers to int32
39
+ */
40
+ registersToInt32(reg1: number, reg2: number, endian?: Endianness, wordSwap?: boolean): number;
41
+ /**
42
+ * Convert uint32 to two 16-bit registers
43
+ */
44
+ uint32ToRegisters(value: number, endian?: Endianness, wordSwap?: boolean): [number, number];
45
+ /**
46
+ * Convert two 16-bit registers to uint32
47
+ */
48
+ registersToUint32(reg1: number, reg2: number, endian?: Endianness, wordSwap?: boolean): number;
49
+ /**
50
+ * Convert boolean to register value
51
+ */
52
+ boolToRegister(value: boolean): number;
53
+ /**
54
+ * Convert register value to boolean
55
+ */
56
+ registerToBool(value: number): boolean;
57
+ /**
58
+ * Convert int16 to register with proper sign extension
59
+ */
60
+ int16ToRegister(value: number): number;
61
+ /**
62
+ * Convert register to int16 with proper sign handling
63
+ */
64
+ registerToInt16(value: number): number;
65
+ /**
66
+ * Convert string to register array
67
+ */
68
+ stringToRegisters(str: string, maxLength?: number): number[];
69
+ /**
70
+ * Convert register array to string
71
+ */
72
+ registersToString(registers: number[]): string;
73
+ /**
74
+ * Validate register value is within 16-bit range
75
+ */
76
+ validateRegisterValue(value: number): boolean;
77
+ /**
78
+ * Create a buffer configuration for consistent handling
79
+ */
80
+ createBufferConfig(options?: BufferOptions): Required<BufferOptions>;
81
+ }
82
+ export declare function getCrossPlatformBuffer(): CrossPlatformBuffer;
83
+ export default CrossPlatformBuffer;
84
+ //# sourceMappingURL=crossPlatformBuffer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crossPlatformBuffer.d.ts","sourceRoot":"","sources":["../../src/services/crossPlatformBuffer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC;AACrC,MAAM,MAAM,QAAQ,GAChB,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,OAAO,GACP,SAAS,GACT,SAAS,GACT,MAAM,CAAC;AAEX,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,gBAAgB,CAAa;;IAOrC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAc9B;;OAEG;IACH,mBAAmB,IAAI,UAAU;IAIjC;;OAEG;IACH,kBAAkB,CAChB,KAAK,EAAE,MAAM,EACb,MAAM,GAAE,UAAiB,EACzB,QAAQ,GAAE,OAAe,EACzB,QAAQ,GAAE,OAAe,GACxB,CAAC,MAAM,EAAE,MAAM,CAAC;IAoCnB;;OAEG;IACH,kBAAkB,CAChB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,UAAiB,EACzB,QAAQ,GAAE,OAAe,EACzB,QAAQ,GAAE,OAAe,GACxB,MAAM;IA+BT;;OAEG;IACH,gBAAgB,CACd,KAAK,EAAE,MAAM,EACb,MAAM,GAAE,UAAiB,EACzB,QAAQ,GAAE,OAAe,GACxB,CAAC,MAAM,EAAE,MAAM,CAAC;IAkBnB;;OAEG;IACH,gBAAgB,CACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,UAAiB,EACzB,QAAQ,GAAE,OAAe,GACxB,MAAM;IAcT;;OAEG;IACH,iBAAiB,CACf,KAAK,EAAE,MAAM,EACb,MAAM,GAAE,UAAiB,EACzB,QAAQ,GAAE,OAAe,GACxB,CAAC,MAAM,EAAE,MAAM,CAAC;IAkBnB;;OAEG;IACH,iBAAiB,CACf,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,UAAiB,EACzB,QAAQ,GAAE,OAAe,GACxB,MAAM;IAcT;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;IAItC;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAItC;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAWtC;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAStC;;OAEG;IACH,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,GAAE,MAAW,GAAG,MAAM,EAAE;IAgBhE;;OAEG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM;IAgB9C;;OAEG;IACH,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAI7C;;OAEG;IACH,kBAAkB,CAAC,OAAO,GAAE,aAAkB,GAAG,QAAQ,CAAC,aAAa,CAAC;CAOzE;AAKD,wBAAgB,sBAAsB,IAAI,mBAAmB,CAK5D;AAED,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1,246 @@
1
+ /**
2
+ * Cross-Platform Buffer Handling Module
3
+ *
4
+ * Ensures consistent data representation across ARM and x86 architectures
5
+ * by using explicit buffer operations that are not affected by processor endianness.
6
+ */
7
+ export class CrossPlatformBuffer {
8
+ systemEndianness;
9
+ constructor() {
10
+ // Detect system endianness for debugging/logging purposes
11
+ this.systemEndianness = this.detectSystemEndianness();
12
+ }
13
+ /**
14
+ * Detect system endianness (for logging/debugging only)
15
+ */
16
+ detectSystemEndianness() {
17
+ const arrayBuffer = new ArrayBuffer(2);
18
+ const uint8Array = new Uint8Array(arrayBuffer);
19
+ const uint16Array = new Uint16Array(arrayBuffer);
20
+ uint16Array[0] = 0x1234;
21
+ if (uint8Array[0] === 0x12) {
22
+ return "BE"; // Big Endian
23
+ }
24
+ else {
25
+ return "LE"; // Little Endian
26
+ }
27
+ }
28
+ /**
29
+ * Get system endianness
30
+ */
31
+ getSystemEndianness() {
32
+ return this.systemEndianness;
33
+ }
34
+ /**
35
+ * Convert float32 to two 16-bit registers with explicit endianness control
36
+ */
37
+ float32ToRegisters(value, endian = "LE", wordSwap = false, byteSwap = false) {
38
+ // Create a buffer to hold the float32
39
+ const buffer = new ArrayBuffer(4);
40
+ const float32View = new Float32Array(buffer);
41
+ const dataView = new DataView(buffer);
42
+ // Write the float32 value
43
+ float32View[0] = value;
44
+ // Read as two 16-bit values with specified endianness
45
+ let reg1, reg2;
46
+ if (endian === "BE") {
47
+ // Big Endian: most significant word first
48
+ reg1 = dataView.getUint16(0, false); // Big endian read
49
+ reg2 = dataView.getUint16(2, false);
50
+ }
51
+ else {
52
+ // Little Endian: least significant word first
53
+ reg1 = dataView.getUint16(0, true); // Little endian read
54
+ reg2 = dataView.getUint16(2, true);
55
+ }
56
+ // Apply word swap if needed
57
+ if (wordSwap) {
58
+ [reg1, reg2] = [reg2, reg1];
59
+ }
60
+ // Apply byte swap within each word if needed
61
+ if (byteSwap) {
62
+ reg1 = ((reg1 & 0xff) << 8) | ((reg1 >> 8) & 0xff);
63
+ reg2 = ((reg2 & 0xff) << 8) | ((reg2 >> 8) & 0xff);
64
+ }
65
+ return [reg1, reg2];
66
+ }
67
+ /**
68
+ * Convert two 16-bit registers to float32 with explicit endianness control
69
+ */
70
+ registersToFloat32(reg1, reg2, endian = "LE", wordSwap = false, byteSwap = false) {
71
+ // Apply byte swap within each word if needed
72
+ if (byteSwap) {
73
+ reg1 = ((reg1 & 0xff) << 8) | ((reg1 >> 8) & 0xff);
74
+ reg2 = ((reg2 & 0xff) << 8) | ((reg2 >> 8) & 0xff);
75
+ }
76
+ // Apply word swap if needed
77
+ if (wordSwap) {
78
+ [reg1, reg2] = [reg2, reg1];
79
+ }
80
+ // Create a buffer and write the registers
81
+ const buffer = new ArrayBuffer(4);
82
+ const dataView = new DataView(buffer);
83
+ if (endian === "BE") {
84
+ // Big Endian: write as big endian
85
+ dataView.setUint16(0, reg1, false);
86
+ dataView.setUint16(2, reg2, false);
87
+ }
88
+ else {
89
+ // Little Endian: write as little endian
90
+ dataView.setUint16(0, reg1, true);
91
+ dataView.setUint16(2, reg2, true);
92
+ }
93
+ // Read as float32
94
+ const float32View = new Float32Array(buffer);
95
+ return float32View[0];
96
+ }
97
+ /**
98
+ * Convert int32 to two 16-bit registers
99
+ */
100
+ int32ToRegisters(value, endian = "LE", wordSwap = false) {
101
+ const buffer = new ArrayBuffer(4);
102
+ const dataView = new DataView(buffer);
103
+ // Write the int32 value
104
+ dataView.setInt32(0, value, endian === "LE");
105
+ // Read as two 16-bit values
106
+ let reg1 = dataView.getUint16(0, endian === "LE");
107
+ let reg2 = dataView.getUint16(2, endian === "LE");
108
+ if (wordSwap) {
109
+ [reg1, reg2] = [reg2, reg1];
110
+ }
111
+ return [reg1, reg2];
112
+ }
113
+ /**
114
+ * Convert two 16-bit registers to int32
115
+ */
116
+ registersToInt32(reg1, reg2, endian = "LE", wordSwap = false) {
117
+ if (wordSwap) {
118
+ [reg1, reg2] = [reg2, reg1];
119
+ }
120
+ const buffer = new ArrayBuffer(4);
121
+ const dataView = new DataView(buffer);
122
+ dataView.setUint16(0, reg1, endian === "LE");
123
+ dataView.setUint16(2, reg2, endian === "LE");
124
+ return dataView.getInt32(0, endian === "LE");
125
+ }
126
+ /**
127
+ * Convert uint32 to two 16-bit registers
128
+ */
129
+ uint32ToRegisters(value, endian = "LE", wordSwap = false) {
130
+ const buffer = new ArrayBuffer(4);
131
+ const dataView = new DataView(buffer);
132
+ // Write the uint32 value
133
+ dataView.setUint32(0, value, endian === "LE");
134
+ // Read as two 16-bit values
135
+ let reg1 = dataView.getUint16(0, endian === "LE");
136
+ let reg2 = dataView.getUint16(2, endian === "LE");
137
+ if (wordSwap) {
138
+ [reg1, reg2] = [reg2, reg1];
139
+ }
140
+ return [reg1, reg2];
141
+ }
142
+ /**
143
+ * Convert two 16-bit registers to uint32
144
+ */
145
+ registersToUint32(reg1, reg2, endian = "LE", wordSwap = false) {
146
+ if (wordSwap) {
147
+ [reg1, reg2] = [reg2, reg1];
148
+ }
149
+ const buffer = new ArrayBuffer(4);
150
+ const dataView = new DataView(buffer);
151
+ dataView.setUint16(0, reg1, endian === "LE");
152
+ dataView.setUint16(2, reg2, endian === "LE");
153
+ return dataView.getUint32(0, endian === "LE");
154
+ }
155
+ /**
156
+ * Convert boolean to register value
157
+ */
158
+ boolToRegister(value) {
159
+ return value ? 1 : 0;
160
+ }
161
+ /**
162
+ * Convert register value to boolean
163
+ */
164
+ registerToBool(value) {
165
+ return value !== 0;
166
+ }
167
+ /**
168
+ * Convert int16 to register with proper sign extension
169
+ */
170
+ int16ToRegister(value) {
171
+ // Ensure value is within int16 range
172
+ value = Math.max(-32768, Math.min(32767, value));
173
+ // Convert to unsigned representation
174
+ if (value < 0) {
175
+ return 0x10000 + value; // Two's complement
176
+ }
177
+ return value;
178
+ }
179
+ /**
180
+ * Convert register to int16 with proper sign handling
181
+ */
182
+ registerToInt16(value) {
183
+ // Check if the sign bit is set
184
+ if (value & 0x8000) {
185
+ // Negative number in two's complement
186
+ return value - 0x10000;
187
+ }
188
+ return value;
189
+ }
190
+ /**
191
+ * Convert string to register array
192
+ */
193
+ stringToRegisters(str, maxLength = 32) {
194
+ const registers = [];
195
+ const buffer = Buffer.from(str, "utf8");
196
+ // Pad with zeros to ensure even number of bytes
197
+ const paddedLength = Math.min(maxLength, Math.ceil(buffer.length / 2) * 2);
198
+ for (let i = 0; i < paddedLength; i += 2) {
199
+ const byte1 = buffer[i] || 0;
200
+ const byte2 = buffer[i + 1] || 0;
201
+ registers.push((byte1 << 8) | byte2);
202
+ }
203
+ return registers;
204
+ }
205
+ /**
206
+ * Convert register array to string
207
+ */
208
+ registersToString(registers) {
209
+ const bytes = [];
210
+ for (const reg of registers) {
211
+ bytes.push((reg >> 8) & 0xff); // High byte
212
+ bytes.push(reg & 0xff); // Low byte
213
+ }
214
+ // Remove trailing zeros
215
+ while (bytes.length > 0 && bytes[bytes.length - 1] === 0) {
216
+ bytes.pop();
217
+ }
218
+ return Buffer.from(bytes).toString("utf8");
219
+ }
220
+ /**
221
+ * Validate register value is within 16-bit range
222
+ */
223
+ validateRegisterValue(value) {
224
+ return Number.isInteger(value) && value >= 0 && value <= 0xffff;
225
+ }
226
+ /**
227
+ * Create a buffer configuration for consistent handling
228
+ */
229
+ createBufferConfig(options = {}) {
230
+ return {
231
+ endian: options.endian || "LE",
232
+ wordSwap: options.wordSwap || false,
233
+ byteSwap: options.byteSwap || false,
234
+ };
235
+ }
236
+ }
237
+ // Singleton instance
238
+ let crossPlatformBuffer = null;
239
+ export function getCrossPlatformBuffer() {
240
+ if (!crossPlatformBuffer) {
241
+ crossPlatformBuffer = new CrossPlatformBuffer();
242
+ }
243
+ return crossPlatformBuffer;
244
+ }
245
+ export default CrossPlatformBuffer;
246
+ //# sourceMappingURL=crossPlatformBuffer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crossPlatformBuffer.js","sourceRoot":"","sources":["../../src/services/crossPlatformBuffer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Services Module Exports
3
+ */
4
+ export { getConversationStorage } from "./conversationStorage.js";
5
+ export { CrossPlatformBuffer } from "./crossPlatformBuffer.js";
6
+ export { getNetworkService } from "./networkService.js";
7
+ export { getUpdateService } from "./updateService.js";
8
+ export { createWebSocketServer, getWebSocketServer, } from "./websocketServer.js";
9
+ export { SettingsService, CommonSettingsCategories, } from "./settingsService.js";
10
+ export type { SettingsCategory, SettingsField, SettingsOptions, } from "./settingsService.js";
11
+ export { WebSocketEventManager, TypedEventEmitter, EventTypes, EventPatterns, } from "./websocketEvents.js";
12
+ export type { EventPayload, EventResponse } from "./websocketEvents.js";
13
+ export { aiService, AIService } from "./aiService.js";
14
+ export type { AIConfig, AIMessage, AIResponse, AIAnalysisOptions, AIProvider, } from "./aiService.js";
15
+ export { default as QueueService } from "./queueService.js";
16
+ export type { QueueJob, QueueConfig, JobHandler } from "./queueService.js";
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EACL,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,eAAe,EACf,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,gBAAgB,EAChB,aAAa,EACb,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,UAAU,EACV,aAAa,GACd,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGxE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACtD,YAAY,EACV,QAAQ,EACR,SAAS,EACT,UAAU,EACV,iBAAiB,EACjB,UAAU,GACX,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC5D,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Services Module Exports
3
+ */
4
+ // Configuration management - use SettingsService
5
+ // Other services
6
+ export { getConversationStorage } from "./conversationStorage.js";
7
+ export { CrossPlatformBuffer } from "./crossPlatformBuffer.js";
8
+ export { getNetworkService } from "./networkService.js";
9
+ export { getUpdateService } from "./updateService.js";
10
+ export { createWebSocketServer, getWebSocketServer, } from "./websocketServer.js";
11
+ export { SettingsService, CommonSettingsCategories, } from "./settingsService.js";
12
+ // WebSocket events
13
+ export { WebSocketEventManager, TypedEventEmitter, EventTypes, EventPatterns, } from "./websocketEvents.js";
14
+ // AI Service
15
+ export { aiService, AIService } from "./aiService.js";
16
+ // Queue Service
17
+ export { default as QueueService } from "./queueService.js";
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,iDAAiD;AAEjD,iBAAiB;AACjB,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EACL,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,eAAe,EACf,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAO9B,mBAAmB;AACnB,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,UAAU,EACV,aAAa,GACd,MAAM,sBAAsB,CAAC;AAG9B,aAAa;AACb,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAStD,gBAAgB;AAChB,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Network Service
3
+ * Detects and manages network interfaces
4
+ */
5
+ interface NetworkAddress {
6
+ address: string;
7
+ family: string;
8
+ internal: boolean;
9
+ }
10
+ interface NetworkInterface {
11
+ name: string;
12
+ addresses: NetworkAddress[];
13
+ }
14
+ interface BindingOption {
15
+ label: string;
16
+ value: string;
17
+ description: string;
18
+ interface: string;
19
+ }
20
+ interface NetworkInfo {
21
+ hostname: string;
22
+ primaryIp: string | null;
23
+ interfaces: NetworkInterface[];
24
+ bindingOptions: BindingOption[];
25
+ }
26
+ declare class NetworkService {
27
+ /**
28
+ * Get all available network interfaces with their addresses
29
+ */
30
+ getNetworkInterfaces(): NetworkInterface[];
31
+ /**
32
+ * Get a formatted list of binding options for UI
33
+ */
34
+ getBindingOptions(): BindingOption[];
35
+ /**
36
+ * Get the current machine's primary IP address
37
+ */
38
+ getPrimaryIpAddress(): string | null;
39
+ /**
40
+ * Validate if an IP address is valid for binding
41
+ */
42
+ isValidBindingAddress(address: string): boolean;
43
+ /**
44
+ * Format network information for display
45
+ */
46
+ getNetworkInfo(): NetworkInfo;
47
+ /**
48
+ * Check if running in Docker container
49
+ */
50
+ isDocker(): boolean;
51
+ /**
52
+ * Get recommended binding address based on environment
53
+ */
54
+ getRecommendedBindingAddress(): string;
55
+ /**
56
+ * Parse connection string (host:port)
57
+ */
58
+ parseConnectionString(connectionString: string): {
59
+ host: string;
60
+ port: number;
61
+ } | null;
62
+ /**
63
+ * Format connection URL
64
+ */
65
+ formatConnectionUrl(protocol: string, host: string, port: number, path?: string): string;
66
+ /**
67
+ * Get network latency to a host
68
+ */
69
+ getLatency(host: string, timeout?: number): Promise<number | null>;
70
+ /**
71
+ * Check if a host is reachable
72
+ */
73
+ isHostReachable(host: string, port: number, timeout?: number): Promise<boolean>;
74
+ /**
75
+ * Get network statistics
76
+ */
77
+ getNetworkStats(): Record<string, any>;
78
+ }
79
+ export declare function getNetworkService(): NetworkService;
80
+ export default NetworkService;
81
+ //# sourceMappingURL=networkService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"networkService.d.ts","sourceRoot":"","sources":["../../src/services/networkService.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,UAAU,cAAc;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,UAAU,gBAAgB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,cAAc,EAAE,CAAC;CAC7B;AAED,UAAU,aAAa;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,WAAW;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,cAAc,EAAE,aAAa,EAAE,CAAC;CACjC;AAED,cAAM,cAAc;IAClB;;OAEG;IACH,oBAAoB,IAAI,gBAAgB,EAAE;IAkD1C;;OAEG;IACH,iBAAiB,IAAI,aAAa,EAAE;IAuCpC;;OAEG;IACH,mBAAmB,IAAI,MAAM,GAAG,IAAI;IAiBpC;;OAEG;IACH,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAmB/C;;OAEG;IACH,cAAc,IAAI,WAAW;IAe7B;;OAEG;IACH,QAAQ,IAAI,OAAO;IAgBnB;;OAEG;IACH,4BAA4B,IAAI,MAAM;IAetC;;OAEG;IACH,qBAAqB,CACnB,gBAAgB,EAAE,MAAM,GACvB;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAYxC;;OAEG;IACH,mBAAmB,CACjB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,MAAW,GAChB,MAAM;IAMT;;OAEG;IACG,UAAU,CACd,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,MAAa,GACrB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAyBzB;;OAEG;IACG,eAAe,CACnB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,MAAa,GACrB,OAAO,CAAC,OAAO,CAAC;IAuBnB;;OAEG;IACH,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAgBvC;AAKD,wBAAgB,iBAAiB,IAAI,cAAc,CAKlD;AAED,eAAe,cAAc,CAAC"}