codex-linux 1.0.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 (367) hide show
  1. package/.claude/settings.local.json +10 -0
  2. package/.eslintrc.json +27 -0
  3. package/.github/workflows/ci.yml +156 -0
  4. package/.huskyrc +7 -0
  5. package/.lintstagedrc +13 -0
  6. package/.prettierrc +12 -0
  7. package/CLAUDE.md +163 -0
  8. package/DESIGN_SUPERIOR.md +73 -0
  9. package/Dockerfile +64 -0
  10. package/INSTALLATION.md +152 -0
  11. package/LICENSE +21 -0
  12. package/README.md +245 -0
  13. package/assets/skills/code-review/instructions.md +102 -0
  14. package/assets/skills/code-review/skill.yaml +15 -0
  15. package/assets/skills/refactoring/instructions.md +149 -0
  16. package/assets/skills/refactoring/skill.yaml +15 -0
  17. package/assets/skills/testing/skill.yaml +15 -0
  18. package/commitlint.config.js +23 -0
  19. package/dist/main/DatabaseManager.js +763 -0
  20. package/dist/main/DatabaseManager.js.map +1 -0
  21. package/dist/main/SettingsManager.js +61 -0
  22. package/dist/main/SettingsManager.js.map +1 -0
  23. package/dist/main/agents/AgentOrchestrator.js +787 -0
  24. package/dist/main/agents/AgentOrchestrator.js.map +1 -0
  25. package/dist/main/agents/AgentSDK.js +219 -0
  26. package/dist/main/agents/AgentSDK.js.map +1 -0
  27. package/dist/main/agents/AgentTools.js +348 -0
  28. package/dist/main/agents/AgentTools.js.map +1 -0
  29. package/dist/main/agents/CodeIndex.js +233 -0
  30. package/dist/main/agents/CodeIndex.js.map +1 -0
  31. package/dist/main/agents/EmbeddingService.js +80 -0
  32. package/dist/main/agents/EmbeddingService.js.map +1 -0
  33. package/dist/main/agents/NativeToolCalling.js +206 -0
  34. package/dist/main/agents/NativeToolCalling.js.map +1 -0
  35. package/dist/main/api/APIServer.js +278 -0
  36. package/dist/main/api/APIServer.js.map +1 -0
  37. package/dist/main/api/RateLimiter.js +138 -0
  38. package/dist/main/api/RateLimiter.js.map +1 -0
  39. package/dist/main/api/WebSocketManager.js +300 -0
  40. package/dist/main/api/WebSocketManager.js.map +1 -0
  41. package/dist/main/assistant/ContextOptimizer.js +192 -0
  42. package/dist/main/assistant/ContextOptimizer.js.map +1 -0
  43. package/dist/main/assistant/PredictedOutputManager.js +172 -0
  44. package/dist/main/assistant/PredictedOutputManager.js.map +1 -0
  45. package/dist/main/assistant/PromptCacheManager.js +193 -0
  46. package/dist/main/assistant/PromptCacheManager.js.map +1 -0
  47. package/dist/main/assistant/PromptOptimizer.js +626 -0
  48. package/dist/main/assistant/PromptOptimizer.js.map +1 -0
  49. package/dist/main/assistant/SmartCodeAssistant.js +224 -0
  50. package/dist/main/assistant/SmartCodeAssistant.js.map +1 -0
  51. package/dist/main/auth/SessionManager.js +300 -0
  52. package/dist/main/auth/SessionManager.js.map +1 -0
  53. package/dist/main/automations/AdvancedWebhookSystem.js +212 -0
  54. package/dist/main/automations/AdvancedWebhookSystem.js.map +1 -0
  55. package/dist/main/automations/AutomationScheduler.js +269 -0
  56. package/dist/main/automations/AutomationScheduler.js.map +1 -0
  57. package/dist/main/automations/BatchProcessingSystem.js +159 -0
  58. package/dist/main/automations/BatchProcessingSystem.js.map +1 -0
  59. package/dist/main/automations/BrowserAutomationManager.js +195 -0
  60. package/dist/main/automations/BrowserAutomationManager.js.map +1 -0
  61. package/dist/main/automations/GitHubActionsManager.js +129 -0
  62. package/dist/main/automations/GitHubActionsManager.js.map +1 -0
  63. package/dist/main/automations/GitLabCIManager.js +122 -0
  64. package/dist/main/automations/GitLabCIManager.js.map +1 -0
  65. package/dist/main/automations/PriorityQueueManager.js +240 -0
  66. package/dist/main/automations/PriorityQueueManager.js.map +1 -0
  67. package/dist/main/background/BackgroundModeManager.js +117 -0
  68. package/dist/main/background/BackgroundModeManager.js.map +1 -0
  69. package/dist/main/backup/BackupManager.js +254 -0
  70. package/dist/main/backup/BackupManager.js.map +1 -0
  71. package/dist/main/backup/MigrationManager.js +114 -0
  72. package/dist/main/backup/MigrationManager.js.map +1 -0
  73. package/dist/main/commands/SlashCommandManager.js +399 -0
  74. package/dist/main/commands/SlashCommandManager.js.map +1 -0
  75. package/dist/main/config/ClaudeMdParser.js +519 -0
  76. package/dist/main/config/ClaudeMdParser.js.map +1 -0
  77. package/dist/main/config/CustomizationManager.js +381 -0
  78. package/dist/main/config/CustomizationManager.js.map +1 -0
  79. package/dist/main/config/LaunchConfigManager.js +211 -0
  80. package/dist/main/config/LaunchConfigManager.js.map +1 -0
  81. package/dist/main/config/SettingsManager.js +166 -0
  82. package/dist/main/config/SettingsManager.js.map +1 -0
  83. package/dist/main/connectors/ConnectorManager.js +151 -0
  84. package/dist/main/connectors/ConnectorManager.js.map +1 -0
  85. package/dist/main/connectors/DatabaseConnector.js +222 -0
  86. package/dist/main/connectors/DatabaseConnector.js.map +1 -0
  87. package/dist/main/cowork/CoworkManager.js +324 -0
  88. package/dist/main/cowork/CoworkManager.js.map +1 -0
  89. package/dist/main/evals/AgentEvalFramework.js +538 -0
  90. package/dist/main/evals/AgentEvalFramework.js.map +1 -0
  91. package/dist/main/evals/GraderManager.js +285 -0
  92. package/dist/main/evals/GraderManager.js.map +1 -0
  93. package/dist/main/git/GitWorktreeManager.js +214 -0
  94. package/dist/main/git/GitWorktreeManager.js.map +1 -0
  95. package/dist/main/github/GitHubPRMonitor.js +244 -0
  96. package/dist/main/github/GitHubPRMonitor.js.map +1 -0
  97. package/dist/main/ide/ContinueInManager.js +181 -0
  98. package/dist/main/ide/ContinueInManager.js.map +1 -0
  99. package/dist/main/ide/IDEIntegration.js +277 -0
  100. package/dist/main/ide/IDEIntegration.js.map +1 -0
  101. package/dist/main/integrations/LinearManager.js +252 -0
  102. package/dist/main/integrations/LinearManager.js.map +1 -0
  103. package/dist/main/integrations/SlackBotManager.js +247 -0
  104. package/dist/main/integrations/SlackBotManager.js.map +1 -0
  105. package/dist/main/lsp/LSPManager.js +394 -0
  106. package/dist/main/lsp/LSPManager.js.map +1 -0
  107. package/dist/main/main.js +1087 -0
  108. package/dist/main/main.js.map +1 -0
  109. package/dist/main/mcp/MCPConfigurationManager.js +281 -0
  110. package/dist/main/mcp/MCPConfigurationManager.js.map +1 -0
  111. package/dist/main/mcp/MCPManager.js +710 -0
  112. package/dist/main/mcp/MCPManager.js.map +1 -0
  113. package/dist/main/mcp/MCPRegistry.js +272 -0
  114. package/dist/main/mcp/MCPRegistry.js.map +1 -0
  115. package/dist/main/monitoring/ErrorRecoveryManager.js +268 -0
  116. package/dist/main/monitoring/ErrorRecoveryManager.js.map +1 -0
  117. package/dist/main/monitoring/ErrorTracker.js +57 -0
  118. package/dist/main/monitoring/ErrorTracker.js.map +1 -0
  119. package/dist/main/monitoring/MetricsCollector.js +155 -0
  120. package/dist/main/monitoring/MetricsCollector.js.map +1 -0
  121. package/dist/main/monitoring/TraceGradingSystem.js +148 -0
  122. package/dist/main/monitoring/TraceGradingSystem.js.map +1 -0
  123. package/dist/main/notifications/NotificationManager.js +67 -0
  124. package/dist/main/notifications/NotificationManager.js.map +1 -0
  125. package/dist/main/pair/AIPairProgramming.js +200 -0
  126. package/dist/main/pair/AIPairProgramming.js.map +1 -0
  127. package/dist/main/plugins/PluginManager.js +222 -0
  128. package/dist/main/plugins/PluginManager.js.map +1 -0
  129. package/dist/main/plugins/PluginMarketplace.js +237 -0
  130. package/dist/main/plugins/PluginMarketplace.js.map +1 -0
  131. package/dist/main/preload.js +189 -0
  132. package/dist/main/preload.js.map +1 -0
  133. package/dist/main/preview/PreviewSessionManager.js +170 -0
  134. package/dist/main/preview/PreviewSessionManager.js.map +1 -0
  135. package/dist/main/providers/AIProviderManager.js +327 -0
  136. package/dist/main/providers/AIProviderManager.js.map +1 -0
  137. package/dist/main/providers/FineTuningManager.js +276 -0
  138. package/dist/main/providers/FineTuningManager.js.map +1 -0
  139. package/dist/main/providers/FreeModelsProvider.js +1104 -0
  140. package/dist/main/providers/FreeModelsProvider.js.map +1 -0
  141. package/dist/main/realtime/RealtimeManager.js +116 -0
  142. package/dist/main/realtime/RealtimeManager.js.map +1 -0
  143. package/dist/main/remote/CloudEnvironmentManager.js +232 -0
  144. package/dist/main/remote/CloudEnvironmentManager.js.map +1 -0
  145. package/dist/main/remote/RemoteSessionManager.js +255 -0
  146. package/dist/main/remote/RemoteSessionManager.js.map +1 -0
  147. package/dist/main/search/DeepResearchManager.js +335 -0
  148. package/dist/main/search/DeepResearchManager.js.map +1 -0
  149. package/dist/main/search/WebSearchIntegration.js +147 -0
  150. package/dist/main/search/WebSearchIntegration.js.map +1 -0
  151. package/dist/main/security/AdminConsoleManager.js +223 -0
  152. package/dist/main/security/AdminConsoleManager.js.map +1 -0
  153. package/dist/main/security/AuditLogger.js +136 -0
  154. package/dist/main/security/AuditLogger.js.map +1 -0
  155. package/dist/main/security/PermissionManager.js +144 -0
  156. package/dist/main/security/PermissionManager.js.map +1 -0
  157. package/dist/main/security/SSOManager.js +173 -0
  158. package/dist/main/security/SSOManager.js.map +1 -0
  159. package/dist/main/security/SecurityManager.js +152 -0
  160. package/dist/main/security/SecurityManager.js.map +1 -0
  161. package/dist/main/skills/SkillsManager.js +223 -0
  162. package/dist/main/skills/SkillsManager.js.map +1 -0
  163. package/dist/main/ssh/SSHManager.js +65 -0
  164. package/dist/main/ssh/SSHManager.js.map +1 -0
  165. package/dist/main/streaming/StreamingManager.js +225 -0
  166. package/dist/main/streaming/StreamingManager.js.map +1 -0
  167. package/dist/main/sync/CloudSyncManager.js +422 -0
  168. package/dist/main/sync/CloudSyncManager.js.map +1 -0
  169. package/dist/main/types.js +28 -0
  170. package/dist/main/types.js.map +1 -0
  171. package/dist/main/verification/AutoVerifyManager.js +235 -0
  172. package/dist/main/verification/AutoVerifyManager.js.map +1 -0
  173. package/dist/main/vision/ComputerUseManager.js +376 -0
  174. package/dist/main/vision/ComputerUseManager.js.map +1 -0
  175. package/dist/main/vision/ImageVideoGenerationManager.js +401 -0
  176. package/dist/main/vision/ImageVideoGenerationManager.js.map +1 -0
  177. package/dist/main/vision/VisionManager.js +172 -0
  178. package/dist/main/vision/VisionManager.js.map +1 -0
  179. package/dist/renderer/assets/main-DJlZQBCA.js +304 -0
  180. package/dist/renderer/assets/main-N33ZXEr8.css +1 -0
  181. package/dist/renderer/index.html +21 -0
  182. package/dist/renderer/manifest.json +42 -0
  183. package/dist/renderer/sw.ts +109 -0
  184. package/dist/shared/types.js +35 -0
  185. package/dist/shared/types.js.map +1 -0
  186. package/docker-compose.yml +65 -0
  187. package/docs/API.md +307 -0
  188. package/docs/USER_GUIDE.md +476 -0
  189. package/examples/plugins/sample-plugin/package.json +41 -0
  190. package/examples/plugins/sample-plugin/src/index.ts +75 -0
  191. package/index.html +20 -0
  192. package/jest.config.js +39 -0
  193. package/package.json +180 -0
  194. package/packages/cli/package.json +29 -0
  195. package/packages/cli/src/commands/agents.ts +199 -0
  196. package/packages/cli/src/commands/tasks.ts +61 -0
  197. package/packages/cli/src/index.ts +91 -0
  198. package/packages/cli/src/utils/api.ts +45 -0
  199. package/packages/cli/src/utils/config.ts +61 -0
  200. package/packages/npm-installer/bin/codex-linux +126 -0
  201. package/packages/npm-installer/lib/download.js +273 -0
  202. package/packages/npm-installer/package.json +42 -0
  203. package/packages/vscode-extension/package.json +167 -0
  204. package/packages/vscode-extension/src/api.ts +68 -0
  205. package/packages/vscode-extension/src/extension.ts +161 -0
  206. package/packages/vscode-extension/src/panels/chatPanel.ts +265 -0
  207. package/packages/vscode-extension/src/panels/createAgentPanel.ts +227 -0
  208. package/packages/vscode-extension/src/providers/agentsProvider.ts +80 -0
  209. package/postcss.config.js +6 -0
  210. package/public/manifest.json +42 -0
  211. package/public/sw.ts +109 -0
  212. package/scripts/install-dev.sh +103 -0
  213. package/scripts/install.sh +275 -0
  214. package/src/main/DatabaseManager.ts +950 -0
  215. package/src/main/SettingsManager.ts +63 -0
  216. package/src/main/agents/AgentOrchestrator.ts +930 -0
  217. package/src/main/agents/AgentSDK.ts +269 -0
  218. package/src/main/agents/AgentTools.ts +380 -0
  219. package/src/main/agents/CodeIndex.ts +240 -0
  220. package/src/main/agents/EmbeddingService.ts +88 -0
  221. package/src/main/agents/NativeToolCalling.ts +245 -0
  222. package/src/main/api/APIServer.ts +316 -0
  223. package/src/main/api/RateLimiter.ts +165 -0
  224. package/src/main/api/WebSocketManager.ts +398 -0
  225. package/src/main/assistant/ContextOptimizer.ts +214 -0
  226. package/src/main/assistant/PredictedOutputManager.ts +265 -0
  227. package/src/main/assistant/PromptCacheManager.ts +280 -0
  228. package/src/main/assistant/PromptOptimizer.ts +746 -0
  229. package/src/main/assistant/SmartCodeAssistant.ts +234 -0
  230. package/src/main/auth/SessionManager.ts +415 -0
  231. package/src/main/automations/AdvancedWebhookSystem.ts +281 -0
  232. package/src/main/automations/AutomationScheduler.ts +272 -0
  233. package/src/main/automations/BatchProcessingSystem.ts +207 -0
  234. package/src/main/automations/BrowserAutomationManager.ts +203 -0
  235. package/src/main/automations/GitHubActionsManager.ts +151 -0
  236. package/src/main/automations/GitLabCIManager.ts +206 -0
  237. package/src/main/automations/PriorityQueueManager.ts +328 -0
  238. package/src/main/background/BackgroundModeManager.ts +130 -0
  239. package/src/main/backup/BackupManager.ts +287 -0
  240. package/src/main/backup/MigrationManager.ts +132 -0
  241. package/src/main/commands/SlashCommandManager.ts +407 -0
  242. package/src/main/config/ClaudeMdParser.ts +539 -0
  243. package/src/main/config/CustomizationManager.ts +493 -0
  244. package/src/main/config/LaunchConfigManager.ts +212 -0
  245. package/src/main/config/SettingsManager.ts +163 -0
  246. package/src/main/connectors/ConnectorManager.ts +175 -0
  247. package/src/main/connectors/DatabaseConnector.ts +212 -0
  248. package/src/main/cowork/CoworkManager.ts +431 -0
  249. package/src/main/evals/AgentEvalFramework.ts +665 -0
  250. package/src/main/evals/GraderManager.ts +417 -0
  251. package/src/main/git/GitWorktreeManager.ts +211 -0
  252. package/src/main/github/GitHubPRMonitor.ts +317 -0
  253. package/src/main/ide/ContinueInManager.ts +180 -0
  254. package/src/main/ide/IDEIntegration.ts +288 -0
  255. package/src/main/integrations/LinearManager.ts +327 -0
  256. package/src/main/integrations/SlackBotManager.ts +312 -0
  257. package/src/main/lsp/LSPManager.ts +445 -0
  258. package/src/main/main.ts +1221 -0
  259. package/src/main/mcp/MCPConfigurationManager.ts +281 -0
  260. package/src/main/mcp/MCPManager.ts +799 -0
  261. package/src/main/mcp/MCPRegistry.ts +273 -0
  262. package/src/main/monitoring/ErrorRecoveryManager.ts +359 -0
  263. package/src/main/monitoring/ErrorTracker.ts +60 -0
  264. package/src/main/monitoring/MetricsCollector.ts +196 -0
  265. package/src/main/monitoring/TraceGradingSystem.ts +196 -0
  266. package/src/main/notifications/NotificationManager.ts +96 -0
  267. package/src/main/pair/AIPairProgramming.ts +290 -0
  268. package/src/main/plugins/PluginManager.ts +266 -0
  269. package/src/main/plugins/PluginMarketplace.ts +318 -0
  270. package/src/main/preload.ts +215 -0
  271. package/src/main/preview/PreviewSessionManager.ts +186 -0
  272. package/src/main/providers/AIProviderManager.ts +394 -0
  273. package/src/main/providers/FineTuningManager.ts +390 -0
  274. package/src/main/providers/FreeModelsProvider.ts +1156 -0
  275. package/src/main/realtime/RealtimeManager.ts +147 -0
  276. package/src/main/remote/CloudEnvironmentManager.ts +253 -0
  277. package/src/main/remote/RemoteSessionManager.ts +323 -0
  278. package/src/main/search/DeepResearchManager.ts +458 -0
  279. package/src/main/search/WebSearchIntegration.ts +203 -0
  280. package/src/main/security/AdminConsoleManager.ts +244 -0
  281. package/src/main/security/AuditLogger.ts +143 -0
  282. package/src/main/security/PermissionManager.ts +184 -0
  283. package/src/main/security/SSOManager.ts +241 -0
  284. package/src/main/security/SecurityManager.ts +139 -0
  285. package/src/main/skills/SkillsManager.ts +218 -0
  286. package/src/main/ssh/SSHManager.ts +86 -0
  287. package/src/main/streaming/StreamingManager.ts +306 -0
  288. package/src/main/sync/CloudSyncManager.ts +532 -0
  289. package/src/main/verification/AutoVerifyManager.ts +285 -0
  290. package/src/main/vision/ComputerUseManager.ts +475 -0
  291. package/src/main/vision/ImageVideoGenerationManager.ts +526 -0
  292. package/src/main/vision/VisionManager.ts +186 -0
  293. package/src/renderer/App.tsx +314 -0
  294. package/src/renderer/components/AdvancedSettingsPanel.tsx +225 -0
  295. package/src/renderer/components/AgentPanel.tsx +760 -0
  296. package/src/renderer/components/AppPreview.tsx +220 -0
  297. package/src/renderer/components/AuditTrailPanel.tsx +148 -0
  298. package/src/renderer/components/AutomationPanel.tsx +220 -0
  299. package/src/renderer/components/ChatInterface.tsx +595 -0
  300. package/src/renderer/components/ChatTab.tsx +296 -0
  301. package/src/renderer/components/CodeEditor.tsx +257 -0
  302. package/src/renderer/components/CodeReviewPanel.tsx +256 -0
  303. package/src/renderer/components/CodeWorkspace.tsx +192 -0
  304. package/src/renderer/components/CodebaseDashboard.tsx +295 -0
  305. package/src/renderer/components/ComputerUsePanel.tsx +262 -0
  306. package/src/renderer/components/ConnectorsPanel.tsx +471 -0
  307. package/src/renderer/components/ContextMenu.tsx +155 -0
  308. package/src/renderer/components/ContextUsageDisplay.tsx +248 -0
  309. package/src/renderer/components/CoworkPanel.tsx +415 -0
  310. package/src/renderer/components/DiffViewer.tsx +452 -0
  311. package/src/renderer/components/ErrorBoundary.tsx +273 -0
  312. package/src/renderer/components/ExtendedThinkingToggle.tsx +244 -0
  313. package/src/renderer/components/FileAttachments.tsx +247 -0
  314. package/src/renderer/components/FileExplorer.tsx +242 -0
  315. package/src/renderer/components/FileExplorerPanel.tsx +302 -0
  316. package/src/renderer/components/GitPanel.tsx +154 -0
  317. package/src/renderer/components/Header.tsx +113 -0
  318. package/src/renderer/components/MCPPanel.tsx +326 -0
  319. package/src/renderer/components/MentionAutocomplete.tsx +239 -0
  320. package/src/renderer/components/PermissionPanel.tsx +159 -0
  321. package/src/renderer/components/PermissionSelector.tsx +203 -0
  322. package/src/renderer/components/PluginMarketplace.tsx +325 -0
  323. package/src/renderer/components/PromptOptimizerPanel.tsx +399 -0
  324. package/src/renderer/components/SearchPanel.tsx +173 -0
  325. package/src/renderer/components/SearchReplace.tsx +284 -0
  326. package/src/renderer/components/SessionSidebar.tsx +367 -0
  327. package/src/renderer/components/SettingsPanel.tsx +426 -0
  328. package/src/renderer/components/Sidebar.tsx +100 -0
  329. package/src/renderer/components/SkillsPanel.tsx +245 -0
  330. package/src/renderer/components/SplitPane.tsx +173 -0
  331. package/src/renderer/components/Terminal.tsx +190 -0
  332. package/src/renderer/components/VoiceCommand.tsx +129 -0
  333. package/src/renderer/components/WorktreePanel.tsx +163 -0
  334. package/src/renderer/components/ui/AriaComponents.tsx +193 -0
  335. package/src/renderer/components/ui/Button.tsx +68 -0
  336. package/src/renderer/components/ui/Card.tsx +102 -0
  337. package/src/renderer/components/ui/Input.tsx +44 -0
  338. package/src/renderer/components/ui/Skeleton.tsx +55 -0
  339. package/src/renderer/components/ui/VirtualList.tsx +196 -0
  340. package/src/renderer/i18n/I18nProvider.tsx +101 -0
  341. package/src/renderer/i18n/de.ts +161 -0
  342. package/src/renderer/i18n/en.ts +163 -0
  343. package/src/renderer/i18n/es.ts +161 -0
  344. package/src/renderer/i18n/fr.ts +161 -0
  345. package/src/renderer/i18n/index.ts +44 -0
  346. package/src/renderer/index.css +129 -0
  347. package/src/renderer/lib/accessibility.tsx +287 -0
  348. package/src/renderer/lib/hooks.ts +304 -0
  349. package/src/renderer/lib/utils.ts +6 -0
  350. package/src/renderer/main.tsx +25 -0
  351. package/src/renderer/styles/minimalist.css +539 -0
  352. package/src/renderer/sw.ts +180 -0
  353. package/src/renderer/types.d.ts +138 -0
  354. package/src/shared/types.ts +813 -0
  355. package/supabase/schema.sql +234 -0
  356. package/tailwind.config.js +78 -0
  357. package/tests/e2e/package.json +15 -0
  358. package/tests/e2e/playwright.config.ts +31 -0
  359. package/tests/e2e/specs/app.spec.ts +194 -0
  360. package/tests/setup.ts +99 -0
  361. package/tests/unit/AgentOrchestrator.test.ts +274 -0
  362. package/tests/unit/DatabaseManager.test.ts +262 -0
  363. package/tests/unit/GitWorktreeManager.test.ts +150 -0
  364. package/tests/unit/SecurityManager.test.ts +110 -0
  365. package/tsconfig.main.json +22 -0
  366. package/tsconfig.renderer.json +27 -0
  367. package/vite.config.ts +28 -0
@@ -0,0 +1,10 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Bash(ls:*)",
5
+ "Bash(shellcheck:*)",
6
+ "Bash(node:*)",
7
+ "Bash(bash:*)"
8
+ ]
9
+ }
10
+ }
package/.eslintrc.json ADDED
@@ -0,0 +1,27 @@
1
+ {
2
+ "root": true,
3
+ "env": {
4
+ "browser": true,
5
+ "es2022": true,
6
+ "node": true
7
+ },
8
+ "extends": [
9
+ "eslint:recommended",
10
+ "plugin:@typescript-eslint/recommended",
11
+ "plugin:react-hooks/recommended"
12
+ ],
13
+ "ignorePatterns": ["dist", ".eslintrc.cjs"],
14
+ "parser": "@typescript-eslint/parser",
15
+ "plugins": ["react-refresh"],
16
+ "rules": {
17
+ "react-refresh/only-export-components": [
18
+ "warn",
19
+ { "allowConstantExport": true }
20
+ ],
21
+ "@typescript-eslint/no-explicit-any": "off",
22
+ "@typescript-eslint/no-unused-vars": ["warn", {
23
+ "argsIgnorePattern": "^_",
24
+ "varsIgnorePattern": "^_"
25
+ }]
26
+ }
27
+ }
@@ -0,0 +1,156 @@
1
+ name: CI/CD Pipeline
2
+
3
+ on:
4
+ push:
5
+ branches: [main, develop]
6
+ tags: ['v*']
7
+ pull_request:
8
+ branches: [main, develop]
9
+
10
+ jobs:
11
+ test:
12
+ runs-on: ubuntu-latest
13
+ strategy:
14
+ matrix:
15
+ node-version: [18.x, 20.x]
16
+
17
+ steps:
18
+ - uses: actions/checkout@v4
19
+
20
+ - name: Use Node.js ${{ matrix.node-version }}
21
+ uses: actions/setup-node@v4
22
+ with:
23
+ node-version: ${{ matrix.node-version }}
24
+ cache: 'npm'
25
+
26
+ - name: Install dependencies
27
+ run: npm ci
28
+
29
+ - name: Run linter
30
+ run: npm run lint
31
+
32
+ - name: Type check
33
+ run: npm run typecheck
34
+
35
+ - name: Run unit tests
36
+ run: npm test -- --coverage
37
+
38
+ - name: Upload coverage
39
+ uses: codecov/codecov-action@v3
40
+ with:
41
+ files: ./coverage/lcov.info
42
+ flags: unittests
43
+ name: codecov-umbrella
44
+
45
+ build:
46
+ runs-on: ubuntu-latest
47
+ needs: test
48
+
49
+ steps:
50
+ - uses: actions/checkout@v4
51
+
52
+ - name: Use Node.js
53
+ uses: actions/setup-node@v4
54
+ with:
55
+ node-version: '20.x'
56
+ cache: 'npm'
57
+
58
+ - name: Install dependencies
59
+ run: npm ci
60
+
61
+ - name: Build application
62
+ run: npm run build
63
+
64
+ - name: Package for Linux
65
+ run: npm run package:linux
66
+
67
+ - name: Upload artifacts
68
+ uses: actions/upload-artifact@v3
69
+ with:
70
+ name: linux-packages
71
+ path: |
72
+ release/*.AppImage
73
+ release/*.deb
74
+ release/*.rpm
75
+
76
+ release:
77
+ runs-on: ubuntu-latest
78
+ needs: [test, build]
79
+ if: startsWith(github.ref, 'refs/tags/v')
80
+
81
+ steps:
82
+ - uses: actions/checkout@v4
83
+
84
+ - name: Download artifacts
85
+ uses: actions/download-artifact@v3
86
+ with:
87
+ name: linux-packages
88
+ path: release/
89
+
90
+ - name: Create Release
91
+ uses: softprops/action-gh-release@v1
92
+ with:
93
+ files: |
94
+ release/*.AppImage
95
+ release/*.deb
96
+ release/*.rpm
97
+ release/*.tar.gz
98
+ draft: false
99
+ prerelease: ${{ contains(github.ref, 'beta') || contains(github.ref, 'alpha') }}
100
+ generate_release_notes: true
101
+ env:
102
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
103
+
104
+ npm-publish:
105
+ runs-on: ubuntu-latest
106
+ needs: [test, build]
107
+ if: startsWith(github.ref, 'refs/tags/v')
108
+
109
+ steps:
110
+ - uses: actions/checkout@v4
111
+
112
+ - name: Use Node.js
113
+ uses: actions/setup-node@v4
114
+ with:
115
+ node-version: '20.x'
116
+ registry-url: 'https://registry.npmjs.org'
117
+
118
+ - name: Update package version
119
+ run: |
120
+ VERSION=${GITHUB_REF#refs/tags/v}
121
+ cd packages/npm-installer
122
+ npm version $VERSION --no-git-tag-version
123
+
124
+ - name: Publish to NPM
125
+ run: |
126
+ cd packages/npm-installer
127
+ npm publish --access public
128
+ env:
129
+ NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
130
+
131
+ docker:
132
+ runs-on: ubuntu-latest
133
+ needs: test
134
+
135
+ steps:
136
+ - uses: actions/checkout@v4
137
+
138
+ - name: Set up Docker Buildx
139
+ uses: docker/setup-buildx-action@v3
140
+
141
+ - name: Login to Docker Hub
142
+ uses: docker/login-action@v3
143
+ with:
144
+ username: ${{ secrets.DOCKER_USERNAME }}
145
+ password: ${{ secrets.DOCKER_PASSWORD }}
146
+
147
+ - name: Build and push
148
+ uses: docker/build-push-action@v5
149
+ with:
150
+ context: .
151
+ push: ${{ github.event_name != 'pull_request' }}
152
+ tags: |
153
+ codexlinux/app:latest
154
+ codexlinux/app:${{ github.sha }}
155
+ cache-from: type=gha
156
+ cache-to: type=gha,mode=max
package/.huskyrc ADDED
@@ -0,0 +1,7 @@
1
+ {
2
+ "hooks": {
3
+ "pre-commit": "lint-staged",
4
+ "commit-msg": "commitlint -E HUSKY_GIT_PARAMS",
5
+ "pre-push": "npm run test:ci"
6
+ }
7
+ }
package/.lintstagedrc ADDED
@@ -0,0 +1,13 @@
1
+ {
2
+ "*.{ts,tsx}": [
3
+ "eslint --fix",
4
+ "prettier --write"
5
+ ],
6
+ "*.{js,jsx}": [
7
+ "eslint --fix",
8
+ "prettier --write"
9
+ ],
10
+ "*.{json,md}": [
11
+ "prettier --write"
12
+ ]
13
+ }
package/.prettierrc ADDED
@@ -0,0 +1,12 @@
1
+ {
2
+ "bracketSpacing": true,
3
+ "endOfLine": "lf",
4
+ "printWidth": 100,
5
+ "semi": true,
6
+ "singleQuote": true,
7
+ "tabWidth": 2,
8
+ "trailingComma": "es5",
9
+ "useTabs": false,
10
+ "arrowParens": "avoid",
11
+ "quoteProps": "as-needed"
12
+ }
package/CLAUDE.md ADDED
@@ -0,0 +1,163 @@
1
+ # CLAUDE.md - Codex Linux Configuration
2
+
3
+ ## Project
4
+
5
+ **Name:** Codex Linux
6
+ **Description:** A powerful Linux port of OpenAI Codex - command center for managing multiple AI coding agents in parallel
7
+ **Language:** TypeScript
8
+ **Framework:** Electron + React
9
+
10
+ ## Coding Standards
11
+
12
+ **Style:** Follow TypeScript strict mode with explicit types
13
+ **Linter:** ESLint with TypeScript parser
14
+ **Formatter:** Prettier with 2-space indentation
15
+ **Max Line Length:** 100
16
+ **Indent Size:** 2
17
+ **Use Tabs:** false
18
+
19
+ ## Architecture
20
+
21
+ ### Patterns
22
+ - Event-driven architecture with EventEmitter
23
+ - Manager pattern for core functionality
24
+ - Repository pattern for database operations
25
+ - Component-based UI architecture
26
+ - Provider pattern for AI services
27
+
28
+ ### Conventions
29
+ - Use async/await for asynchronous operations
30
+ - Prefer dependency injection over singletons
31
+ - Implement proper error handling with try/catch
32
+ - Use meaningful variable names (no single letter except loops)
33
+ - Always clean up resources (intervals, listeners, files)
34
+
35
+ ### Design Principles
36
+ - Single Responsibility Principle
37
+ - Don't Repeat Yourself (DRY)
38
+ - Keep It Simple, Stupid (KISS)
39
+ - Fail fast with clear error messages
40
+ - Security by default
41
+
42
+ ## Libraries
43
+
44
+ ### Preferred
45
+ - electron-log for logging
46
+ - better-sqlite3 for database
47
+ - simple-git for Git operations
48
+ - uuid for unique IDs
49
+ - node-cron for scheduling
50
+ - zod for validation
51
+
52
+ ### Testing
53
+ - Jest for unit tests
54
+ - Playwright for E2E tests
55
+ - @testing-library/react for component tests
56
+
57
+ ### Utilities
58
+ - lodash for utilities
59
+ - date-fns for date manipulation
60
+ - node-fetch for HTTP requests
61
+
62
+ ### Avoid
63
+ - Avoid using any type - always define types
64
+ - Avoid callbacks - use promises/async-await
65
+ - Avoid mutating state directly in React
66
+ - Avoid hardcoded values - use constants
67
+
68
+ ## Review Checklist
69
+
70
+ ### Required
71
+ - [ ] All TypeScript types are defined
72
+ - [ ] Error handling is implemented
73
+ - [ ] No console.log - use electron-log
74
+ - [ ] Security best practices followed
75
+ - [ ] Database migrations included if needed
76
+
77
+ ### Security
78
+ - [ ] No hardcoded secrets or API keys
79
+ - [ ] Input validation implemented
80
+ - [ ] SQL injection prevention (parameterized queries)
81
+ - [ ] XSS prevention in rendered content
82
+ - [ ] File path validation before operations
83
+
84
+ ### Performance
85
+ - [ ] Database queries are optimized
86
+ - [ ] No memory leaks (cleanup intervals/listeners)
87
+ - [ ] Lazy loading for heavy components
88
+ - [ ] Debouncing for frequent operations
89
+
90
+ ## Tools
91
+
92
+ **Build:** `npm run build`
93
+ **Test:** `npm test`
94
+ **Lint:** `npm run lint`
95
+ **Typecheck:** `npx tsc --noEmit`
96
+
97
+ ## Custom Prompts
98
+
99
+ ### System Prompt
100
+ You are an expert TypeScript developer working on Codex Linux, an Electron application for managing AI coding agents. Follow the coding standards defined in this project. Always provide type-safe code with proper error handling.
101
+
102
+ ### Before Action
103
+ Check if the operation requires permission based on the current permission mode. Log all actions using electron-log.
104
+
105
+ ### After Action
106
+ Verify the changes compile without TypeScript errors. Run the linter and formatter before marking as complete.
107
+
108
+ ### Commit Message
109
+ Format: `type(scope): description`
110
+
111
+ Types: feat, fix, docs, style, refactor, test, chore
112
+
113
+ Example: `feat(agents): add CLAUDE.md support`
114
+
115
+ ### PR Description
116
+ Include:
117
+ - What changed
118
+ - Why it changed
119
+ - Testing performed
120
+ - Breaking changes (if any)
121
+
122
+ ## Agents
123
+
124
+ **Default Model:** gpt-4o
125
+ **Default Provider:** openai
126
+ **Skills:**
127
+ - code-review
128
+ - refactoring
129
+ - testing
130
+
131
+ **Permission Mode:** ask
132
+
133
+ ## MCP
134
+
135
+ ### Servers
136
+
137
+ #### Filesystem
138
+ **Command:** npx -y @modelcontextprotocol/server-filesystem
139
+ **Environment:**
140
+ - ALLOWED_DIRS=/home/user/projects
141
+
142
+ #### Git
143
+ **Command:** npx -y @modelcontextprotocol/server-git
144
+ **Environment:**
145
+ - REPO_ROOT=/home/user/codex-linux-app
146
+
147
+ ## Hooks
148
+
149
+ **Pre-Edit:** npm run lint:staged
150
+ **Post-Edit:** npm run format
151
+ **Pre-Commit:** npm run typecheck && npm test
152
+ **Post-Commit:** echo "Changes committed successfully"
153
+
154
+ ## Ignore
155
+
156
+ - node_modules
157
+ - dist
158
+ - build
159
+ - .git
160
+ - *.log
161
+ - coverage
162
+ - .env
163
+ - .env.local
@@ -0,0 +1,73 @@
1
+ # 🎨 DESIGN MINIMALISTE MODERNE - SURPASSE CLAUDE CODE
2
+
3
+ ## ✨ Ce qui rend le design supérieur :
4
+
5
+ ### 1. **Palette de couleurs épurée**
6
+ - Gris neutres sophistiqués (pas de couleurs criardes)
7
+ - Contraste parfait pour la lisibilité
8
+ - Thème clair et sombre harmonieux
9
+ - Accents subtils et élégants
10
+
11
+ ### 2. **Typographie soignée**
12
+ - Police Inter (moderne et lisible)
13
+ - Espacement des lettres optimisé
14
+ - Hiérarchie visuelle claire
15
+ - Tailles de texte cohérentes
16
+
17
+ ### 3. **Micro-interactions élégantes**
18
+ - Transitions fluides (200ms)
19
+ - Hover effects subtils
20
+ - Animations d'apparition (fadeIn, slideIn)
21
+ - Feedback visuel immédiat
22
+
23
+ ### 4. **Espacement généreux**
24
+ - Plus d'air, moins de fouillis
25
+ - Sections bien délimitées
26
+ - Marges cohérentes
27
+ - Respect du "white space"
28
+
29
+ ### 5. **Composants raffinés**
30
+ - Boutons avec states hover/actif
31
+ - Cards avec ombres subtils
32
+ - Inputs avec focus rings discrets
33
+ - Skeleton loaders élégants
34
+
35
+ ### 6. **Scrollbar minimaliste**
36
+ - Design épuré
37
+ - Apparition au hover
38
+ - Couleurs neutres
39
+ - Pas de distractions
40
+
41
+ ## 🆚 Comparaison avec Claude Code :
42
+
43
+ | Aspect | Claude Code | Codex Linux (Nouveau) |
44
+ |--------|-------------|----------------------|
45
+ | **Palette** | Basique | ✅ **Neutres sophistiqués** |
46
+ | **Typographie** | Standard | ✅ **Inter optimisée** |
47
+ | **Animations** | Simples | ✅ **Micro-interactions** |
48
+ | **Espacement** | Compact | ✅ **Aéré et respirant** |
49
+ | **Cards** | Plates | ✅ **Élevées avec ombre** |
50
+ | **Focus states** | Basiques | ✅ **Raffinés** |
51
+ | **Scrollbar** | Standard | ✅ **Minimaliste** |
52
+ | **Thèmes** | 2 basiques | ✅ **CSS variables modulaires** |
53
+ | **Loading** | Spinner simple | ✅ **Skeleton élégant** |
54
+ | **Sidebar** | Standard | ✅ **Avec descriptions** |
55
+
56
+ ## 🎯 Points forts du design :
57
+
58
+ 1. **✅ Épuré** - Pas d'éléments superflus
59
+ 2. **✅ Moderne** - Tendances 2024
60
+ 3. **✅ Professionnel** - Convient aux entreprises
61
+ 4. **✅ Accessible** - Contraste et lisibilité
62
+ 5. **✅ Réactif** - Animations 60fps
63
+ 6. **✅ Cohérent** - Design system complet
64
+ 7. **✅ Personnalisable** - Variables CSS faciles
65
+ 8. **✅ Élégant** - Raffiné et sobre
66
+
67
+ ## 🚀 Le design est :
68
+ - **Plus beau** que Claude Code
69
+ - **Plus moderne** que la plupart des IDE
70
+ - **Plus professionnel** pour les entreprises
71
+ - **Plus agréable** pour les longues sessions
72
+
73
+ **Interface PRÊTE et SUPÉRIEURE !** 🎨✨
package/Dockerfile ADDED
@@ -0,0 +1,64 @@
1
+ # Multi-stage build for Codex Linux
2
+
3
+ # Stage 1: Build
4
+ FROM node:20-alpine AS builder
5
+
6
+ # Install build dependencies
7
+ RUN apk add --no-cache \
8
+ python3 \
9
+ make \
10
+ g++ \
11
+ git
12
+
13
+ WORKDIR /app
14
+
15
+ # Copy package files
16
+ COPY package*.json ./
17
+ COPY packages/cli/package*.json ./packages/cli/
18
+
19
+ # Install dependencies
20
+ RUN npm ci
21
+
22
+ # Copy source code
23
+ COPY . .
24
+
25
+ # Build application
26
+ RUN npm run build
27
+
28
+ # Stage 2: Production
29
+ FROM node:20-alpine AS production
30
+
31
+ # Install runtime dependencies
32
+ RUN apk add --no-cache \
33
+ git \
34
+ ca-certificates
35
+
36
+ # Create non-root user
37
+ RUN addgroup -g 1001 -S codex && \
38
+ adduser -S codex -u 1001
39
+
40
+ WORKDIR /app
41
+
42
+ # Copy built application
43
+ COPY --from=builder /app/dist ./dist
44
+ COPY --from=builder /app/node_modules ./node_modules
45
+ COPY --from=builder /app/package.json ./
46
+ COPY --from=builder /app/assets ./assets
47
+
48
+ # Create necessary directories
49
+ RUN mkdir -p /home/codex/.config/codex && \
50
+ chown -R codex:codex /home/codex && \
51
+ chown -R codex:codex /app
52
+
53
+ # Switch to non-root user
54
+ USER codex
55
+
56
+ # Expose ports
57
+ EXPOSE 3001
58
+
59
+ # Health check
60
+ HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
61
+ CMD node -e "require('http').get('http://localhost:3001/api/health', (r) => r.statusCode === 200 ? process.exit(0) : process.exit(1))"
62
+
63
+ # Start application
64
+ CMD ["node", "dist/main/main.js"]
@@ -0,0 +1,152 @@
1
+ # Installation Guide
2
+
3
+ ## Quick Install (Recommended)
4
+
5
+ ### Option 1: One-line Installer (All Linux Distributions)
6
+
7
+ ```bash
8
+ curl -fsSL https://codex-linux.dev/install.sh | bash
9
+ ```
10
+
11
+ This installs the AppImage to `~/.local/bin/` and creates a desktop entry.
12
+
13
+ **System-wide install (requires sudo):**
14
+ ```bash
15
+ curl -fsSL https://codex-linux.dev/install.sh | sudo bash -s -- --system
16
+ ```
17
+
18
+ **Uninstall:**
19
+ ```bash
20
+ ~/.local/bin/uninstall-codex-linux.sh
21
+ ```
22
+
23
+ ---
24
+
25
+ ### Option 2: NPM (For Node.js Developers)
26
+
27
+ ```bash
28
+ # Install globally
29
+ npm install -g codex-linux
30
+
31
+ # Launch
32
+ codex-linux
33
+ ```
34
+
35
+ **Run without installing:**
36
+ ```bash
37
+ npx codex-linux
38
+ ```
39
+
40
+ **Update:**
41
+ ```bash
42
+ npm update -g codex-linux
43
+ ```
44
+
45
+ ---
46
+
47
+ ## Manual Installation
48
+
49
+ ### AppImage (Universal)
50
+
51
+ 1. Download the latest AppImage from [Releases](https://github.com/ranker-org/codex-linux-app/releases)
52
+ 2. Make it executable: `chmod +x Codex-Linux-*.AppImage`
53
+ 3. Run it: `./Codex-Linux-*.AppImage`
54
+
55
+ ### Debian/Ubuntu
56
+
57
+ ```bash
58
+ wget https://github.com/ranker-org/codex-linux-app/releases/latest/download/codex-linux_amd64.deb
59
+ sudo dpkg -i codex-linux_amd64.deb
60
+ sudo apt-get install -f # Fix any dependency issues
61
+ ```
62
+
63
+ ### Fedora/RHEL
64
+
65
+ ```bash
66
+ wget https://github.com/ranker-org/codex-linux-app/releases/latest/download/codex-linux.x86_64.rpm
67
+ sudo rpm -i codex-linux.x86_64.rpm
68
+ ```
69
+
70
+ ### Arch Linux
71
+
72
+ ```bash
73
+ wget https://github.com/ranker-org/codex-linux-app/releases/latest/download/codex-linux.pacman
74
+ sudo pacman -U codex-linux.pacman
75
+ ```
76
+
77
+ ---
78
+
79
+ ## Post-Installation
80
+
81
+ 1. **Launch Codex Linux**:
82
+ - From applications menu
83
+ - Or run `codex-linux` from terminal
84
+
85
+ 2. **Configure AI Provider**:
86
+ - Open Settings → AI Providers
87
+ - Add your API key (OpenAI, Anthropic, or use free models)
88
+
89
+ 3. **Create your first agent**:
90
+ - Click "+ New Agent"
91
+ - Select a project folder
92
+ - Choose provider and model
93
+ - Start coding!
94
+
95
+ ---
96
+
97
+ ## Troubleshooting
98
+
99
+ ### AppImage won't run
100
+
101
+ If the AppImage doesn't launch, you may need to install FUSE:
102
+
103
+ **Ubuntu/Debian:**
104
+ ```bash
105
+ sudo apt install libfuse2
106
+ ```
107
+
108
+ **Fedora/RHEL:**
109
+ ```bash
110
+ sudo dnf install fuse
111
+ ```
112
+
113
+ **Arch:**
114
+ ```bash
115
+ sudo pacman -S fuse2
116
+ ```
117
+
118
+ ### Permission denied
119
+
120
+ Make sure the AppImage is executable:
121
+ ```bash
122
+ chmod +x Codex-Linux-*.AppImage
123
+ ```
124
+
125
+ ### Not in PATH
126
+
127
+ If `codex-linux` command is not found after installation:
128
+
129
+ ```bash
130
+ # Add to your shell profile
131
+ echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
132
+ source ~/.bashrc
133
+ ```
134
+
135
+ ---
136
+
137
+ ## Supported Platforms
138
+
139
+ | Platform | Architecture | Status |
140
+ |----------|-------------|--------|
141
+ | Linux (glibc) | x64 | ✅ Fully supported |
142
+ | Linux (glibc) | arm64 | ✅ Fully supported |
143
+ | Linux (musl) | x64 | ⚠️ May require FUSE |
144
+
145
+ ---
146
+
147
+ ## Auto-Updates
148
+
149
+ Codex Linux includes automatic update checking. When a new version is available, you'll be notified in the application.
150
+
151
+ To manually check for updates:
152
+ - Go to Settings → About → Check for Updates
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Codex Linux Contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.