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,80 @@
1
+ import * as vscode from 'vscode';
2
+ import { CodexAPI } from '../api';
3
+
4
+ export class AgentItem extends vscode.TreeItem {
5
+ constructor(
6
+ public readonly id: string,
7
+ public readonly label: string,
8
+ public readonly status: string,
9
+ public readonly collapsibleState: vscode.TreeItemCollapsibleState
10
+ ) {
11
+ super(label, collapsibleState);
12
+
13
+ this.tooltip = `${label} (${status})`;
14
+ this.description = status;
15
+
16
+ // Set icon based on status
17
+ if (status === 'running') {
18
+ this.iconPath = new vscode.ThemeIcon('sync~spin', new vscode.ThemeColor('charts.green'));
19
+ } else if (status === 'error') {
20
+ this.iconPath = new vscode.ThemeIcon('error', new vscode.ThemeColor('charts.red'));
21
+ } else if (status === 'paused') {
22
+ this.iconPath = new vscode.ThemeIcon('debug-pause');
23
+ } else {
24
+ this.iconPath = new vscode.ThemeIcon('debug-start');
25
+ }
26
+
27
+ this.command = {
28
+ command: 'codex.openAgent',
29
+ title: 'Open Chat',
30
+ arguments: [id]
31
+ };
32
+
33
+ this.contextValue = 'agent';
34
+ }
35
+ }
36
+
37
+ export class AgentsProvider implements vscode.TreeDataProvider<AgentItem> {
38
+ private _onDidChangeTreeData: vscode.EventEmitter<AgentItem | undefined | null | void> = new vscode.EventEmitter<AgentItem | undefined | null | void>();
39
+ readonly onDidChangeTreeData: vscode.Event<AgentItem | undefined | null | void> = this._onDidChangeTreeData.event;
40
+
41
+ constructor(private api: CodexAPI) {}
42
+
43
+ refresh(): void {
44
+ this._onDidChangeTreeData.fire();
45
+ }
46
+
47
+ getTreeItem(element: AgentItem): vscode.TreeItem {
48
+ return element;
49
+ }
50
+
51
+ async getChildren(): Promise<AgentItem[]> {
52
+ try {
53
+ const agents = await this.api.getAgents();
54
+
55
+ if (agents.length === 0) {
56
+ return [new AgentItem(
57
+ 'empty',
58
+ 'No agents found',
59
+ '',
60
+ vscode.TreeItemCollapsibleState.None
61
+ )];
62
+ }
63
+
64
+ return agents.map(agent => new AgentItem(
65
+ agent.id,
66
+ agent.name,
67
+ agent.status,
68
+ vscode.TreeItemCollapsibleState.None
69
+ ));
70
+ } catch (error) {
71
+ vscode.window.showErrorMessage(`Failed to load agents: ${error}`);
72
+ return [new AgentItem(
73
+ 'error',
74
+ 'Error loading agents',
75
+ '',
76
+ vscode.TreeItemCollapsibleState.None
77
+ )];
78
+ }
79
+ }
80
+ }
@@ -0,0 +1,6 @@
1
+ module.exports = {
2
+ plugins: {
3
+ tailwindcss: {},
4
+ autoprefixer: {},
5
+ },
6
+ }
@@ -0,0 +1,42 @@
1
+ {
2
+ "name": "Codex Linux",
3
+ "short_name": "Codex",
4
+ "description": "Multi-agent AI coding command center for Linux",
5
+ "start_url": "/",
6
+ "display": "standalone",
7
+ "background_color": "#171717",
8
+ "theme_color": "#404040",
9
+ "orientation": "any",
10
+ "icons": [
11
+ {
12
+ "src": "/assets/icon-192.png",
13
+ "sizes": "192x192",
14
+ "type": "image/png",
15
+ "purpose": "any maskable"
16
+ },
17
+ {
18
+ "src": "/assets/icon-512.png",
19
+ "sizes": "512x512",
20
+ "type": "image/png",
21
+ "purpose": "any maskable"
22
+ }
23
+ ],
24
+ "categories": ["development", "productivity", "tools"],
25
+ "screenshots": [],
26
+ "shortcuts": [
27
+ {
28
+ "name": "New Agent",
29
+ "short_name": "Agent",
30
+ "description": "Create a new AI agent",
31
+ "url": "/?action=new-agent"
32
+ },
33
+ {
34
+ "name": "Settings",
35
+ "short_name": "Settings",
36
+ "description": "Open settings",
37
+ "url": "/settings"
38
+ }
39
+ ],
40
+ "related_applications": [],
41
+ "prefer_related_applications": false
42
+ }
package/public/sw.ts ADDED
@@ -0,0 +1,109 @@
1
+ /// <reference lib="webworker" />
2
+
3
+ declare const self: ServiceWorkerGlobalScope;
4
+
5
+ const CACHE_NAME = 'codex-offline-v1';
6
+ const STATIC_CACHE = 'codex-static-v1';
7
+ const DYNAMIC_CACHE = 'codex-dynamic-v1';
8
+
9
+ const STATIC_ASSETS = [
10
+ '/',
11
+ '/index.html',
12
+ '/manifest.json',
13
+ ];
14
+
15
+ const API_CACHE_DURATION = 5 * 60 * 1000;
16
+
17
+ interface CacheEntry {
18
+ data: unknown;
19
+ timestamp: number;
20
+ }
21
+
22
+ self.addEventListener('install', (event: ExtendableEvent) => {
23
+ event.waitUntil(
24
+ caches.open(STATIC_CACHE).then((cache) => {
25
+ return cache.addAll(STATIC_ASSETS);
26
+ })
27
+ );
28
+ self.skipWaiting();
29
+ });
30
+
31
+ self.addEventListener('activate', (event: ExtendableEvent) => {
32
+ event.waitUntil(
33
+ caches.keys().then((cacheNames) => {
34
+ return Promise.all(
35
+ cacheNames
36
+ .filter((name) => name !== STATIC_CACHE && name !== DYNAMIC_CACHE)
37
+ .map((name) => caches.delete(name))
38
+ );
39
+ })
40
+ );
41
+ self.clients.claim();
42
+ });
43
+
44
+ self.addEventListener('fetch', (event: FetchEvent) => {
45
+ const { request } = event;
46
+ const url = new URL(request.url);
47
+
48
+ if (request.method !== 'GET') {
49
+ return;
50
+ }
51
+
52
+ if (url.pathname.startsWith('/api/')) {
53
+ event.respondWith(networkFirst(request));
54
+ return;
55
+ }
56
+
57
+ if (url.origin === location.origin) {
58
+ event.respondWith(cacheFirst(request));
59
+ return;
60
+ }
61
+
62
+ event.respondWith(networkFirst(request));
63
+ });
64
+
65
+ async function cacheFirst(request: Request): Promise<Response> {
66
+ const cached = await caches.match(request);
67
+ if (cached) {
68
+ return cached;
69
+ }
70
+
71
+ try {
72
+ const network = await fetch(request);
73
+ if (network.ok) {
74
+ const cache = await caches.open(DYNAMIC_CACHE);
75
+ cache.put(request, network.clone());
76
+ }
77
+ return network;
78
+ } catch {
79
+ return new Response('Offline', { status: 503 });
80
+ }
81
+ }
82
+
83
+ async function networkFirst(request: Request): Promise<Response> {
84
+ try {
85
+ const network = await fetch(request);
86
+ if (network.ok) {
87
+ const cache = await caches.open(DYNAMIC_CACHE);
88
+ cache.put(request, network.clone());
89
+ }
90
+ return network;
91
+ } catch {
92
+ const cached = await caches.match(request);
93
+ if (cached) {
94
+ return cached;
95
+ }
96
+ return new Response(JSON.stringify({ error: 'offline' }), {
97
+ status: 503,
98
+ headers: { 'Content-Type': 'application/json' },
99
+ });
100
+ }
101
+ }
102
+
103
+ self.addEventListener('message', (event: ExtendableMessageEvent) => {
104
+ if (event.data === 'skipWaiting') {
105
+ self.skipWaiting();
106
+ }
107
+ });
108
+
109
+ export {};
@@ -0,0 +1,103 @@
1
+ #!/bin/bash
2
+
3
+ # Codex Linux Installation Script
4
+ # Supports: Ubuntu/Debian, Fedora/RHEL/CentOS, Arch Linux
5
+
6
+ set -e
7
+
8
+ echo "🚀 Installing Codex Linux..."
9
+
10
+ # Detect distribution
11
+ if [ -f /etc/os-release ]; then
12
+ . /etc/os-release
13
+ OS=$ID
14
+ VER=$VERSION_ID
15
+ else
16
+ echo "❌ Cannot detect Linux distribution"
17
+ exit 1
18
+ fi
19
+
20
+ # Install dependencies based on distribution
21
+ case $OS in
22
+ ubuntu|debian)
23
+ echo "📦 Installing dependencies for Debian/Ubuntu..."
24
+ sudo apt-get update
25
+ sudo apt-get install -y git nodejs npm libgtk-3-0 libnotify4 libnss3 libxss1 libxtst6 xdg-utils libatspi2.0-0 libuuid1 libsecret-1-0
26
+ ;;
27
+ fedora|rhel|centos)
28
+ echo "📦 Installing dependencies for Fedora/RHEL..."
29
+ sudo dnf install -y git nodejs npm gtk3 libnotify nss libXScrnSaver libXtst xdg-utils at-spi2-core libuuid libsecret
30
+ ;;
31
+ arch|manjaro)
32
+ echo "📦 Installing dependencies for Arch Linux..."
33
+ sudo pacman -S --noconfirm git nodejs npm gtk3 libnotify nss libxss libxtst xdg-utils at-spi2-core util-linux-libs libsecret
34
+ ;;
35
+ *)
36
+ echo "⚠️ Unsupported distribution: $OS"
37
+ echo "Please install manually: git, nodejs, npm, and Electron dependencies"
38
+ ;;
39
+ esac
40
+
41
+ # Check Node.js version
42
+ NODE_VERSION=$(node --version | cut -d'v' -f2 | cut -d'.' -f1)
43
+ if [ "$NODE_VERSION" -lt 18 ]; then
44
+ echo "❌ Node.js 18+ is required. Current version: $(node --version)"
45
+ exit 1
46
+ fi
47
+
48
+ # Create installation directory
49
+ INSTALL_DIR="$HOME/.local/share/codex-linux"
50
+ mkdir -p "$INSTALL_DIR"
51
+
52
+ # Copy application files
53
+ echo "📂 Installing application files..."
54
+ cp -r dist "$INSTALL_DIR/"
55
+ cp -r assets "$INSTALL_DIR/"
56
+ cp package.json "$INSTALL_DIR/"
57
+
58
+ # Create desktop entry
59
+ echo "🖥️ Creating desktop entry..."
60
+ mkdir -p "$HOME/.local/share/applications"
61
+ cat > "$HOME/.local/share/applications/codex-linux.desktop" << EOF
62
+ [Desktop Entry]
63
+ Name=Codex Linux
64
+ Comment=Multi-agent AI coding command center
65
+ Exec=$INSTALL_DIR/dist/main/main.js
66
+ Icon=$INSTALL_DIR/assets/icon.png
67
+ Type=Application
68
+ Categories=Development;IDE;
69
+ Terminal=false
70
+ StartupNotify=true
71
+ EOF
72
+
73
+ # Update desktop database
74
+ update-desktop-database "$HOME/.local/share/applications" 2>/dev/null || true
75
+
76
+ # Create symlink in PATH
77
+ mkdir -p "$HOME/.local/bin"
78
+ ln -sf "$INSTALL_DIR/dist/main/main.js" "$HOME/.local/bin/codex-linux"
79
+
80
+ # Install npm dependencies
81
+ echo "📥 Installing npm dependencies..."
82
+ cd "$INSTALL_DIR"
83
+ npm install --production
84
+
85
+ # Create config directory
86
+ mkdir -p "$HOME/.config/codex"
87
+
88
+ # Set permissions
89
+ chmod +x "$INSTALL_DIR/dist/main/main.js"
90
+
91
+ echo ""
92
+ echo "✅ Codex Linux has been installed successfully!"
93
+ echo ""
94
+ echo "🎯 Quick Start:"
95
+ echo " 1. Launch Codex Linux from your applications menu"
96
+ echo " 2. Configure your API keys in Settings → AI Providers"
97
+ echo " 3. Create your first agent and start coding!"
98
+ echo ""
99
+ echo "📖 Documentation: https://codex-linux.readthedocs.io"
100
+ echo "🐛 Report issues: https://github.com/yourusername/codex-linux/issues"
101
+ echo ""
102
+ echo "💡 Tip: Run 'codex-linux' from terminal to see logs"
103
+ echo ""
@@ -0,0 +1,275 @@
1
+ #!/bin/bash
2
+ set -e
3
+
4
+ # Codex Linux Universal Installer
5
+ # Works on ALL Linux distributions via AppImage
6
+ # Usage: curl -fsSL https://codex-linux.dev/install.sh | bash
7
+
8
+ REPO="ranker-002/codex-linux"
9
+ APP_NAME="Codex Linux"
10
+ BINARY_NAME="codex-linux"
11
+ DESKTOP_ENTRY="codex-linux.desktop"
12
+
13
+ # Colors
14
+ RED='\033[0;31m'
15
+ GREEN='\033[0;32m'
16
+ YELLOW='\033[1;33m'
17
+ BLUE='\033[0;34m'
18
+ NC='\033[0m'
19
+
20
+ print_banner() {
21
+ echo -e "${BLUE}"
22
+ echo "=========================================="
23
+ echo " Codex Linux Installer"
24
+ echo "=========================================="
25
+ echo -e "${NC}"
26
+ echo -e "${GREEN}Universal Installer (AppImage)${NC}"
27
+ echo ""
28
+ }
29
+
30
+ info() { echo -e "${BLUE}[INFO]${NC} $1"; }
31
+ success() { echo -e "${GREEN}[SUCCESS]${NC} $1"; }
32
+ warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
33
+ error() { echo -e "${RED}[ERROR]${NC} $1"; }
34
+
35
+ detect_arch() {
36
+ local arch=$(uname -m)
37
+ case $arch in
38
+ x86_64) echo "x64" ;;
39
+ aarch64|arm64) echo "arm64" ;;
40
+ *) error "Unsupported architecture: $arch"; exit 1 ;;
41
+ esac
42
+ }
43
+
44
+ get_latest_version() {
45
+ local api_url="https://api.github.com/repos/${REPO}/releases/latest"
46
+ local version=$(curl -fsSL "$api_url" 2>/dev/null | grep -o '"tag_name": "[^"]*"' | cut -d'"' -f4)
47
+ if [ -z "$version" ]; then
48
+ error "Failed to get latest version. Using fallback v1.0.0"
49
+ echo "v1.0.0"
50
+ else
51
+ echo "$version"
52
+ fi
53
+ }
54
+
55
+ download_appimage() {
56
+ local version=$1
57
+ local arch=$2
58
+ local url="https://github.com/${REPO}/releases/download/${version}/Codex-Linux-${version}-${arch}.AppImage"
59
+ local output="$BINARY_NAME.AppImage"
60
+
61
+ info "Downloading ${APP_NAME} ${version} (${arch})..."
62
+
63
+ if command -v curl &> /dev/null; then
64
+ curl -fsSL -o "$output" "$url" -# || {
65
+ error "Download failed. Trying wget..."
66
+ return 1
67
+ }
68
+ elif command -v wget &> /dev/null; then
69
+ wget -q --show-progress -O "$output" "$url" || {
70
+ error "Download failed"
71
+ return 1
72
+ }
73
+ else
74
+ error "curl or wget is required"
75
+ exit 1
76
+ fi
77
+
78
+ if [ ! -f "$output" ]; then
79
+ error "Download failed - file not found"
80
+ return 1
81
+ fi
82
+
83
+ chmod +x "$output"
84
+ success "Downloaded $output"
85
+ }
86
+
87
+ create_desktop_entry() {
88
+ local install_dir=$1
89
+ cat > "$DESKTOP_ENTRY" << EOF
90
+ [Desktop Entry]
91
+ Name=Codex Linux
92
+ Comment=Multi-agent AI coding command center
93
+ Exec=$install_dir/$BINARY_NAME.AppImage
94
+ Icon=$install_dir/$BINARY_NAME.png
95
+ Type=Application
96
+ Categories=Development;IDE;
97
+ Terminal=false
98
+ StartupNotify=true
99
+ MimeType=text/plain;text/x-python;text/javascript;
100
+ EOF
101
+ }
102
+
103
+ install_user() {
104
+ local install_dir="$HOME/.local/bin"
105
+ local apps_dir="$HOME/.local/share/applications"
106
+ local icons_dir="$HOME/.local/share/icons/hicolor/512x512/apps"
107
+
108
+ info "Installing to user directory (~/.local)..."
109
+
110
+ mkdir -p "$install_dir" "$apps_dir" "$icons_dir"
111
+
112
+ mv "$BINARY_NAME.AppImage" "$install_dir/"
113
+ ln -sf "$install_dir/$BINARY_NAME.AppImage" "$install_dir/$BINARY_NAME"
114
+
115
+ create_desktop_entry "$install_dir"
116
+ mv "$DESKTOP_ENTRY" "$apps_dir/"
117
+
118
+ # Try to extract icon
119
+ if "$install_dir/$BINARY_NAME.AppImage" --appimage-extract .DirIcon &> /dev/null; then
120
+ mv squashfs-root/.DirIcon "$icons_dir/$BINARY_NAME.png" 2>/dev/null || true
121
+ rm -rf squashfs-root 2>/dev/null || true
122
+ fi
123
+
124
+ if command -v update-desktop-database &> /dev/null; then
125
+ update-desktop-database "$apps_dir" 2>/dev/null || true
126
+ fi
127
+
128
+ # Add to PATH if needed
129
+ if [[ ":$PATH:" != *":$install_dir:"* ]]; then
130
+ if [ -f "$HOME/.bashrc" ]; then
131
+ echo 'export PATH="$HOME/.local/bin:$PATH"' >> "$HOME/.bashrc"
132
+ fi
133
+ if [ -f "$HOME/.zshrc" ]; then
134
+ echo 'export PATH="$HOME/.local/bin:$PATH"' >> "$HOME/.zshrc"
135
+ fi
136
+ warn "Added ~/.local/bin to PATH. Run: source ~/.bashrc (or restart terminal)"
137
+ fi
138
+
139
+ # Create uninstall script
140
+ cat > "$install_dir/uninstall-codex-linux.sh" << 'UNINSTALLEOF'
141
+ #!/bin/bash
142
+ echo "Uninstalling Codex Linux..."
143
+ rm -f "$HOME/.local/bin/codex-linux"
144
+ rm -f "$HOME/.local/bin/codex-linux.AppImage"
145
+ rm -f "$HOME/.local/share/applications/codex-linux.desktop"
146
+ rm -f "$HOME/.local/share/icons/hicolor/512x512/apps/codex-linux.png"
147
+ update-desktop-database "$HOME/.local/share/applications" 2>/dev/null || true
148
+ echo "Uninstalled successfully!"
149
+ UNINSTALLEOF
150
+ chmod +x "$install_dir/uninstall-codex-linux.sh"
151
+
152
+ success "Installed to $install_dir"
153
+ }
154
+
155
+ install_system() {
156
+ local install_dir="/opt/$BINARY_NAME"
157
+ local apps_dir="/usr/share/applications"
158
+ local icons_dir="/usr/share/icons/hicolor/512x512/apps"
159
+
160
+ info "Installing system-wide to /opt..."
161
+
162
+ if [ "$EUID" -ne 0 ]; then
163
+ error "System-wide install requires sudo. Run with sudo or use --user flag"
164
+ exit 1
165
+ fi
166
+
167
+ mkdir -p "$install_dir" "$apps_dir" "$icons_dir"
168
+
169
+ mv "$BINARY_NAME.AppImage" "$install_dir/"
170
+ ln -sf "$install_dir/$BINARY_NAME.AppImage" "/usr/local/bin/$BINARY_NAME"
171
+
172
+ create_desktop_entry "$install_dir"
173
+ mv "$DESKTOP_ENTRY" "$apps_dir/"
174
+
175
+ if "$install_dir/$BINARY_NAME.AppImage" --appimage-extract .DirIcon &> /dev/null; then
176
+ mv squashfs-root/.DirIcon "$icons_dir/$BINARY_NAME.png" 2>/dev/null || true
177
+ rm -rf squashfs-root 2>/dev/null || true
178
+ fi
179
+
180
+ if command -v update-desktop-database &> /dev/null; then
181
+ update-desktop-database "$apps_dir" 2>/dev/null || true
182
+ fi
183
+
184
+ success "Installed to $install_dir"
185
+ }
186
+
187
+ uninstall() {
188
+ info "Uninstalling ${APP_NAME}..."
189
+
190
+ rm -f "$HOME/.local/bin/$BINARY_NAME"
191
+ rm -f "$HOME/.local/bin/$BINARY_NAME.AppImage"
192
+ rm -f "$HOME/.local/share/applications/$DESKTOP_ENTRY"
193
+ rm -f "$HOME/.local/share/icons/hicolor/512x512/apps/$BINARY_NAME.png"
194
+ rm -f "$HOME/.local/bin/uninstall-$BINARY_NAME.sh"
195
+
196
+ if [ "$EUID" -eq 0 ]; then
197
+ rm -f "/usr/local/bin/$BINARY_NAME"
198
+ rm -rf "/opt/$BINARY_NAME" 2>/dev/null || true
199
+ rm -f "/usr/share/applications/$DESKTOP_ENTRY"
200
+ rm -f "/usr/share/icons/hicolor/512x512/apps/$BINARY_NAME.png"
201
+ fi
202
+
203
+ if command -v update-desktop-database &> /dev/null; then
204
+ update-desktop-database "$HOME/.local/share/applications" 2>/dev/null || true
205
+ fi
206
+
207
+ success "Uninstalled successfully"
208
+ }
209
+
210
+ main() {
211
+ print_banner
212
+
213
+ local install_mode="user"
214
+ local version=""
215
+
216
+ while [[ $# -gt 0 ]]; do
217
+ case $1 in
218
+ --user) install_mode="user"; shift ;;
219
+ --system) install_mode="system"; shift ;;
220
+ --uninstall) uninstall; exit 0 ;;
221
+ --version) version="$2"; shift 2 ;;
222
+ --help|-h)
223
+ echo "Usage: $0 [OPTIONS]"
224
+ echo ""
225
+ echo "Options:"
226
+ echo " --user Install to ~/.local/bin (default)"
227
+ echo " --system Install to /opt (requires sudo)"
228
+ echo " --uninstall Remove Codex Linux"
229
+ echo " --version TAG Install specific version"
230
+ echo " --help Show this help"
231
+ echo ""
232
+ echo "Examples:"
233
+ echo " curl -fsSL https://codex-linux.dev/install.sh | bash"
234
+ echo " curl -fsSL https://codex-linux.dev/install.sh | sudo bash -s -- --system"
235
+ exit 0
236
+ ;;
237
+ *) error "Unknown option: $1"; exit 1 ;;
238
+ esac
239
+ done
240
+
241
+ if ! command -v curl &> /dev/null && ! command -v wget &> /dev/null; then
242
+ error "curl or wget is required"
243
+ exit 1
244
+ fi
245
+
246
+ if [ -z "$version" ]; then
247
+ info "Fetching latest version..."
248
+ version=$(get_latest_version)
249
+ fi
250
+
251
+ info "Installing ${APP_NAME} ${version}..."
252
+
253
+ local arch=$(detect_arch)
254
+ info "Detected architecture: $arch"
255
+
256
+ download_appimage "$version" "$arch" || {
257
+ error "Failed to download. Please check your internet connection."
258
+ exit 1
259
+ }
260
+
261
+ if [ "$install_mode" = "system" ]; then
262
+ install_system
263
+ else
264
+ install_user
265
+ fi
266
+
267
+ echo ""
268
+ success "${APP_NAME} installed successfully!"
269
+ echo ""
270
+ echo -e "Run with: ${GREEN}codex-linux${NC}"
271
+ echo -e "Or find it in your application menu"
272
+ echo ""
273
+ }
274
+
275
+ main "$@"