mcp-codex-worker 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (462) hide show
  1. package/README.md +135 -0
  2. package/bin/mcp-codex-worker.mjs +17 -0
  3. package/dist/src/app.d.ts +29 -0
  4. package/dist/src/app.js +353 -0
  5. package/dist/src/app.js.map +1 -0
  6. package/dist/src/config/defaults.d.ts +11 -0
  7. package/dist/src/config/defaults.js +12 -0
  8. package/dist/src/config/defaults.js.map +1 -0
  9. package/dist/src/index.d.ts +2 -0
  10. package/dist/src/index.js +64 -0
  11. package/dist/src/index.js.map +1 -0
  12. package/dist/src/mcp/tool-definitions.d.ts +180 -0
  13. package/dist/src/mcp/tool-definitions.js +241 -0
  14. package/dist/src/mcp/tool-definitions.js.map +1 -0
  15. package/dist/src/services/app-server-client.d.ts +65 -0
  16. package/dist/src/services/app-server-client.js +511 -0
  17. package/dist/src/services/app-server-client.js.map +1 -0
  18. package/dist/src/services/codex-runtime.d.ts +84 -0
  19. package/dist/src/services/codex-runtime.js +371 -0
  20. package/dist/src/services/codex-runtime.js.map +1 -0
  21. package/dist/src/services/fleet-mode.d.ts +3 -0
  22. package/dist/src/services/fleet-mode.js +21 -0
  23. package/dist/src/services/fleet-mode.js.map +1 -0
  24. package/dist/src/services/model-catalog.d.ts +22 -0
  25. package/dist/src/services/model-catalog.js +51 -0
  26. package/dist/src/services/model-catalog.js.map +1 -0
  27. package/dist/src/services/profile-manager.d.ts +29 -0
  28. package/dist/src/services/profile-manager.js +82 -0
  29. package/dist/src/services/profile-manager.js.map +1 -0
  30. package/dist/src/types/codex.d.ts +50 -0
  31. package/dist/src/types/codex.js +2 -0
  32. package/dist/src/types/codex.js.map +1 -0
  33. package/package.json +53 -0
  34. package/src/app.ts +417 -0
  35. package/src/config/defaults.ts +14 -0
  36. package/src/index.ts +84 -0
  37. package/src/mcp/tool-definitions.ts +280 -0
  38. package/src/protocol/AbsolutePathBuf.ts +14 -0
  39. package/src/protocol/AgentPath.ts +5 -0
  40. package/src/protocol/ApplyPatchApprovalParams.ts +21 -0
  41. package/src/protocol/ApplyPatchApprovalResponse.ts +6 -0
  42. package/src/protocol/AuthMode.ts +8 -0
  43. package/src/protocol/ClientInfo.ts +5 -0
  44. package/src/protocol/ClientNotification.ts +5 -0
  45. package/src/protocol/ClientRequest.ts +67 -0
  46. package/src/protocol/CollaborationMode.ts +10 -0
  47. package/src/protocol/ContentItem.ts +5 -0
  48. package/src/protocol/ConversationGitInfo.ts +5 -0
  49. package/src/protocol/ConversationSummary.ts +8 -0
  50. package/src/protocol/ExecCommandApprovalParams.ts +16 -0
  51. package/src/protocol/ExecCommandApprovalResponse.ts +6 -0
  52. package/src/protocol/ExecPolicyAmendment.ts +12 -0
  53. package/src/protocol/FileChange.ts +5 -0
  54. package/src/protocol/ForcedLoginMethod.ts +5 -0
  55. package/src/protocol/FunctionCallOutputBody.ts +6 -0
  56. package/src/protocol/FunctionCallOutputContentItem.ts +10 -0
  57. package/src/protocol/FuzzyFileSearchMatchType.ts +5 -0
  58. package/src/protocol/FuzzyFileSearchParams.ts +5 -0
  59. package/src/protocol/FuzzyFileSearchResponse.ts +6 -0
  60. package/src/protocol/FuzzyFileSearchResult.ts +9 -0
  61. package/src/protocol/FuzzyFileSearchSessionCompletedNotification.ts +5 -0
  62. package/src/protocol/FuzzyFileSearchSessionUpdatedNotification.ts +6 -0
  63. package/src/protocol/GetAuthStatusParams.ts +5 -0
  64. package/src/protocol/GetAuthStatusResponse.ts +6 -0
  65. package/src/protocol/GetConversationSummaryParams.ts +6 -0
  66. package/src/protocol/GetConversationSummaryResponse.ts +6 -0
  67. package/src/protocol/GhostCommit.ts +8 -0
  68. package/src/protocol/GitDiffToRemoteParams.ts +5 -0
  69. package/src/protocol/GitDiffToRemoteResponse.ts +6 -0
  70. package/src/protocol/GitSha.ts +5 -0
  71. package/src/protocol/ImageDetail.ts +5 -0
  72. package/src/protocol/InitializeCapabilities.ts +17 -0
  73. package/src/protocol/InitializeParams.ts +7 -0
  74. package/src/protocol/InitializeResponse.ts +20 -0
  75. package/src/protocol/InputModality.ts +8 -0
  76. package/src/protocol/LocalShellAction.ts +6 -0
  77. package/src/protocol/LocalShellExecAction.ts +5 -0
  78. package/src/protocol/LocalShellStatus.ts +5 -0
  79. package/src/protocol/MessagePhase.ts +11 -0
  80. package/src/protocol/ModeKind.ts +8 -0
  81. package/src/protocol/NetworkPolicyAmendment.ts +6 -0
  82. package/src/protocol/NetworkPolicyRuleAction.ts +5 -0
  83. package/src/protocol/ParsedCommand.ts +12 -0
  84. package/src/protocol/Personality.ts +5 -0
  85. package/src/protocol/PlanType.ts +5 -0
  86. package/src/protocol/RealtimeConversationVersion.ts +5 -0
  87. package/src/protocol/ReasoningEffort.ts +8 -0
  88. package/src/protocol/ReasoningItemContent.ts +5 -0
  89. package/src/protocol/ReasoningItemReasoningSummary.ts +5 -0
  90. package/src/protocol/ReasoningSummary.ts +10 -0
  91. package/src/protocol/RequestId.ts +5 -0
  92. package/src/protocol/Resource.ts +9 -0
  93. package/src/protocol/ResourceTemplate.ts +9 -0
  94. package/src/protocol/ResponseItem.ts +18 -0
  95. package/src/protocol/ReviewDecision.ts +10 -0
  96. package/src/protocol/ServerNotification.ts +60 -0
  97. package/src/protocol/ServerRequest.ts +18 -0
  98. package/src/protocol/ServiceTier.ts +5 -0
  99. package/src/protocol/SessionSource.ts +6 -0
  100. package/src/protocol/Settings.ts +9 -0
  101. package/src/protocol/SubAgentSource.ts +7 -0
  102. package/src/protocol/ThreadId.ts +5 -0
  103. package/src/protocol/Tool.ts +9 -0
  104. package/src/protocol/Verbosity.ts +9 -0
  105. package/src/protocol/WebSearchAction.ts +5 -0
  106. package/src/protocol/WebSearchContextSize.ts +5 -0
  107. package/src/protocol/WebSearchLocation.ts +5 -0
  108. package/src/protocol/WebSearchMode.ts +5 -0
  109. package/src/protocol/WebSearchToolConfig.ts +7 -0
  110. package/src/protocol/index.ts +75 -0
  111. package/src/protocol/serde_json/JsonValue.ts +5 -0
  112. package/src/protocol/v2/Account.ts +6 -0
  113. package/src/protocol/v2/AccountLoginCompletedNotification.ts +5 -0
  114. package/src/protocol/v2/AccountRateLimitsUpdatedNotification.ts +6 -0
  115. package/src/protocol/v2/AccountUpdatedNotification.ts +7 -0
  116. package/src/protocol/v2/AdditionalFileSystemPermissions.ts +6 -0
  117. package/src/protocol/v2/AdditionalNetworkPermissions.ts +5 -0
  118. package/src/protocol/v2/AdditionalPermissionProfile.ts +7 -0
  119. package/src/protocol/v2/AgentMessageDeltaNotification.ts +5 -0
  120. package/src/protocol/v2/AnalyticsConfig.ts +6 -0
  121. package/src/protocol/v2/AppBranding.ts +8 -0
  122. package/src/protocol/v2/AppInfo.ts +19 -0
  123. package/src/protocol/v2/AppListUpdatedNotification.ts +9 -0
  124. package/src/protocol/v2/AppMetadata.ts +7 -0
  125. package/src/protocol/v2/AppReview.ts +5 -0
  126. package/src/protocol/v2/AppScreenshot.ts +5 -0
  127. package/src/protocol/v2/AppSummary.ts +8 -0
  128. package/src/protocol/v2/AppToolApproval.ts +5 -0
  129. package/src/protocol/v2/AppToolsConfig.ts +6 -0
  130. package/src/protocol/v2/ApprovalsReviewer.ts +12 -0
  131. package/src/protocol/v2/AppsConfig.ts +8 -0
  132. package/src/protocol/v2/AppsDefaultConfig.ts +5 -0
  133. package/src/protocol/v2/AppsListParams.ts +24 -0
  134. package/src/protocol/v2/AppsListResponse.ts +14 -0
  135. package/src/protocol/v2/AskForApproval.ts +5 -0
  136. package/src/protocol/v2/ByteRange.ts +5 -0
  137. package/src/protocol/v2/CancelLoginAccountParams.ts +5 -0
  138. package/src/protocol/v2/CancelLoginAccountResponse.ts +6 -0
  139. package/src/protocol/v2/CancelLoginAccountStatus.ts +5 -0
  140. package/src/protocol/v2/ChatgptAuthTokensRefreshParams.ts +16 -0
  141. package/src/protocol/v2/ChatgptAuthTokensRefreshReason.ts +5 -0
  142. package/src/protocol/v2/ChatgptAuthTokensRefreshResponse.ts +5 -0
  143. package/src/protocol/v2/CodexErrorInfo.ts +12 -0
  144. package/src/protocol/v2/CollabAgentState.ts +6 -0
  145. package/src/protocol/v2/CollabAgentStatus.ts +5 -0
  146. package/src/protocol/v2/CollabAgentTool.ts +5 -0
  147. package/src/protocol/v2/CollabAgentToolCallStatus.ts +5 -0
  148. package/src/protocol/v2/CollaborationModeMask.ts +10 -0
  149. package/src/protocol/v2/CommandAction.ts +5 -0
  150. package/src/protocol/v2/CommandExecOutputDeltaNotification.ts +30 -0
  151. package/src/protocol/v2/CommandExecOutputStream.ts +8 -0
  152. package/src/protocol/v2/CommandExecParams.ts +97 -0
  153. package/src/protocol/v2/CommandExecResizeParams.ts +18 -0
  154. package/src/protocol/v2/CommandExecResizeResponse.ts +8 -0
  155. package/src/protocol/v2/CommandExecResponse.ts +24 -0
  156. package/src/protocol/v2/CommandExecTerminalSize.ts +16 -0
  157. package/src/protocol/v2/CommandExecTerminateParams.ts +13 -0
  158. package/src/protocol/v2/CommandExecTerminateResponse.ts +8 -0
  159. package/src/protocol/v2/CommandExecWriteParams.ts +22 -0
  160. package/src/protocol/v2/CommandExecWriteResponse.ts +8 -0
  161. package/src/protocol/v2/CommandExecutionApprovalDecision.ts +7 -0
  162. package/src/protocol/v2/CommandExecutionOutputDeltaNotification.ts +5 -0
  163. package/src/protocol/v2/CommandExecutionRequestApprovalParams.ts +57 -0
  164. package/src/protocol/v2/CommandExecutionRequestApprovalResponse.ts +6 -0
  165. package/src/protocol/v2/CommandExecutionSource.ts +5 -0
  166. package/src/protocol/v2/CommandExecutionStatus.ts +5 -0
  167. package/src/protocol/v2/Config.ts +23 -0
  168. package/src/protocol/v2/ConfigBatchWriteParams.ts +14 -0
  169. package/src/protocol/v2/ConfigEdit.ts +7 -0
  170. package/src/protocol/v2/ConfigLayer.ts +7 -0
  171. package/src/protocol/v2/ConfigLayerMetadata.ts +6 -0
  172. package/src/protocol/v2/ConfigLayerSource.ts +16 -0
  173. package/src/protocol/v2/ConfigReadParams.ts +11 -0
  174. package/src/protocol/v2/ConfigReadResponse.ts +8 -0
  175. package/src/protocol/v2/ConfigRequirements.ts +9 -0
  176. package/src/protocol/v2/ConfigRequirementsReadResponse.ts +10 -0
  177. package/src/protocol/v2/ConfigValueWriteParams.ts +11 -0
  178. package/src/protocol/v2/ConfigWarningNotification.ts +22 -0
  179. package/src/protocol/v2/ConfigWriteResponse.ts +12 -0
  180. package/src/protocol/v2/ContextCompactedNotification.ts +8 -0
  181. package/src/protocol/v2/CreditsSnapshot.ts +5 -0
  182. package/src/protocol/v2/DeprecationNoticeNotification.ts +13 -0
  183. package/src/protocol/v2/DynamicToolCallOutputContentItem.ts +5 -0
  184. package/src/protocol/v2/DynamicToolCallParams.ts +6 -0
  185. package/src/protocol/v2/DynamicToolCallResponse.ts +6 -0
  186. package/src/protocol/v2/DynamicToolCallStatus.ts +5 -0
  187. package/src/protocol/v2/DynamicToolSpec.ts +6 -0
  188. package/src/protocol/v2/ErrorNotification.ts +6 -0
  189. package/src/protocol/v2/ExecPolicyAmendment.ts +5 -0
  190. package/src/protocol/v2/ExperimentalFeature.ts +37 -0
  191. package/src/protocol/v2/ExperimentalFeatureEnablementSetParams.ts +12 -0
  192. package/src/protocol/v2/ExperimentalFeatureEnablementSetResponse.ts +9 -0
  193. package/src/protocol/v2/ExperimentalFeatureListParams.ts +13 -0
  194. package/src/protocol/v2/ExperimentalFeatureListResponse.ts +11 -0
  195. package/src/protocol/v2/ExperimentalFeatureStage.ts +5 -0
  196. package/src/protocol/v2/ExternalAgentConfigDetectParams.ts +13 -0
  197. package/src/protocol/v2/ExternalAgentConfigDetectResponse.ts +6 -0
  198. package/src/protocol/v2/ExternalAgentConfigImportParams.ts +6 -0
  199. package/src/protocol/v2/ExternalAgentConfigImportResponse.ts +5 -0
  200. package/src/protocol/v2/ExternalAgentConfigMigrationItem.ts +10 -0
  201. package/src/protocol/v2/ExternalAgentConfigMigrationItemType.ts +5 -0
  202. package/src/protocol/v2/FeedbackUploadParams.ts +5 -0
  203. package/src/protocol/v2/FeedbackUploadResponse.ts +5 -0
  204. package/src/protocol/v2/FileChangeApprovalDecision.ts +5 -0
  205. package/src/protocol/v2/FileChangeOutputDeltaNotification.ts +5 -0
  206. package/src/protocol/v2/FileChangeRequestApprovalParams.ts +14 -0
  207. package/src/protocol/v2/FileChangeRequestApprovalResponse.ts +6 -0
  208. package/src/protocol/v2/FileUpdateChange.ts +6 -0
  209. package/src/protocol/v2/FsChangedNotification.ts +17 -0
  210. package/src/protocol/v2/FsCopyParams.ts +21 -0
  211. package/src/protocol/v2/FsCopyResponse.ts +8 -0
  212. package/src/protocol/v2/FsCreateDirectoryParams.ts +17 -0
  213. package/src/protocol/v2/FsCreateDirectoryResponse.ts +8 -0
  214. package/src/protocol/v2/FsGetMetadataParams.ts +13 -0
  215. package/src/protocol/v2/FsGetMetadataResponse.ts +24 -0
  216. package/src/protocol/v2/FsReadDirectoryEntry.ts +20 -0
  217. package/src/protocol/v2/FsReadDirectoryParams.ts +13 -0
  218. package/src/protocol/v2/FsReadDirectoryResponse.ts +13 -0
  219. package/src/protocol/v2/FsReadFileParams.ts +13 -0
  220. package/src/protocol/v2/FsReadFileResponse.ts +12 -0
  221. package/src/protocol/v2/FsRemoveParams.ts +21 -0
  222. package/src/protocol/v2/FsRemoveResponse.ts +8 -0
  223. package/src/protocol/v2/FsUnwatchParams.ts +12 -0
  224. package/src/protocol/v2/FsUnwatchResponse.ts +8 -0
  225. package/src/protocol/v2/FsWatchParams.ts +13 -0
  226. package/src/protocol/v2/FsWatchResponse.ts +17 -0
  227. package/src/protocol/v2/FsWriteFileParams.ts +17 -0
  228. package/src/protocol/v2/FsWriteFileResponse.ts +8 -0
  229. package/src/protocol/v2/GetAccountParams.ts +13 -0
  230. package/src/protocol/v2/GetAccountRateLimitsResponse.ts +14 -0
  231. package/src/protocol/v2/GetAccountResponse.ts +6 -0
  232. package/src/protocol/v2/GitInfo.ts +5 -0
  233. package/src/protocol/v2/GrantedPermissionProfile.ts +7 -0
  234. package/src/protocol/v2/GuardianApprovalReview.ts +12 -0
  235. package/src/protocol/v2/GuardianApprovalReviewStatus.ts +8 -0
  236. package/src/protocol/v2/GuardianRiskLevel.ts +8 -0
  237. package/src/protocol/v2/HookCompletedNotification.ts +6 -0
  238. package/src/protocol/v2/HookEventName.ts +5 -0
  239. package/src/protocol/v2/HookExecutionMode.ts +5 -0
  240. package/src/protocol/v2/HookHandlerType.ts +5 -0
  241. package/src/protocol/v2/HookOutputEntry.ts +6 -0
  242. package/src/protocol/v2/HookOutputEntryKind.ts +5 -0
  243. package/src/protocol/v2/HookPromptFragment.ts +5 -0
  244. package/src/protocol/v2/HookRunStatus.ts +5 -0
  245. package/src/protocol/v2/HookRunSummary.ts +11 -0
  246. package/src/protocol/v2/HookScope.ts +5 -0
  247. package/src/protocol/v2/HookStartedNotification.ts +6 -0
  248. package/src/protocol/v2/ItemCompletedNotification.ts +6 -0
  249. package/src/protocol/v2/ItemGuardianApprovalReviewCompletedNotification.ts +15 -0
  250. package/src/protocol/v2/ItemGuardianApprovalReviewStartedNotification.ts +15 -0
  251. package/src/protocol/v2/ItemStartedNotification.ts +6 -0
  252. package/src/protocol/v2/ListMcpServerStatusParams.ts +13 -0
  253. package/src/protocol/v2/ListMcpServerStatusResponse.ts +11 -0
  254. package/src/protocol/v2/LoginAccountParams.ts +21 -0
  255. package/src/protocol/v2/LoginAccountResponse.ts +17 -0
  256. package/src/protocol/v2/LogoutAccountResponse.ts +5 -0
  257. package/src/protocol/v2/MarketplaceInterface.ts +5 -0
  258. package/src/protocol/v2/MarketplaceLoadErrorInfo.ts +6 -0
  259. package/src/protocol/v2/McpAuthStatus.ts +5 -0
  260. package/src/protocol/v2/McpElicitationArrayType.ts +5 -0
  261. package/src/protocol/v2/McpElicitationBooleanSchema.ts +6 -0
  262. package/src/protocol/v2/McpElicitationBooleanType.ts +5 -0
  263. package/src/protocol/v2/McpElicitationConstOption.ts +5 -0
  264. package/src/protocol/v2/McpElicitationEnumSchema.ts +8 -0
  265. package/src/protocol/v2/McpElicitationLegacyTitledEnumSchema.ts +6 -0
  266. package/src/protocol/v2/McpElicitationMultiSelectEnumSchema.ts +7 -0
  267. package/src/protocol/v2/McpElicitationNumberSchema.ts +6 -0
  268. package/src/protocol/v2/McpElicitationNumberType.ts +5 -0
  269. package/src/protocol/v2/McpElicitationObjectType.ts +5 -0
  270. package/src/protocol/v2/McpElicitationPrimitiveSchema.ts +9 -0
  271. package/src/protocol/v2/McpElicitationSchema.ts +13 -0
  272. package/src/protocol/v2/McpElicitationSingleSelectEnumSchema.ts +7 -0
  273. package/src/protocol/v2/McpElicitationStringFormat.ts +5 -0
  274. package/src/protocol/v2/McpElicitationStringSchema.ts +7 -0
  275. package/src/protocol/v2/McpElicitationStringType.ts +5 -0
  276. package/src/protocol/v2/McpElicitationTitledEnumItems.ts +6 -0
  277. package/src/protocol/v2/McpElicitationTitledMultiSelectEnumSchema.ts +7 -0
  278. package/src/protocol/v2/McpElicitationTitledSingleSelectEnumSchema.ts +7 -0
  279. package/src/protocol/v2/McpElicitationUntitledEnumItems.ts +6 -0
  280. package/src/protocol/v2/McpElicitationUntitledMultiSelectEnumSchema.ts +7 -0
  281. package/src/protocol/v2/McpElicitationUntitledSingleSelectEnumSchema.ts +6 -0
  282. package/src/protocol/v2/McpServerElicitationAction.ts +5 -0
  283. package/src/protocol/v2/McpServerElicitationRequestParams.ts +16 -0
  284. package/src/protocol/v2/McpServerElicitationRequestResponse.ts +17 -0
  285. package/src/protocol/v2/McpServerOauthLoginCompletedNotification.ts +5 -0
  286. package/src/protocol/v2/McpServerOauthLoginParams.ts +5 -0
  287. package/src/protocol/v2/McpServerOauthLoginResponse.ts +5 -0
  288. package/src/protocol/v2/McpServerRefreshResponse.ts +5 -0
  289. package/src/protocol/v2/McpServerStartupState.ts +5 -0
  290. package/src/protocol/v2/McpServerStatus.ts +9 -0
  291. package/src/protocol/v2/McpServerStatusUpdatedNotification.ts +6 -0
  292. package/src/protocol/v2/McpToolCallError.ts +5 -0
  293. package/src/protocol/v2/McpToolCallProgressNotification.ts +5 -0
  294. package/src/protocol/v2/McpToolCallResult.ts +6 -0
  295. package/src/protocol/v2/McpToolCallStatus.ts +5 -0
  296. package/src/protocol/v2/MemoryCitation.ts +6 -0
  297. package/src/protocol/v2/MemoryCitationEntry.ts +5 -0
  298. package/src/protocol/v2/MergeStrategy.ts +5 -0
  299. package/src/protocol/v2/Model.ts +10 -0
  300. package/src/protocol/v2/ModelAvailabilityNux.ts +5 -0
  301. package/src/protocol/v2/ModelListParams.ts +17 -0
  302. package/src/protocol/v2/ModelListResponse.ts +11 -0
  303. package/src/protocol/v2/ModelRerouteReason.ts +5 -0
  304. package/src/protocol/v2/ModelReroutedNotification.ts +6 -0
  305. package/src/protocol/v2/ModelUpgradeInfo.ts +5 -0
  306. package/src/protocol/v2/NetworkAccess.ts +5 -0
  307. package/src/protocol/v2/NetworkApprovalContext.ts +6 -0
  308. package/src/protocol/v2/NetworkApprovalProtocol.ts +5 -0
  309. package/src/protocol/v2/NetworkDomainPermission.ts +5 -0
  310. package/src/protocol/v2/NetworkPolicyAmendment.ts +6 -0
  311. package/src/protocol/v2/NetworkPolicyRuleAction.ts +5 -0
  312. package/src/protocol/v2/NetworkRequirements.ts +32 -0
  313. package/src/protocol/v2/NetworkUnixSocketPermission.ts +5 -0
  314. package/src/protocol/v2/NonSteerableTurnKind.ts +5 -0
  315. package/src/protocol/v2/OverriddenMetadata.ts +7 -0
  316. package/src/protocol/v2/PatchApplyStatus.ts +5 -0
  317. package/src/protocol/v2/PatchChangeKind.ts +5 -0
  318. package/src/protocol/v2/PermissionGrantScope.ts +5 -0
  319. package/src/protocol/v2/PermissionsRequestApprovalParams.ts +6 -0
  320. package/src/protocol/v2/PermissionsRequestApprovalResponse.ts +7 -0
  321. package/src/protocol/v2/PlanDeltaNotification.ts +9 -0
  322. package/src/protocol/v2/PluginAuthPolicy.ts +5 -0
  323. package/src/protocol/v2/PluginDetail.ts +9 -0
  324. package/src/protocol/v2/PluginInstallParams.ts +10 -0
  325. package/src/protocol/v2/PluginInstallPolicy.ts +5 -0
  326. package/src/protocol/v2/PluginInstallResponse.ts +7 -0
  327. package/src/protocol/v2/PluginInterface.ts +11 -0
  328. package/src/protocol/v2/PluginListParams.ts +16 -0
  329. package/src/protocol/v2/PluginListResponse.ts +7 -0
  330. package/src/protocol/v2/PluginMarketplaceEntry.ts +8 -0
  331. package/src/protocol/v2/PluginReadParams.ts +6 -0
  332. package/src/protocol/v2/PluginReadResponse.ts +6 -0
  333. package/src/protocol/v2/PluginSource.ts +6 -0
  334. package/src/protocol/v2/PluginSummary.ts +9 -0
  335. package/src/protocol/v2/PluginUninstallParams.ts +9 -0
  336. package/src/protocol/v2/PluginUninstallResponse.ts +5 -0
  337. package/src/protocol/v2/ProfileV2.ts +19 -0
  338. package/src/protocol/v2/RateLimitSnapshot.ts +8 -0
  339. package/src/protocol/v2/RateLimitWindow.ts +5 -0
  340. package/src/protocol/v2/RawResponseItemCompletedNotification.ts +6 -0
  341. package/src/protocol/v2/ReadOnlyAccess.ts +6 -0
  342. package/src/protocol/v2/ReasoningEffortOption.ts +6 -0
  343. package/src/protocol/v2/ReasoningSummaryPartAddedNotification.ts +5 -0
  344. package/src/protocol/v2/ReasoningSummaryTextDeltaNotification.ts +5 -0
  345. package/src/protocol/v2/ReasoningTextDeltaNotification.ts +5 -0
  346. package/src/protocol/v2/RequestPermissionProfile.ts +7 -0
  347. package/src/protocol/v2/ResidencyRequirement.ts +5 -0
  348. package/src/protocol/v2/ReviewDelivery.ts +5 -0
  349. package/src/protocol/v2/ReviewStartParams.ts +12 -0
  350. package/src/protocol/v2/ReviewStartResponse.ts +13 -0
  351. package/src/protocol/v2/ReviewTarget.ts +9 -0
  352. package/src/protocol/v2/SandboxMode.ts +5 -0
  353. package/src/protocol/v2/SandboxPolicy.ts +8 -0
  354. package/src/protocol/v2/SandboxWorkspaceWrite.ts +5 -0
  355. package/src/protocol/v2/ServerRequestResolvedNotification.ts +6 -0
  356. package/src/protocol/v2/SessionSource.ts +6 -0
  357. package/src/protocol/v2/SkillDependencies.ts +6 -0
  358. package/src/protocol/v2/SkillErrorInfo.ts +5 -0
  359. package/src/protocol/v2/SkillInterface.ts +5 -0
  360. package/src/protocol/v2/SkillMetadata.ts +12 -0
  361. package/src/protocol/v2/SkillScope.ts +5 -0
  362. package/src/protocol/v2/SkillSummary.ts +6 -0
  363. package/src/protocol/v2/SkillToolDependency.ts +5 -0
  364. package/src/protocol/v2/SkillsChangedNotification.ts +11 -0
  365. package/src/protocol/v2/SkillsConfigWriteParams.ts +14 -0
  366. package/src/protocol/v2/SkillsConfigWriteResponse.ts +5 -0
  367. package/src/protocol/v2/SkillsListEntry.ts +7 -0
  368. package/src/protocol/v2/SkillsListExtraRootsForCwd.ts +5 -0
  369. package/src/protocol/v2/SkillsListParams.ts +18 -0
  370. package/src/protocol/v2/SkillsListResponse.ts +6 -0
  371. package/src/protocol/v2/TerminalInteractionNotification.ts +5 -0
  372. package/src/protocol/v2/TextElement.ts +14 -0
  373. package/src/protocol/v2/TextPosition.ts +13 -0
  374. package/src/protocol/v2/TextRange.ts +6 -0
  375. package/src/protocol/v2/Thread.ts +72 -0
  376. package/src/protocol/v2/ThreadActiveFlag.ts +5 -0
  377. package/src/protocol/v2/ThreadArchiveParams.ts +5 -0
  378. package/src/protocol/v2/ThreadArchiveResponse.ts +5 -0
  379. package/src/protocol/v2/ThreadArchivedNotification.ts +5 -0
  380. package/src/protocol/v2/ThreadClosedNotification.ts +5 -0
  381. package/src/protocol/v2/ThreadCompactStartParams.ts +5 -0
  382. package/src/protocol/v2/ThreadCompactStartResponse.ts +5 -0
  383. package/src/protocol/v2/ThreadForkParams.ts +34 -0
  384. package/src/protocol/v2/ThreadForkResponse.ts +15 -0
  385. package/src/protocol/v2/ThreadItem.ts +100 -0
  386. package/src/protocol/v2/ThreadListParams.ts +43 -0
  387. package/src/protocol/v2/ThreadListResponse.ts +11 -0
  388. package/src/protocol/v2/ThreadLoadedListParams.ts +13 -0
  389. package/src/protocol/v2/ThreadLoadedListResponse.ts +14 -0
  390. package/src/protocol/v2/ThreadMetadataGitInfoUpdateParams.ts +20 -0
  391. package/src/protocol/v2/ThreadMetadataUpdateParams.ts +12 -0
  392. package/src/protocol/v2/ThreadMetadataUpdateResponse.ts +6 -0
  393. package/src/protocol/v2/ThreadNameUpdatedNotification.ts +5 -0
  394. package/src/protocol/v2/ThreadReadParams.ts +9 -0
  395. package/src/protocol/v2/ThreadReadResponse.ts +6 -0
  396. package/src/protocol/v2/ThreadRealtimeAudioChunk.ts +8 -0
  397. package/src/protocol/v2/ThreadRealtimeClosedNotification.ts +8 -0
  398. package/src/protocol/v2/ThreadRealtimeErrorNotification.ts +8 -0
  399. package/src/protocol/v2/ThreadRealtimeItemAddedNotification.ts +9 -0
  400. package/src/protocol/v2/ThreadRealtimeOutputAudioDeltaNotification.ts +9 -0
  401. package/src/protocol/v2/ThreadRealtimeStartedNotification.ts +9 -0
  402. package/src/protocol/v2/ThreadRealtimeTranscriptUpdatedNotification.ts +9 -0
  403. package/src/protocol/v2/ThreadResumeParams.ts +43 -0
  404. package/src/protocol/v2/ThreadResumeResponse.ts +15 -0
  405. package/src/protocol/v2/ThreadRollbackParams.ts +12 -0
  406. package/src/protocol/v2/ThreadRollbackResponse.ts +14 -0
  407. package/src/protocol/v2/ThreadSetNameParams.ts +5 -0
  408. package/src/protocol/v2/ThreadSetNameResponse.ts +5 -0
  409. package/src/protocol/v2/ThreadShellCommandParams.ts +12 -0
  410. package/src/protocol/v2/ThreadShellCommandResponse.ts +5 -0
  411. package/src/protocol/v2/ThreadSortKey.ts +5 -0
  412. package/src/protocol/v2/ThreadSourceKind.ts +5 -0
  413. package/src/protocol/v2/ThreadStartParams.ts +23 -0
  414. package/src/protocol/v2/ThreadStartResponse.ts +15 -0
  415. package/src/protocol/v2/ThreadStartedNotification.ts +6 -0
  416. package/src/protocol/v2/ThreadStatus.ts +6 -0
  417. package/src/protocol/v2/ThreadStatusChangedNotification.ts +6 -0
  418. package/src/protocol/v2/ThreadTokenUsage.ts +6 -0
  419. package/src/protocol/v2/ThreadTokenUsageUpdatedNotification.ts +6 -0
  420. package/src/protocol/v2/ThreadUnarchiveParams.ts +5 -0
  421. package/src/protocol/v2/ThreadUnarchiveResponse.ts +6 -0
  422. package/src/protocol/v2/ThreadUnarchivedNotification.ts +5 -0
  423. package/src/protocol/v2/ThreadUnsubscribeParams.ts +5 -0
  424. package/src/protocol/v2/ThreadUnsubscribeResponse.ts +6 -0
  425. package/src/protocol/v2/ThreadUnsubscribeStatus.ts +5 -0
  426. package/src/protocol/v2/TokenUsageBreakdown.ts +5 -0
  427. package/src/protocol/v2/ToolRequestUserInputAnswer.ts +8 -0
  428. package/src/protocol/v2/ToolRequestUserInputOption.ts +8 -0
  429. package/src/protocol/v2/ToolRequestUserInputParams.ts +9 -0
  430. package/src/protocol/v2/ToolRequestUserInputQuestion.ts +9 -0
  431. package/src/protocol/v2/ToolRequestUserInputResponse.ts +9 -0
  432. package/src/protocol/v2/ToolsV2.ts +6 -0
  433. package/src/protocol/v2/Turn.ts +18 -0
  434. package/src/protocol/v2/TurnCompletedNotification.ts +6 -0
  435. package/src/protocol/v2/TurnDiffUpdatedNotification.ts +9 -0
  436. package/src/protocol/v2/TurnError.ts +6 -0
  437. package/src/protocol/v2/TurnInterruptParams.ts +5 -0
  438. package/src/protocol/v2/TurnInterruptResponse.ts +5 -0
  439. package/src/protocol/v2/TurnPlanStep.ts +6 -0
  440. package/src/protocol/v2/TurnPlanStepStatus.ts +5 -0
  441. package/src/protocol/v2/TurnPlanUpdatedNotification.ts +6 -0
  442. package/src/protocol/v2/TurnStartParams.ts +54 -0
  443. package/src/protocol/v2/TurnStartResponse.ts +6 -0
  444. package/src/protocol/v2/TurnStartedNotification.ts +6 -0
  445. package/src/protocol/v2/TurnStatus.ts +5 -0
  446. package/src/protocol/v2/TurnSteerParams.ts +11 -0
  447. package/src/protocol/v2/TurnSteerResponse.ts +5 -0
  448. package/src/protocol/v2/UserInput.ts +10 -0
  449. package/src/protocol/v2/WebSearchAction.ts +5 -0
  450. package/src/protocol/v2/WindowsSandboxSetupCompletedNotification.ts +6 -0
  451. package/src/protocol/v2/WindowsSandboxSetupMode.ts +5 -0
  452. package/src/protocol/v2/WindowsSandboxSetupStartParams.ts +7 -0
  453. package/src/protocol/v2/WindowsSandboxSetupStartResponse.ts +5 -0
  454. package/src/protocol/v2/WindowsWorldWritableWarningNotification.ts +5 -0
  455. package/src/protocol/v2/WriteStatus.ts +5 -0
  456. package/src/protocol/v2/index.ts +346 -0
  457. package/src/services/app-server-client.ts +636 -0
  458. package/src/services/codex-runtime.ts +500 -0
  459. package/src/services/fleet-mode.ts +29 -0
  460. package/src/services/model-catalog.ts +86 -0
  461. package/src/services/profile-manager.ts +113 -0
  462. package/src/types/codex.ts +57 -0
@@ -0,0 +1,371 @@
1
+ import process from 'node:process';
2
+ import { copyFile, mkdtemp, mkdir, readFile, writeFile } from 'node:fs/promises';
3
+ import { basename, join } from 'node:path';
4
+ import { tmpdir } from 'node:os';
5
+ import { CODEX_APP_SERVER_ARGS_ENV, CODEX_APP_SERVER_COMMAND_ENV, REQUEST_TIMEOUT_MS, } from '../config/defaults.js';
6
+ import { AppServerClient } from './app-server-client.js';
7
+ import { appendFleetDeveloperInstructions } from './fleet-mode.js';
8
+ import { buildModelCatalog, describeAllowedModels, resolveModel, } from './model-catalog.js';
9
+ import { ProfileManager, } from './profile-manager.js';
10
+ function parseArgs(raw) {
11
+ if (!raw || !raw.trim()) {
12
+ return ['app-server', '--listen', 'stdio://'];
13
+ }
14
+ const trimmed = raw.trim();
15
+ if (trimmed.startsWith('[')) {
16
+ try {
17
+ const parsed = JSON.parse(trimmed);
18
+ if (Array.isArray(parsed) && parsed.every((value) => typeof value === 'string')) {
19
+ return parsed;
20
+ }
21
+ }
22
+ catch {
23
+ // fall through to token split
24
+ }
25
+ }
26
+ return trimmed.split(/\s+/g).filter(Boolean);
27
+ }
28
+ function isRateLimitSignal(error) {
29
+ const message = error instanceof Error ? error.message : String(error);
30
+ const normalized = message.toLowerCase();
31
+ return (normalized.includes('rate limit') ||
32
+ normalized.includes('usage limit') ||
33
+ normalized.includes('usagelimitexceeded') ||
34
+ normalized.includes('429'));
35
+ }
36
+ function isAuthSignal(error) {
37
+ const message = error instanceof Error ? error.message : String(error);
38
+ const normalized = message.toLowerCase();
39
+ return (normalized.includes('unauthorized') ||
40
+ normalized.includes('requires auth') ||
41
+ normalized.includes('authentication') ||
42
+ normalized.includes('login'));
43
+ }
44
+ function isConfigCompatSignal(error) {
45
+ const message = error instanceof Error ? error.message : String(error);
46
+ const normalized = message.toLowerCase();
47
+ return (normalized.includes('error deriving config') ||
48
+ normalized.includes('agentroletoml') ||
49
+ (normalized.includes('invalid type: integer') && normalized.includes('agents')));
50
+ }
51
+ function sanitizeConfigForCompatibility(rawConfig) {
52
+ const lines = rawConfig.split(/\r?\n/g);
53
+ const sanitized = [];
54
+ let skippingAgentsSection = false;
55
+ for (const line of lines) {
56
+ const trimmed = line.trim();
57
+ const isSection = trimmed.startsWith('[') && trimmed.endsWith(']');
58
+ if (isSection) {
59
+ if (trimmed === '[agents]' || trimmed.startsWith('[agents.')) {
60
+ skippingAgentsSection = true;
61
+ continue;
62
+ }
63
+ skippingAgentsSection = false;
64
+ }
65
+ if (skippingAgentsSection) {
66
+ continue;
67
+ }
68
+ sanitized.push(line);
69
+ }
70
+ return sanitized.join('\n');
71
+ }
72
+ export class CodexRuntime {
73
+ profileManager;
74
+ command;
75
+ args;
76
+ env;
77
+ clients = new Map();
78
+ effectiveCodexHomes = new Map();
79
+ modelCatalog;
80
+ knownThreadIds = new Set();
81
+ loadedThreadIds = new Set();
82
+ constructor(commandOptions = {}) {
83
+ this.profileManager = ProfileManager.fromEnvironment();
84
+ this.command = commandOptions.command ?? process.env[CODEX_APP_SERVER_COMMAND_ENV] ?? 'codex';
85
+ this.args = commandOptions.args ?? parseArgs(process.env[CODEX_APP_SERVER_ARGS_ENV]);
86
+ this.env = commandOptions.env ?? process.env;
87
+ }
88
+ async shutdown() {
89
+ await Promise.all([...this.clients.values()].map((client) => client.stop()));
90
+ this.clients.clear();
91
+ this.loadedThreadIds.clear();
92
+ }
93
+ getPendingServerRequests(includeResolved = false) {
94
+ return this.getCurrentClient().listServerRequests(includeResolved);
95
+ }
96
+ getPendingServerRequest(id) {
97
+ return this.getCurrentClient().getServerRequest(id);
98
+ }
99
+ async respondToServerRequest(id, payload) {
100
+ await this.getCurrentClient().respondToServerRequest(id, payload);
101
+ }
102
+ async waitForOperation(operationId, timeoutMs, pollIntervalMs) {
103
+ return this.getCurrentClient().waitForOperation(operationId, {
104
+ timeoutMs,
105
+ pollIntervalMs,
106
+ });
107
+ }
108
+ getOperation(operationId) {
109
+ return this.getCurrentClient().getOperation(operationId);
110
+ }
111
+ async request(method, params, options = {}) {
112
+ const response = await this.withFailover(async (client, profile) => {
113
+ try {
114
+ return await client.request(method, params, { timeoutMs: options.timeoutMs ?? REQUEST_TIMEOUT_MS });
115
+ }
116
+ catch (error) {
117
+ if (!isConfigCompatSignal(error)) {
118
+ throw error;
119
+ }
120
+ const compatClient = await this.activateCompatibilityClient(profile);
121
+ return await compatClient.request(method, params, { timeoutMs: options.timeoutMs ?? REQUEST_TIMEOUT_MS });
122
+ }
123
+ });
124
+ this.trackLoadedThread(method, response, params);
125
+ return response;
126
+ }
127
+ async requestWithBridge(method, params, options = {}) {
128
+ const response = await this.withFailover(async (client, profile) => {
129
+ try {
130
+ return await client.requestWithBridge(method, params, {
131
+ timeoutMs: options.timeoutMs ?? REQUEST_TIMEOUT_MS,
132
+ bridgeTimeoutMs: options.bridgeTimeoutMs,
133
+ threadId: options.threadId,
134
+ });
135
+ }
136
+ catch (error) {
137
+ if (!isConfigCompatSignal(error)) {
138
+ throw error;
139
+ }
140
+ const compatClient = await this.activateCompatibilityClient(profile);
141
+ return await compatClient.requestWithBridge(method, params, {
142
+ timeoutMs: options.timeoutMs ?? REQUEST_TIMEOUT_MS,
143
+ bridgeTimeoutMs: options.bridgeTimeoutMs,
144
+ threadId: options.threadId,
145
+ });
146
+ }
147
+ });
148
+ this.trackLoadedThread(method, response.result ?? response, params);
149
+ return response;
150
+ }
151
+ async listModels(includeHidden = false) {
152
+ const response = await this.request('model/list', { includeHidden });
153
+ const models = (response.data ?? []).map((row) => ({
154
+ id: String(row.id),
155
+ model: String(row.model),
156
+ displayName: String(row.displayName),
157
+ hidden: Boolean(row.hidden),
158
+ upgrade: typeof row.upgrade === 'string' ? row.upgrade : null,
159
+ isDefault: Boolean(row.isDefault),
160
+ }));
161
+ this.modelCatalog = buildModelCatalog(models);
162
+ return includeHidden ? models : models.filter((model) => !model.hidden);
163
+ }
164
+ async resolveRequestedModel(requestedModel) {
165
+ if (!this.modelCatalog) {
166
+ await this.listModels(true);
167
+ }
168
+ const catalog = this.modelCatalog;
169
+ if (!catalog) {
170
+ throw new Error('Failed to build model catalog from model/list.');
171
+ }
172
+ try {
173
+ const resolution = resolveModel(catalog, requestedModel);
174
+ return {
175
+ resolvedModel: resolution.resolved,
176
+ remappedFrom: resolution.remappedFrom,
177
+ allowedModels: catalog.visibleModels.map((model) => model.id).sort(),
178
+ };
179
+ }
180
+ catch (error) {
181
+ if (error instanceof Error && error.message.startsWith('Unsupported model')) {
182
+ throw new Error(`Unsupported model "${requestedModel}". Allowed models: ${describeAllowedModels(catalog)}`);
183
+ }
184
+ throw error;
185
+ }
186
+ }
187
+ async listVisibleModelIds() {
188
+ if (!this.modelCatalog) {
189
+ await this.listModels(false);
190
+ }
191
+ return (this.modelCatalog?.visibleModels ?? []).map((model) => model.id).sort();
192
+ }
193
+ buildThreadStartParams(input) {
194
+ return this.resolveRequestedModel(input.model).then((resolved) => {
195
+ const params = {
196
+ model: resolved.resolvedModel,
197
+ modelProvider: 'openai',
198
+ cwd: input.cwd ?? process.cwd(),
199
+ approvalPolicy: 'on-request',
200
+ sandbox: 'workspace-write',
201
+ developerInstructions: appendFleetDeveloperInstructions(input.developerInstructions),
202
+ experimentalRawEvents: false,
203
+ persistExtendedHistory: false,
204
+ };
205
+ return {
206
+ params,
207
+ remappedFrom: resolved.remappedFrom,
208
+ };
209
+ });
210
+ }
211
+ buildThreadResumeParams(input) {
212
+ return this.resolveRequestedModel(input.model).then((resolved) => {
213
+ const params = {
214
+ threadId: input.threadId,
215
+ model: resolved.resolvedModel,
216
+ modelProvider: 'openai',
217
+ cwd: input.cwd ?? process.cwd(),
218
+ approvalPolicy: 'on-request',
219
+ sandbox: 'workspace-write',
220
+ developerInstructions: appendFleetDeveloperInstructions(input.developerInstructions),
221
+ persistExtendedHistory: false,
222
+ };
223
+ return {
224
+ params,
225
+ remappedFrom: resolved.remappedFrom,
226
+ };
227
+ });
228
+ }
229
+ buildTurnStartParams(input) {
230
+ return this.resolveRequestedModel(input.model).then((resolved) => ({
231
+ params: {
232
+ threadId: input.threadId,
233
+ model: resolved.resolvedModel,
234
+ input: [{
235
+ type: 'text',
236
+ text: input.userInput,
237
+ text_elements: [],
238
+ }],
239
+ },
240
+ remappedFrom: resolved.remappedFrom,
241
+ }));
242
+ }
243
+ buildTurnSteerParams(input) {
244
+ return {
245
+ threadId: input.threadId,
246
+ expectedTurnId: input.expectedTurnId,
247
+ input: [{
248
+ type: 'text',
249
+ text: input.userInput,
250
+ text_elements: [],
251
+ }],
252
+ };
253
+ }
254
+ async getThreadEvents(threadId) {
255
+ return this.getCurrentClient().getThreadEvents(threadId);
256
+ }
257
+ rememberThreadId(threadId) {
258
+ this.knownThreadIds.add(threadId);
259
+ }
260
+ listKnownThreadIds() {
261
+ return [...this.knownThreadIds].sort();
262
+ }
263
+ async ensureThreadLoaded(threadId, model) {
264
+ if (!this.knownThreadIds.has(threadId) || this.loadedThreadIds.has(threadId)) {
265
+ return;
266
+ }
267
+ const built = await this.buildThreadResumeParams({ threadId, model });
268
+ await this.request('thread/resume', built.params);
269
+ }
270
+ async withFailover(operation) {
271
+ let attempt = 0;
272
+ let lastError;
273
+ while (attempt < this.profileManager.getProfiles().length) {
274
+ const profile = this.profileManager.getCurrentProfile();
275
+ const client = await this.getClient(profile);
276
+ try {
277
+ return await operation(client, profile);
278
+ }
279
+ catch (error) {
280
+ lastError = error;
281
+ if (!isRateLimitSignal(error) && !isAuthSignal(error)) {
282
+ throw error;
283
+ }
284
+ await client.stop().catch(() => { });
285
+ this.clients.delete(profile.codexHome);
286
+ this.loadedThreadIds.clear();
287
+ const reason = isRateLimitSignal(error) ? 'rate_limit' : 'auth';
288
+ const rotated = this.profileManager.markFailure(reason);
289
+ if (!rotated.rotated) {
290
+ throw error;
291
+ }
292
+ attempt += 1;
293
+ }
294
+ }
295
+ throw lastError instanceof Error
296
+ ? lastError
297
+ : new Error(String(lastError));
298
+ }
299
+ getCurrentClient() {
300
+ const profile = this.profileManager.getCurrentProfile();
301
+ const existing = this.clients.get(profile.codexHome);
302
+ if (!existing) {
303
+ throw new Error(`No active Codex app-server client for profile ${profile.codexHome}`);
304
+ }
305
+ return existing;
306
+ }
307
+ async getClient(profile) {
308
+ const existing = this.clients.get(profile.codexHome);
309
+ if (existing) {
310
+ return existing;
311
+ }
312
+ const codexHome = this.effectiveCodexHomes.get(profile.codexHome) ?? profile.codexHome;
313
+ const client = new AppServerClient({
314
+ command: this.command,
315
+ args: this.args,
316
+ env: this.env,
317
+ codexHome,
318
+ appVersion: '0.1.0',
319
+ });
320
+ await client.start();
321
+ this.clients.set(profile.codexHome, client);
322
+ return client;
323
+ }
324
+ async activateCompatibilityClient(profile) {
325
+ const existing = this.clients.get(profile.codexHome);
326
+ if (existing) {
327
+ await existing.stop().catch(() => { });
328
+ this.clients.delete(profile.codexHome);
329
+ }
330
+ if (!this.effectiveCodexHomes.has(profile.codexHome)) {
331
+ const compatHome = await this.createCompatibilityHome(profile.codexHome);
332
+ this.effectiveCodexHomes.set(profile.codexHome, compatHome);
333
+ }
334
+ this.loadedThreadIds.clear();
335
+ return await this.getClient(profile);
336
+ }
337
+ async createCompatibilityHome(sourceCodexHome) {
338
+ const compatHome = await mkdtemp(join(tmpdir(), 'mcp-codex-compat-'));
339
+ await mkdir(compatHome, { recursive: true });
340
+ const configPath = join(sourceCodexHome, 'config.toml');
341
+ const rawConfig = await readFile(configPath, 'utf8');
342
+ await writeFile(join(compatHome, 'config.toml'), sanitizeConfigForCompatibility(rawConfig), 'utf8');
343
+ for (const fileName of ['auth.json', 'version.json']) {
344
+ try {
345
+ await copyFile(join(sourceCodexHome, fileName), join(compatHome, basename(fileName)));
346
+ }
347
+ catch {
348
+ // optional compatibility files
349
+ }
350
+ }
351
+ return compatHome;
352
+ }
353
+ trackLoadedThread(method, response, params) {
354
+ if (method === 'thread/start' || method === 'thread/resume') {
355
+ const object = response;
356
+ const threadId = object.thread?.id;
357
+ if (typeof threadId === 'string') {
358
+ this.rememberThreadId(threadId);
359
+ this.loadedThreadIds.add(threadId);
360
+ }
361
+ return;
362
+ }
363
+ if (method === 'turn/start') {
364
+ const object = params;
365
+ if (typeof object.threadId === 'string') {
366
+ this.loadedThreadIds.add(object.threadId);
367
+ }
368
+ }
369
+ }
370
+ }
371
+ //# sourceMappingURL=codex-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-runtime.js","sourceRoot":"","sources":["../../../src/services/codex-runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare const FLEET_DEVELOPER_INSTRUCTIONS_SUFFIX: string;
2
+ export declare function isFleetModeEnabled(value?: string | undefined): boolean;
3
+ export declare function appendFleetDeveloperInstructions(developerInstructions: string | null | undefined): string | undefined;
@@ -0,0 +1,21 @@
1
+ import { CODEX_ENABLE_FLEET_ENV } from '../config/defaults.js';
2
+ const TRUTHY_VALUES = new Set(['1', 'true', 'yes', 'on']);
3
+ export const FLEET_DEVELOPER_INSTRUCTIONS_SUFFIX = [
4
+ '',
5
+ '[codex-worker-fleet]',
6
+ 'This thread is running under mcp-codex-worker fleet mode.',
7
+ ].join('\n');
8
+ export function isFleetModeEnabled(value = process.env[CODEX_ENABLE_FLEET_ENV]) {
9
+ return value !== undefined && TRUTHY_VALUES.has(value.trim().toLowerCase());
10
+ }
11
+ export function appendFleetDeveloperInstructions(developerInstructions) {
12
+ if (!isFleetModeEnabled()) {
13
+ return developerInstructions ?? undefined;
14
+ }
15
+ const base = developerInstructions?.trim();
16
+ if (!base) {
17
+ return FLEET_DEVELOPER_INSTRUCTIONS_SUFFIX.trim();
18
+ }
19
+ return `${base}\n${FLEET_DEVELOPER_INSTRUCTIONS_SUFFIX}`;
20
+ }
21
+ //# sourceMappingURL=fleet-mode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fleet-mode.js","sourceRoot":"","sources":["../../../src/services/fleet-mode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AAE1D,MAAM,CAAC,MAAM,mCAAmC,GAAG;IACjD,EAAE;IACF,sBAAsB;IACtB,2DAA2D;CAC5D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,UAAU,kBAAkB,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;IAC5E,OAAO,KAAK,KAAK,SAAS,IAAI,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,qBAAgD;IAEhD,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;QAC1B,OAAO,qBAAqB,IAAI,SAAS,CAAC;IAC5C,CAAC;IAED,MAAM,IAAI,GAAG,qBAAqB,EAAE,IAAI,EAAE,CAAC;IAC3C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,mCAAmC,CAAC,IAAI,EAAE,CAAC;IACpD,CAAC;IAED,OAAO,GAAG,IAAI,KAAK,mCAAmC,EAAE,CAAC;AAC3D,CAAC"}
@@ -0,0 +1,22 @@
1
+ export interface ModelInfo {
2
+ id: string;
3
+ model: string;
4
+ displayName: string;
5
+ hidden: boolean;
6
+ upgrade: string | null;
7
+ isDefault: boolean;
8
+ }
9
+ export interface ModelCatalog {
10
+ visibleModels: ModelInfo[];
11
+ byId: Map<string, ModelInfo>;
12
+ upgradeAliases: Map<string, string>;
13
+ defaultModelId?: string | undefined;
14
+ }
15
+ export interface ModelResolution {
16
+ requested: string;
17
+ resolved: string;
18
+ remappedFrom?: string | undefined;
19
+ }
20
+ export declare function buildModelCatalog(models: ModelInfo[]): ModelCatalog;
21
+ export declare function describeAllowedModels(catalog: ModelCatalog): string;
22
+ export declare function resolveModel(catalog: ModelCatalog, requestedModel?: string | undefined): ModelResolution;
@@ -0,0 +1,51 @@
1
+ export function buildModelCatalog(models) {
2
+ const byId = new Map(models.map((model) => [model.id, model]));
3
+ const visibleModels = models.filter((model) => !model.hidden);
4
+ const upgradeAliases = new Map();
5
+ for (const model of models) {
6
+ if (!model.upgrade) {
7
+ continue;
8
+ }
9
+ if (byId.has(model.upgrade)) {
10
+ upgradeAliases.set(model.id, model.upgrade);
11
+ }
12
+ }
13
+ const defaultModelId = visibleModels.find((model) => model.isDefault)?.id ?? visibleModels[0]?.id;
14
+ return {
15
+ visibleModels,
16
+ byId,
17
+ upgradeAliases,
18
+ defaultModelId,
19
+ };
20
+ }
21
+ export function describeAllowedModels(catalog) {
22
+ return catalog.visibleModels.map((model) => model.id).sort().join(', ');
23
+ }
24
+ export function resolveModel(catalog, requestedModel) {
25
+ const requested = requestedModel ?? catalog.defaultModelId;
26
+ if (!requested) {
27
+ throw new Error('No models available from model/list.');
28
+ }
29
+ const direct = catalog.byId.get(requested);
30
+ if (direct && !direct.hidden) {
31
+ const upgraded = catalog.upgradeAliases.get(requested);
32
+ if (upgraded) {
33
+ return {
34
+ requested,
35
+ resolved: upgraded,
36
+ remappedFrom: requested,
37
+ };
38
+ }
39
+ return { requested, resolved: requested };
40
+ }
41
+ const upgraded = catalog.upgradeAliases.get(requested);
42
+ if (upgraded) {
43
+ return {
44
+ requested,
45
+ resolved: upgraded,
46
+ remappedFrom: requested,
47
+ };
48
+ }
49
+ throw new Error(`Unsupported model "${requested}". Allowed models: ${describeAllowedModels(catalog)}`);
50
+ }
51
+ //# sourceMappingURL=model-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-catalog.js","sourceRoot":"","sources":["../../../src/services/model-catalog.ts"],"names":[],"mappings":"AAsBA,MAAM,UAAU,iBAAiB,CAAC,MAAmB;IACnD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/D,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC9D,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEjD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACnB,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,MAAM,cAAc,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAElG,OAAO;QACL,aAAa;QACb,IAAI;QACJ,cAAc;QACd,cAAc;KACf,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAqB;IACzD,OAAO,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,OAAqB,EACrB,cAAmC;IAEnC,MAAM,SAAS,GAAG,cAAc,IAAI,OAAO,CAAC,cAAc,CAAC;IAC3D,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC3C,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvD,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO;gBACL,SAAS;gBACT,QAAQ,EAAE,QAAQ;gBAClB,YAAY,EAAE,SAAS;aACxB,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IAC5C,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACvD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO;YACL,SAAS;YACT,QAAQ,EAAE,QAAQ;YAClB,YAAY,EAAE,SAAS;SACxB,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,KAAK,CACb,sBAAsB,SAAS,sBAAsB,qBAAqB,CAAC,OAAO,CAAC,EAAE,CACtF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,29 @@
1
+ export interface CodexProfile {
2
+ id: string;
3
+ codexHome: string;
4
+ cooldownUntil?: number | undefined;
5
+ failureCount: number;
6
+ lastFailureReason?: string | undefined;
7
+ }
8
+ interface ProfileManagerOptions {
9
+ codexHomes?: string[] | undefined;
10
+ cooldownMs?: number | undefined;
11
+ now?: (() => number) | undefined;
12
+ }
13
+ export declare class ProfileManager {
14
+ private readonly cooldownMs;
15
+ private readonly now;
16
+ private readonly profiles;
17
+ private currentIndex;
18
+ constructor(options?: ProfileManagerOptions);
19
+ static fromEnvironment(now?: () => number): ProfileManager;
20
+ getCurrentProfile(): CodexProfile;
21
+ getProfiles(): CodexProfile[];
22
+ markFailure(reason: string): {
23
+ rotated: boolean;
24
+ profile?: CodexProfile;
25
+ };
26
+ private resetExpiredCooldowns;
27
+ private findFirstAvailableIndex;
28
+ }
29
+ export {};
@@ -0,0 +1,82 @@
1
+ import { homedir } from 'node:os';
2
+ import { join } from 'node:path';
3
+ import { CODEX_HOME_DIRS_ENV, PROFILE_COOLDOWN_MS } from '../config/defaults.js';
4
+ function defaultCodexHome() {
5
+ return join(homedir(), '.codex');
6
+ }
7
+ function dedupeHomes(codexHomes) {
8
+ const seen = new Set();
9
+ const result = [];
10
+ for (const home of codexHomes) {
11
+ const normalized = home.trim();
12
+ if (!normalized || seen.has(normalized)) {
13
+ continue;
14
+ }
15
+ seen.add(normalized);
16
+ result.push(normalized);
17
+ }
18
+ return result.length > 0 ? result : [defaultCodexHome()];
19
+ }
20
+ export class ProfileManager {
21
+ cooldownMs;
22
+ now;
23
+ profiles;
24
+ currentIndex = 0;
25
+ constructor(options = {}) {
26
+ this.cooldownMs = options.cooldownMs ?? PROFILE_COOLDOWN_MS;
27
+ this.now = options.now ?? Date.now;
28
+ this.profiles = dedupeHomes(options.codexHomes ?? [defaultCodexHome()]).map((codexHome, index) => ({
29
+ id: `profile-${index + 1}`,
30
+ codexHome,
31
+ failureCount: 0,
32
+ }));
33
+ this.currentIndex = this.findFirstAvailableIndex();
34
+ }
35
+ static fromEnvironment(now) {
36
+ const raw = process.env[CODEX_HOME_DIRS_ENV];
37
+ const homes = raw
38
+ ? raw.split(':').map((entry) => entry.trim()).filter(Boolean)
39
+ : [defaultCodexHome()];
40
+ return new ProfileManager({ codexHomes: homes, now });
41
+ }
42
+ getCurrentProfile() {
43
+ this.resetExpiredCooldowns();
44
+ return { ...this.profiles[this.currentIndex] };
45
+ }
46
+ getProfiles() {
47
+ this.resetExpiredCooldowns();
48
+ return this.profiles.map((profile) => ({ ...profile }));
49
+ }
50
+ markFailure(reason) {
51
+ const current = this.profiles[this.currentIndex];
52
+ if (!current) {
53
+ return { rotated: false };
54
+ }
55
+ current.failureCount += 1;
56
+ current.lastFailureReason = reason;
57
+ current.cooldownUntil = this.now() + this.cooldownMs;
58
+ const nextIndex = this.findFirstAvailableIndex();
59
+ if (nextIndex === -1) {
60
+ return { rotated: false };
61
+ }
62
+ this.currentIndex = nextIndex;
63
+ return { rotated: true, profile: this.getCurrentProfile() };
64
+ }
65
+ resetExpiredCooldowns() {
66
+ const now = this.now();
67
+ for (const profile of this.profiles) {
68
+ if (profile.cooldownUntil !== undefined && profile.cooldownUntil <= now) {
69
+ profile.cooldownUntil = undefined;
70
+ }
71
+ }
72
+ const nextIndex = this.findFirstAvailableIndex();
73
+ if (nextIndex !== -1) {
74
+ this.currentIndex = nextIndex;
75
+ }
76
+ }
77
+ findFirstAvailableIndex() {
78
+ const now = this.now();
79
+ return this.profiles.findIndex((profile) => profile.cooldownUntil === undefined || profile.cooldownUntil <= now);
80
+ }
81
+ }
82
+ //# sourceMappingURL=profile-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile-manager.js","sourceRoot":"","sources":["../../../src/services/profile-manager.ts"],"names":[],"mappings":"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"}