@excitedjs/tm 1.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 (702) hide show
  1. package/bin/tm +76 -0
  2. package/package.json +39 -0
  3. package/resolver-register.mjs +7 -0
  4. package/resolver.mjs +86 -0
  5. package/src/cli/context.ts +63 -0
  6. package/src/cli/dispatch.ts +444 -0
  7. package/src/cli/errors.ts +45 -0
  8. package/src/cli/parse.ts +265 -0
  9. package/src/cli.ts +12 -0
  10. package/src/codex-protocol/AbsolutePathBuf.ts +14 -0
  11. package/src/codex-protocol/AgentPath.ts +5 -0
  12. package/src/codex-protocol/ApplyPatchApprovalParams.ts +21 -0
  13. package/src/codex-protocol/ApplyPatchApprovalResponse.ts +6 -0
  14. package/src/codex-protocol/AuthMode.ts +8 -0
  15. package/src/codex-protocol/AutoCompactTokenLimitScope.ts +9 -0
  16. package/src/codex-protocol/ClientInfo.ts +5 -0
  17. package/src/codex-protocol/ClientNotification.ts +5 -0
  18. package/src/codex-protocol/ClientRequest.ts +110 -0
  19. package/src/codex-protocol/CollaborationMode.ts +10 -0
  20. package/src/codex-protocol/ContentItem.ts +6 -0
  21. package/src/codex-protocol/ConversationGitInfo.ts +5 -0
  22. package/src/codex-protocol/ConversationSummary.ts +8 -0
  23. package/src/codex-protocol/ExecCommandApprovalParams.ts +16 -0
  24. package/src/codex-protocol/ExecCommandApprovalResponse.ts +6 -0
  25. package/src/codex-protocol/ExecPolicyAmendment.ts +12 -0
  26. package/src/codex-protocol/FileChange.ts +5 -0
  27. package/src/codex-protocol/ForcedLoginMethod.ts +5 -0
  28. package/src/codex-protocol/FunctionCallOutputBody.ts +6 -0
  29. package/src/codex-protocol/FunctionCallOutputContentItem.ts +10 -0
  30. package/src/codex-protocol/FuzzyFileSearchMatchType.ts +5 -0
  31. package/src/codex-protocol/FuzzyFileSearchParams.ts +5 -0
  32. package/src/codex-protocol/FuzzyFileSearchResponse.ts +6 -0
  33. package/src/codex-protocol/FuzzyFileSearchResult.ts +9 -0
  34. package/src/codex-protocol/FuzzyFileSearchSessionCompletedNotification.ts +5 -0
  35. package/src/codex-protocol/FuzzyFileSearchSessionStartParams.ts +5 -0
  36. package/src/codex-protocol/FuzzyFileSearchSessionStartResponse.ts +5 -0
  37. package/src/codex-protocol/FuzzyFileSearchSessionStopParams.ts +5 -0
  38. package/src/codex-protocol/FuzzyFileSearchSessionStopResponse.ts +5 -0
  39. package/src/codex-protocol/FuzzyFileSearchSessionUpdateParams.ts +5 -0
  40. package/src/codex-protocol/FuzzyFileSearchSessionUpdateResponse.ts +5 -0
  41. package/src/codex-protocol/FuzzyFileSearchSessionUpdatedNotification.ts +6 -0
  42. package/src/codex-protocol/GetAuthStatusParams.ts +5 -0
  43. package/src/codex-protocol/GetAuthStatusResponse.ts +6 -0
  44. package/src/codex-protocol/GetConversationSummaryParams.ts +6 -0
  45. package/src/codex-protocol/GetConversationSummaryResponse.ts +6 -0
  46. package/src/codex-protocol/GitDiffToRemoteParams.ts +5 -0
  47. package/src/codex-protocol/GitDiffToRemoteResponse.ts +6 -0
  48. package/src/codex-protocol/GitSha.ts +5 -0
  49. package/src/codex-protocol/ImageDetail.ts +5 -0
  50. package/src/codex-protocol/InitializeCapabilities.ts +21 -0
  51. package/src/codex-protocol/InitializeParams.ts +7 -0
  52. package/src/codex-protocol/InitializeResponse.ts +20 -0
  53. package/src/codex-protocol/InputModality.ts +8 -0
  54. package/src/codex-protocol/InternalSessionSource.ts +5 -0
  55. package/src/codex-protocol/LocalShellAction.ts +6 -0
  56. package/src/codex-protocol/LocalShellExecAction.ts +5 -0
  57. package/src/codex-protocol/LocalShellStatus.ts +5 -0
  58. package/src/codex-protocol/MessagePhase.ts +11 -0
  59. package/src/codex-protocol/ModeKind.ts +8 -0
  60. package/src/codex-protocol/NetworkPolicyAmendment.ts +6 -0
  61. package/src/codex-protocol/NetworkPolicyRuleAction.ts +5 -0
  62. package/src/codex-protocol/ParsedCommand.ts +12 -0
  63. package/src/codex-protocol/Personality.ts +5 -0
  64. package/src/codex-protocol/PlanType.ts +5 -0
  65. package/src/codex-protocol/RealtimeConversationVersion.ts +5 -0
  66. package/src/codex-protocol/RealtimeOutputModality.ts +5 -0
  67. package/src/codex-protocol/RealtimeVoice.ts +5 -0
  68. package/src/codex-protocol/RealtimeVoicesList.ts +6 -0
  69. package/src/codex-protocol/ReasoningEffort.ts +8 -0
  70. package/src/codex-protocol/ReasoningItemContent.ts +5 -0
  71. package/src/codex-protocol/ReasoningItemReasoningSummary.ts +5 -0
  72. package/src/codex-protocol/ReasoningSummary.ts +10 -0
  73. package/src/codex-protocol/RequestId.ts +5 -0
  74. package/src/codex-protocol/Resource.ts +9 -0
  75. package/src/codex-protocol/ResourceContent.ts +17 -0
  76. package/src/codex-protocol/ResourceTemplate.ts +9 -0
  77. package/src/codex-protocol/ResponseItem.ts +17 -0
  78. package/src/codex-protocol/ReviewDecision.ts +10 -0
  79. package/src/codex-protocol/ServerNotification.ts +73 -0
  80. package/src/codex-protocol/ServerRequest.ts +19 -0
  81. package/src/codex-protocol/SessionSource.ts +7 -0
  82. package/src/codex-protocol/Settings.ts +9 -0
  83. package/src/codex-protocol/SubAgentSource.ts +7 -0
  84. package/src/codex-protocol/ThreadId.ts +5 -0
  85. package/src/codex-protocol/ThreadMemoryMode.ts +5 -0
  86. package/src/codex-protocol/Tool.ts +9 -0
  87. package/src/codex-protocol/Verbosity.ts +9 -0
  88. package/src/codex-protocol/WebSearchAction.ts +5 -0
  89. package/src/codex-protocol/WebSearchContextSize.ts +5 -0
  90. package/src/codex-protocol/WebSearchLocation.ts +5 -0
  91. package/src/codex-protocol/WebSearchMode.ts +5 -0
  92. package/src/codex-protocol/WebSearchToolConfig.ts +7 -0
  93. package/src/codex-protocol/index.ts +86 -0
  94. package/src/codex-protocol/serde_json/JsonValue.ts +5 -0
  95. package/src/codex-protocol/v2/Account.ts +6 -0
  96. package/src/codex-protocol/v2/AccountLoginCompletedNotification.ts +5 -0
  97. package/src/codex-protocol/v2/AccountRateLimitsUpdatedNotification.ts +6 -0
  98. package/src/codex-protocol/v2/AccountUpdatedNotification.ts +7 -0
  99. package/src/codex-protocol/v2/ActivePermissionProfile.ts +15 -0
  100. package/src/codex-protocol/v2/AddCreditsNudgeCreditType.ts +5 -0
  101. package/src/codex-protocol/v2/AddCreditsNudgeEmailStatus.ts +5 -0
  102. package/src/codex-protocol/v2/AdditionalFileSystemPermissions.ts +15 -0
  103. package/src/codex-protocol/v2/AdditionalNetworkPermissions.ts +5 -0
  104. package/src/codex-protocol/v2/AdditionalPermissionProfile.ts +11 -0
  105. package/src/codex-protocol/v2/AgentMessageDeltaNotification.ts +5 -0
  106. package/src/codex-protocol/v2/AnalyticsConfig.ts +6 -0
  107. package/src/codex-protocol/v2/AppBranding.ts +8 -0
  108. package/src/codex-protocol/v2/AppInfo.ts +19 -0
  109. package/src/codex-protocol/v2/AppListUpdatedNotification.ts +9 -0
  110. package/src/codex-protocol/v2/AppMetadata.ts +7 -0
  111. package/src/codex-protocol/v2/AppReview.ts +5 -0
  112. package/src/codex-protocol/v2/AppScreenshot.ts +5 -0
  113. package/src/codex-protocol/v2/AppSummary.ts +8 -0
  114. package/src/codex-protocol/v2/AppToolApproval.ts +5 -0
  115. package/src/codex-protocol/v2/AppToolsConfig.ts +6 -0
  116. package/src/codex-protocol/v2/ApprovalsReviewer.ts +12 -0
  117. package/src/codex-protocol/v2/AppsConfig.ts +8 -0
  118. package/src/codex-protocol/v2/AppsDefaultConfig.ts +5 -0
  119. package/src/codex-protocol/v2/AppsListParams.ts +24 -0
  120. package/src/codex-protocol/v2/AppsListResponse.ts +14 -0
  121. package/src/codex-protocol/v2/AskForApproval.ts +5 -0
  122. package/src/codex-protocol/v2/AttestationGenerateParams.ts +5 -0
  123. package/src/codex-protocol/v2/AttestationGenerateResponse.ts +9 -0
  124. package/src/codex-protocol/v2/AutoReviewDecisionSource.ts +8 -0
  125. package/src/codex-protocol/v2/ByteRange.ts +5 -0
  126. package/src/codex-protocol/v2/CancelLoginAccountParams.ts +5 -0
  127. package/src/codex-protocol/v2/CancelLoginAccountResponse.ts +6 -0
  128. package/src/codex-protocol/v2/CancelLoginAccountStatus.ts +5 -0
  129. package/src/codex-protocol/v2/ChatgptAuthTokensRefreshParams.ts +16 -0
  130. package/src/codex-protocol/v2/ChatgptAuthTokensRefreshReason.ts +5 -0
  131. package/src/codex-protocol/v2/ChatgptAuthTokensRefreshResponse.ts +5 -0
  132. package/src/codex-protocol/v2/CodexErrorInfo.ts +12 -0
  133. package/src/codex-protocol/v2/CollabAgentState.ts +6 -0
  134. package/src/codex-protocol/v2/CollabAgentStatus.ts +5 -0
  135. package/src/codex-protocol/v2/CollabAgentTool.ts +5 -0
  136. package/src/codex-protocol/v2/CollabAgentToolCallStatus.ts +5 -0
  137. package/src/codex-protocol/v2/CollaborationModeListParams.ts +8 -0
  138. package/src/codex-protocol/v2/CollaborationModeListResponse.ts +9 -0
  139. package/src/codex-protocol/v2/CollaborationModeMask.ts +10 -0
  140. package/src/codex-protocol/v2/CommandAction.ts +6 -0
  141. package/src/codex-protocol/v2/CommandExecOutputDeltaNotification.ts +30 -0
  142. package/src/codex-protocol/v2/CommandExecOutputStream.ts +8 -0
  143. package/src/codex-protocol/v2/CommandExecParams.ts +105 -0
  144. package/src/codex-protocol/v2/CommandExecResizeParams.ts +18 -0
  145. package/src/codex-protocol/v2/CommandExecResizeResponse.ts +8 -0
  146. package/src/codex-protocol/v2/CommandExecResponse.ts +24 -0
  147. package/src/codex-protocol/v2/CommandExecTerminalSize.ts +16 -0
  148. package/src/codex-protocol/v2/CommandExecTerminateParams.ts +13 -0
  149. package/src/codex-protocol/v2/CommandExecTerminateResponse.ts +8 -0
  150. package/src/codex-protocol/v2/CommandExecWriteParams.ts +22 -0
  151. package/src/codex-protocol/v2/CommandExecWriteResponse.ts +8 -0
  152. package/src/codex-protocol/v2/CommandExecutionApprovalDecision.ts +7 -0
  153. package/src/codex-protocol/v2/CommandExecutionOutputDeltaNotification.ts +5 -0
  154. package/src/codex-protocol/v2/CommandExecutionRequestApprovalParams.ts +62 -0
  155. package/src/codex-protocol/v2/CommandExecutionRequestApprovalResponse.ts +6 -0
  156. package/src/codex-protocol/v2/CommandExecutionSource.ts +5 -0
  157. package/src/codex-protocol/v2/CommandExecutionStatus.ts +5 -0
  158. package/src/codex-protocol/v2/CommandMigration.ts +5 -0
  159. package/src/codex-protocol/v2/ComputerUseRequirements.ts +5 -0
  160. package/src/codex-protocol/v2/Config.ts +26 -0
  161. package/src/codex-protocol/v2/ConfigBatchWriteParams.ts +14 -0
  162. package/src/codex-protocol/v2/ConfigEdit.ts +7 -0
  163. package/src/codex-protocol/v2/ConfigLayer.ts +7 -0
  164. package/src/codex-protocol/v2/ConfigLayerMetadata.ts +6 -0
  165. package/src/codex-protocol/v2/ConfigLayerSource.ts +21 -0
  166. package/src/codex-protocol/v2/ConfigReadParams.ts +11 -0
  167. package/src/codex-protocol/v2/ConfigReadResponse.ts +8 -0
  168. package/src/codex-protocol/v2/ConfigRequirements.ts +13 -0
  169. package/src/codex-protocol/v2/ConfigRequirementsReadResponse.ts +10 -0
  170. package/src/codex-protocol/v2/ConfigValueWriteParams.ts +11 -0
  171. package/src/codex-protocol/v2/ConfigWarningNotification.ts +22 -0
  172. package/src/codex-protocol/v2/ConfigWriteResponse.ts +12 -0
  173. package/src/codex-protocol/v2/ConfiguredHookHandler.ts +5 -0
  174. package/src/codex-protocol/v2/ConfiguredHookMatcherGroup.ts +6 -0
  175. package/src/codex-protocol/v2/ContextCompactedNotification.ts +8 -0
  176. package/src/codex-protocol/v2/CreditsSnapshot.ts +5 -0
  177. package/src/codex-protocol/v2/DeprecationNoticeNotification.ts +13 -0
  178. package/src/codex-protocol/v2/DynamicToolCallOutputContentItem.ts +5 -0
  179. package/src/codex-protocol/v2/DynamicToolCallParams.ts +6 -0
  180. package/src/codex-protocol/v2/DynamicToolCallResponse.ts +6 -0
  181. package/src/codex-protocol/v2/DynamicToolCallStatus.ts +5 -0
  182. package/src/codex-protocol/v2/DynamicToolSpec.ts +6 -0
  183. package/src/codex-protocol/v2/EnvironmentAddParams.ts +5 -0
  184. package/src/codex-protocol/v2/EnvironmentAddResponse.ts +5 -0
  185. package/src/codex-protocol/v2/ErrorNotification.ts +6 -0
  186. package/src/codex-protocol/v2/ExecPolicyAmendment.ts +5 -0
  187. package/src/codex-protocol/v2/ExperimentalFeature.ts +37 -0
  188. package/src/codex-protocol/v2/ExperimentalFeatureEnablementSetParams.ts +12 -0
  189. package/src/codex-protocol/v2/ExperimentalFeatureEnablementSetResponse.ts +9 -0
  190. package/src/codex-protocol/v2/ExperimentalFeatureListParams.ts +19 -0
  191. package/src/codex-protocol/v2/ExperimentalFeatureListResponse.ts +11 -0
  192. package/src/codex-protocol/v2/ExperimentalFeatureStage.ts +5 -0
  193. package/src/codex-protocol/v2/ExternalAgentConfigDetectParams.ts +13 -0
  194. package/src/codex-protocol/v2/ExternalAgentConfigDetectResponse.ts +6 -0
  195. package/src/codex-protocol/v2/ExternalAgentConfigImportCompletedNotification.ts +5 -0
  196. package/src/codex-protocol/v2/ExternalAgentConfigImportParams.ts +6 -0
  197. package/src/codex-protocol/v2/ExternalAgentConfigImportResponse.ts +5 -0
  198. package/src/codex-protocol/v2/ExternalAgentConfigMigrationItem.ts +11 -0
  199. package/src/codex-protocol/v2/ExternalAgentConfigMigrationItemType.ts +5 -0
  200. package/src/codex-protocol/v2/FeedbackUploadParams.ts +5 -0
  201. package/src/codex-protocol/v2/FeedbackUploadResponse.ts +5 -0
  202. package/src/codex-protocol/v2/FileChangeApprovalDecision.ts +5 -0
  203. package/src/codex-protocol/v2/FileChangeOutputDeltaNotification.ts +10 -0
  204. package/src/codex-protocol/v2/FileChangePatchUpdatedNotification.ts +6 -0
  205. package/src/codex-protocol/v2/FileChangeRequestApprovalParams.ts +18 -0
  206. package/src/codex-protocol/v2/FileChangeRequestApprovalResponse.ts +6 -0
  207. package/src/codex-protocol/v2/FileSystemAccessMode.ts +5 -0
  208. package/src/codex-protocol/v2/FileSystemPath.ts +7 -0
  209. package/src/codex-protocol/v2/FileSystemSandboxEntry.ts +7 -0
  210. package/src/codex-protocol/v2/FileSystemSpecialPath.ts +5 -0
  211. package/src/codex-protocol/v2/FileUpdateChange.ts +6 -0
  212. package/src/codex-protocol/v2/ForcedChatgptWorkspaceIds.ts +8 -0
  213. package/src/codex-protocol/v2/FsChangedNotification.ts +17 -0
  214. package/src/codex-protocol/v2/FsCopyParams.ts +21 -0
  215. package/src/codex-protocol/v2/FsCopyResponse.ts +8 -0
  216. package/src/codex-protocol/v2/FsCreateDirectoryParams.ts +17 -0
  217. package/src/codex-protocol/v2/FsCreateDirectoryResponse.ts +8 -0
  218. package/src/codex-protocol/v2/FsGetMetadataParams.ts +13 -0
  219. package/src/codex-protocol/v2/FsGetMetadataResponse.ts +28 -0
  220. package/src/codex-protocol/v2/FsReadDirectoryEntry.ts +20 -0
  221. package/src/codex-protocol/v2/FsReadDirectoryParams.ts +13 -0
  222. package/src/codex-protocol/v2/FsReadDirectoryResponse.ts +13 -0
  223. package/src/codex-protocol/v2/FsReadFileParams.ts +13 -0
  224. package/src/codex-protocol/v2/FsReadFileResponse.ts +12 -0
  225. package/src/codex-protocol/v2/FsRemoveParams.ts +21 -0
  226. package/src/codex-protocol/v2/FsRemoveResponse.ts +8 -0
  227. package/src/codex-protocol/v2/FsUnwatchParams.ts +12 -0
  228. package/src/codex-protocol/v2/FsUnwatchResponse.ts +8 -0
  229. package/src/codex-protocol/v2/FsWatchParams.ts +17 -0
  230. package/src/codex-protocol/v2/FsWatchResponse.ts +13 -0
  231. package/src/codex-protocol/v2/FsWriteFileParams.ts +17 -0
  232. package/src/codex-protocol/v2/FsWriteFileResponse.ts +8 -0
  233. package/src/codex-protocol/v2/GetAccountParams.ts +13 -0
  234. package/src/codex-protocol/v2/GetAccountRateLimitsResponse.ts +14 -0
  235. package/src/codex-protocol/v2/GetAccountResponse.ts +6 -0
  236. package/src/codex-protocol/v2/GitInfo.ts +5 -0
  237. package/src/codex-protocol/v2/GrantedPermissionProfile.ts +7 -0
  238. package/src/codex-protocol/v2/GuardianApprovalReview.ts +13 -0
  239. package/src/codex-protocol/v2/GuardianApprovalReviewAction.ts +9 -0
  240. package/src/codex-protocol/v2/GuardianApprovalReviewStatus.ts +8 -0
  241. package/src/codex-protocol/v2/GuardianCommandSource.ts +5 -0
  242. package/src/codex-protocol/v2/GuardianRiskLevel.ts +8 -0
  243. package/src/codex-protocol/v2/GuardianUserAuthorization.ts +8 -0
  244. package/src/codex-protocol/v2/GuardianWarningNotification.ts +13 -0
  245. package/src/codex-protocol/v2/HookCompletedNotification.ts +6 -0
  246. package/src/codex-protocol/v2/HookErrorInfo.ts +5 -0
  247. package/src/codex-protocol/v2/HookEventName.ts +5 -0
  248. package/src/codex-protocol/v2/HookExecutionMode.ts +5 -0
  249. package/src/codex-protocol/v2/HookHandlerType.ts +5 -0
  250. package/src/codex-protocol/v2/HookMetadata.ts +10 -0
  251. package/src/codex-protocol/v2/HookMigration.ts +5 -0
  252. package/src/codex-protocol/v2/HookOutputEntry.ts +6 -0
  253. package/src/codex-protocol/v2/HookOutputEntryKind.ts +5 -0
  254. package/src/codex-protocol/v2/HookPromptFragment.ts +5 -0
  255. package/src/codex-protocol/v2/HookRunStatus.ts +5 -0
  256. package/src/codex-protocol/v2/HookRunSummary.ts +13 -0
  257. package/src/codex-protocol/v2/HookScope.ts +5 -0
  258. package/src/codex-protocol/v2/HookSource.ts +5 -0
  259. package/src/codex-protocol/v2/HookStartedNotification.ts +6 -0
  260. package/src/codex-protocol/v2/HookTrustStatus.ts +5 -0
  261. package/src/codex-protocol/v2/HooksListEntry.ts +7 -0
  262. package/src/codex-protocol/v2/HooksListParams.ts +9 -0
  263. package/src/codex-protocol/v2/HooksListResponse.ts +6 -0
  264. package/src/codex-protocol/v2/ItemCompletedNotification.ts +10 -0
  265. package/src/codex-protocol/v2/ItemGuardianApprovalReviewCompletedNotification.ts +38 -0
  266. package/src/codex-protocol/v2/ItemGuardianApprovalReviewStartedNotification.ts +33 -0
  267. package/src/codex-protocol/v2/ItemStartedNotification.ts +10 -0
  268. package/src/codex-protocol/v2/ListMcpServerStatusParams.ts +19 -0
  269. package/src/codex-protocol/v2/ListMcpServerStatusResponse.ts +11 -0
  270. package/src/codex-protocol/v2/LoginAccountParams.ts +21 -0
  271. package/src/codex-protocol/v2/LoginAccountResponse.ts +17 -0
  272. package/src/codex-protocol/v2/LogoutAccountResponse.ts +5 -0
  273. package/src/codex-protocol/v2/ManagedHooksRequirements.ts +6 -0
  274. package/src/codex-protocol/v2/MarketplaceAddParams.ts +5 -0
  275. package/src/codex-protocol/v2/MarketplaceAddResponse.ts +6 -0
  276. package/src/codex-protocol/v2/MarketplaceInterface.ts +5 -0
  277. package/src/codex-protocol/v2/MarketplaceLoadErrorInfo.ts +6 -0
  278. package/src/codex-protocol/v2/MarketplaceRemoveParams.ts +5 -0
  279. package/src/codex-protocol/v2/MarketplaceRemoveResponse.ts +6 -0
  280. package/src/codex-protocol/v2/MarketplaceUpgradeErrorInfo.ts +5 -0
  281. package/src/codex-protocol/v2/MarketplaceUpgradeParams.ts +5 -0
  282. package/src/codex-protocol/v2/MarketplaceUpgradeResponse.ts +7 -0
  283. package/src/codex-protocol/v2/McpAuthStatus.ts +5 -0
  284. package/src/codex-protocol/v2/McpElicitationArrayType.ts +5 -0
  285. package/src/codex-protocol/v2/McpElicitationBooleanSchema.ts +6 -0
  286. package/src/codex-protocol/v2/McpElicitationBooleanType.ts +5 -0
  287. package/src/codex-protocol/v2/McpElicitationConstOption.ts +5 -0
  288. package/src/codex-protocol/v2/McpElicitationEnumSchema.ts +8 -0
  289. package/src/codex-protocol/v2/McpElicitationLegacyTitledEnumSchema.ts +6 -0
  290. package/src/codex-protocol/v2/McpElicitationMultiSelectEnumSchema.ts +7 -0
  291. package/src/codex-protocol/v2/McpElicitationNumberSchema.ts +6 -0
  292. package/src/codex-protocol/v2/McpElicitationNumberType.ts +5 -0
  293. package/src/codex-protocol/v2/McpElicitationObjectType.ts +5 -0
  294. package/src/codex-protocol/v2/McpElicitationPrimitiveSchema.ts +9 -0
  295. package/src/codex-protocol/v2/McpElicitationSchema.ts +13 -0
  296. package/src/codex-protocol/v2/McpElicitationSingleSelectEnumSchema.ts +7 -0
  297. package/src/codex-protocol/v2/McpElicitationStringFormat.ts +5 -0
  298. package/src/codex-protocol/v2/McpElicitationStringSchema.ts +7 -0
  299. package/src/codex-protocol/v2/McpElicitationStringType.ts +5 -0
  300. package/src/codex-protocol/v2/McpElicitationTitledEnumItems.ts +6 -0
  301. package/src/codex-protocol/v2/McpElicitationTitledMultiSelectEnumSchema.ts +7 -0
  302. package/src/codex-protocol/v2/McpElicitationTitledSingleSelectEnumSchema.ts +7 -0
  303. package/src/codex-protocol/v2/McpElicitationUntitledEnumItems.ts +6 -0
  304. package/src/codex-protocol/v2/McpElicitationUntitledMultiSelectEnumSchema.ts +7 -0
  305. package/src/codex-protocol/v2/McpElicitationUntitledSingleSelectEnumSchema.ts +6 -0
  306. package/src/codex-protocol/v2/McpResourceReadParams.ts +5 -0
  307. package/src/codex-protocol/v2/McpResourceReadResponse.ts +6 -0
  308. package/src/codex-protocol/v2/McpServerElicitationAction.ts +5 -0
  309. package/src/codex-protocol/v2/McpServerElicitationRequestParams.ts +16 -0
  310. package/src/codex-protocol/v2/McpServerElicitationRequestResponse.ts +17 -0
  311. package/src/codex-protocol/v2/McpServerMigration.ts +5 -0
  312. package/src/codex-protocol/v2/McpServerOauthLoginCompletedNotification.ts +5 -0
  313. package/src/codex-protocol/v2/McpServerOauthLoginParams.ts +5 -0
  314. package/src/codex-protocol/v2/McpServerOauthLoginResponse.ts +5 -0
  315. package/src/codex-protocol/v2/McpServerRefreshResponse.ts +5 -0
  316. package/src/codex-protocol/v2/McpServerStartupState.ts +5 -0
  317. package/src/codex-protocol/v2/McpServerStatus.ts +9 -0
  318. package/src/codex-protocol/v2/McpServerStatusDetail.ts +5 -0
  319. package/src/codex-protocol/v2/McpServerStatusUpdatedNotification.ts +6 -0
  320. package/src/codex-protocol/v2/McpServerToolCallParams.ts +6 -0
  321. package/src/codex-protocol/v2/McpServerToolCallResponse.ts +6 -0
  322. package/src/codex-protocol/v2/McpToolCallError.ts +5 -0
  323. package/src/codex-protocol/v2/McpToolCallProgressNotification.ts +5 -0
  324. package/src/codex-protocol/v2/McpToolCallResult.ts +6 -0
  325. package/src/codex-protocol/v2/McpToolCallStatus.ts +5 -0
  326. package/src/codex-protocol/v2/MemoryCitation.ts +6 -0
  327. package/src/codex-protocol/v2/MemoryCitationEntry.ts +5 -0
  328. package/src/codex-protocol/v2/MemoryResetResponse.ts +5 -0
  329. package/src/codex-protocol/v2/MergeStrategy.ts +5 -0
  330. package/src/codex-protocol/v2/MigrationDetails.ts +11 -0
  331. package/src/codex-protocol/v2/MockExperimentalMethodParams.ts +9 -0
  332. package/src/codex-protocol/v2/MockExperimentalMethodResponse.ts +9 -0
  333. package/src/codex-protocol/v2/Model.ts +19 -0
  334. package/src/codex-protocol/v2/ModelAvailabilityNux.ts +5 -0
  335. package/src/codex-protocol/v2/ModelListParams.ts +17 -0
  336. package/src/codex-protocol/v2/ModelListResponse.ts +11 -0
  337. package/src/codex-protocol/v2/ModelProviderCapabilitiesReadParams.ts +5 -0
  338. package/src/codex-protocol/v2/ModelProviderCapabilitiesReadResponse.ts +5 -0
  339. package/src/codex-protocol/v2/ModelRerouteReason.ts +5 -0
  340. package/src/codex-protocol/v2/ModelReroutedNotification.ts +6 -0
  341. package/src/codex-protocol/v2/ModelServiceTier.ts +5 -0
  342. package/src/codex-protocol/v2/ModelUpgradeInfo.ts +5 -0
  343. package/src/codex-protocol/v2/ModelVerification.ts +5 -0
  344. package/src/codex-protocol/v2/ModelVerificationNotification.ts +6 -0
  345. package/src/codex-protocol/v2/NetworkAccess.ts +5 -0
  346. package/src/codex-protocol/v2/NetworkApprovalContext.ts +6 -0
  347. package/src/codex-protocol/v2/NetworkApprovalProtocol.ts +5 -0
  348. package/src/codex-protocol/v2/NetworkDomainPermission.ts +5 -0
  349. package/src/codex-protocol/v2/NetworkPolicyAmendment.ts +6 -0
  350. package/src/codex-protocol/v2/NetworkPolicyRuleAction.ts +5 -0
  351. package/src/codex-protocol/v2/NetworkRequirements.ts +32 -0
  352. package/src/codex-protocol/v2/NetworkUnixSocketPermission.ts +5 -0
  353. package/src/codex-protocol/v2/NonSteerableTurnKind.ts +5 -0
  354. package/src/codex-protocol/v2/OverriddenMetadata.ts +7 -0
  355. package/src/codex-protocol/v2/PatchApplyStatus.ts +5 -0
  356. package/src/codex-protocol/v2/PatchChangeKind.ts +5 -0
  357. package/src/codex-protocol/v2/PermissionGrantScope.ts +5 -0
  358. package/src/codex-protocol/v2/PermissionProfileListParams.ts +17 -0
  359. package/src/codex-protocol/v2/PermissionProfileListResponse.ts +11 -0
  360. package/src/codex-protocol/v2/PermissionProfileSummary.ts +13 -0
  361. package/src/codex-protocol/v2/PermissionsRequestApprovalParams.ts +11 -0
  362. package/src/codex-protocol/v2/PermissionsRequestApprovalResponse.ts +11 -0
  363. package/src/codex-protocol/v2/PlanDeltaNotification.ts +9 -0
  364. package/src/codex-protocol/v2/PluginAuthPolicy.ts +5 -0
  365. package/src/codex-protocol/v2/PluginAvailability.ts +5 -0
  366. package/src/codex-protocol/v2/PluginDetail.ts +10 -0
  367. package/src/codex-protocol/v2/PluginHookSummary.ts +6 -0
  368. package/src/codex-protocol/v2/PluginInstallParams.ts +6 -0
  369. package/src/codex-protocol/v2/PluginInstallPolicy.ts +5 -0
  370. package/src/codex-protocol/v2/PluginInstallResponse.ts +7 -0
  371. package/src/codex-protocol/v2/PluginInstalledParams.ts +15 -0
  372. package/src/codex-protocol/v2/PluginInstalledResponse.ts +7 -0
  373. package/src/codex-protocol/v2/PluginInterface.ts +35 -0
  374. package/src/codex-protocol/v2/PluginListMarketplaceKind.ts +5 -0
  375. package/src/codex-protocol/v2/PluginListParams.ts +17 -0
  376. package/src/codex-protocol/v2/PluginListResponse.ts +7 -0
  377. package/src/codex-protocol/v2/PluginMarketplaceEntry.ts +13 -0
  378. package/src/codex-protocol/v2/PluginReadParams.ts +6 -0
  379. package/src/codex-protocol/v2/PluginReadResponse.ts +6 -0
  380. package/src/codex-protocol/v2/PluginShareCheckoutParams.ts +5 -0
  381. package/src/codex-protocol/v2/PluginShareCheckoutResponse.ts +6 -0
  382. package/src/codex-protocol/v2/PluginShareContext.ts +11 -0
  383. package/src/codex-protocol/v2/PluginShareDeleteParams.ts +5 -0
  384. package/src/codex-protocol/v2/PluginShareDeleteResponse.ts +5 -0
  385. package/src/codex-protocol/v2/PluginShareDiscoverability.ts +5 -0
  386. package/src/codex-protocol/v2/PluginShareListItem.ts +7 -0
  387. package/src/codex-protocol/v2/PluginShareListParams.ts +5 -0
  388. package/src/codex-protocol/v2/PluginShareListResponse.ts +6 -0
  389. package/src/codex-protocol/v2/PluginSharePrincipal.ts +7 -0
  390. package/src/codex-protocol/v2/PluginSharePrincipalRole.ts +5 -0
  391. package/src/codex-protocol/v2/PluginSharePrincipalType.ts +5 -0
  392. package/src/codex-protocol/v2/PluginShareSaveParams.ts +8 -0
  393. package/src/codex-protocol/v2/PluginShareSaveResponse.ts +5 -0
  394. package/src/codex-protocol/v2/PluginShareTarget.ts +7 -0
  395. package/src/codex-protocol/v2/PluginShareTargetRole.ts +5 -0
  396. package/src/codex-protocol/v2/PluginShareUpdateDiscoverability.ts +5 -0
  397. package/src/codex-protocol/v2/PluginShareUpdateTargetsParams.ts +7 -0
  398. package/src/codex-protocol/v2/PluginShareUpdateTargetsResponse.ts +7 -0
  399. package/src/codex-protocol/v2/PluginSkillReadParams.ts +5 -0
  400. package/src/codex-protocol/v2/PluginSkillReadResponse.ts +5 -0
  401. package/src/codex-protocol/v2/PluginSource.ts +6 -0
  402. package/src/codex-protocol/v2/PluginSummary.ts +27 -0
  403. package/src/codex-protocol/v2/PluginUninstallParams.ts +5 -0
  404. package/src/codex-protocol/v2/PluginUninstallResponse.ts +5 -0
  405. package/src/codex-protocol/v2/PluginsMigration.ts +5 -0
  406. package/src/codex-protocol/v2/ProcessExitedNotification.ts +42 -0
  407. package/src/codex-protocol/v2/ProcessKillParams.ts +12 -0
  408. package/src/codex-protocol/v2/ProcessKillResponse.ts +8 -0
  409. package/src/codex-protocol/v2/ProcessOutputDeltaNotification.ts +26 -0
  410. package/src/codex-protocol/v2/ProcessOutputStream.ts +8 -0
  411. package/src/codex-protocol/v2/ProcessResizePtyParams.ts +17 -0
  412. package/src/codex-protocol/v2/ProcessResizePtyResponse.ts +8 -0
  413. package/src/codex-protocol/v2/ProcessSpawnParams.ts +73 -0
  414. package/src/codex-protocol/v2/ProcessSpawnResponse.ts +8 -0
  415. package/src/codex-protocol/v2/ProcessTerminalSize.ts +16 -0
  416. package/src/codex-protocol/v2/ProcessWriteStdinParams.ts +21 -0
  417. package/src/codex-protocol/v2/ProcessWriteStdinResponse.ts +8 -0
  418. package/src/codex-protocol/v2/ProfileV2.ts +19 -0
  419. package/src/codex-protocol/v2/RateLimitReachedType.ts +5 -0
  420. package/src/codex-protocol/v2/RateLimitSnapshot.ts +9 -0
  421. package/src/codex-protocol/v2/RateLimitWindow.ts +5 -0
  422. package/src/codex-protocol/v2/RawResponseItemCompletedNotification.ts +6 -0
  423. package/src/codex-protocol/v2/ReasoningEffortOption.ts +6 -0
  424. package/src/codex-protocol/v2/ReasoningSummaryPartAddedNotification.ts +5 -0
  425. package/src/codex-protocol/v2/ReasoningSummaryTextDeltaNotification.ts +5 -0
  426. package/src/codex-protocol/v2/ReasoningTextDeltaNotification.ts +5 -0
  427. package/src/codex-protocol/v2/RemoteControlConnectionStatus.ts +5 -0
  428. package/src/codex-protocol/v2/RemoteControlDisableResponse.ts +6 -0
  429. package/src/codex-protocol/v2/RemoteControlEnableResponse.ts +6 -0
  430. package/src/codex-protocol/v2/RemoteControlStatusChangedNotification.ts +9 -0
  431. package/src/codex-protocol/v2/RemoteControlStatusReadResponse.ts +6 -0
  432. package/src/codex-protocol/v2/RequestPermissionProfile.ts +7 -0
  433. package/src/codex-protocol/v2/ResidencyRequirement.ts +5 -0
  434. package/src/codex-protocol/v2/ReviewDelivery.ts +5 -0
  435. package/src/codex-protocol/v2/ReviewStartParams.ts +12 -0
  436. package/src/codex-protocol/v2/ReviewStartResponse.ts +13 -0
  437. package/src/codex-protocol/v2/ReviewTarget.ts +9 -0
  438. package/src/codex-protocol/v2/SandboxMode.ts +5 -0
  439. package/src/codex-protocol/v2/SandboxPolicy.ts +7 -0
  440. package/src/codex-protocol/v2/SandboxWorkspaceWrite.ts +5 -0
  441. package/src/codex-protocol/v2/SendAddCreditsNudgeEmailParams.ts +6 -0
  442. package/src/codex-protocol/v2/SendAddCreditsNudgeEmailResponse.ts +6 -0
  443. package/src/codex-protocol/v2/ServerRequestResolvedNotification.ts +6 -0
  444. package/src/codex-protocol/v2/SessionMigration.ts +5 -0
  445. package/src/codex-protocol/v2/SessionSource.ts +6 -0
  446. package/src/codex-protocol/v2/SkillDependencies.ts +6 -0
  447. package/src/codex-protocol/v2/SkillErrorInfo.ts +5 -0
  448. package/src/codex-protocol/v2/SkillInterface.ts +6 -0
  449. package/src/codex-protocol/v2/SkillMetadata.ts +13 -0
  450. package/src/codex-protocol/v2/SkillScope.ts +5 -0
  451. package/src/codex-protocol/v2/SkillSummary.ts +7 -0
  452. package/src/codex-protocol/v2/SkillToolDependency.ts +5 -0
  453. package/src/codex-protocol/v2/SkillsChangedNotification.ts +11 -0
  454. package/src/codex-protocol/v2/SkillsConfigWriteParams.ts +14 -0
  455. package/src/codex-protocol/v2/SkillsConfigWriteResponse.ts +5 -0
  456. package/src/codex-protocol/v2/SkillsListEntry.ts +7 -0
  457. package/src/codex-protocol/v2/SkillsListParams.ts +13 -0
  458. package/src/codex-protocol/v2/SkillsListResponse.ts +6 -0
  459. package/src/codex-protocol/v2/SortDirection.ts +5 -0
  460. package/src/codex-protocol/v2/SubagentMigration.ts +5 -0
  461. package/src/codex-protocol/v2/TerminalInteractionNotification.ts +5 -0
  462. package/src/codex-protocol/v2/TextElement.ts +14 -0
  463. package/src/codex-protocol/v2/TextPosition.ts +13 -0
  464. package/src/codex-protocol/v2/TextRange.ts +6 -0
  465. package/src/codex-protocol/v2/Thread.ts +86 -0
  466. package/src/codex-protocol/v2/ThreadActiveFlag.ts +5 -0
  467. package/src/codex-protocol/v2/ThreadApproveGuardianDeniedActionParams.ts +10 -0
  468. package/src/codex-protocol/v2/ThreadApproveGuardianDeniedActionResponse.ts +5 -0
  469. package/src/codex-protocol/v2/ThreadArchiveParams.ts +5 -0
  470. package/src/codex-protocol/v2/ThreadArchiveResponse.ts +5 -0
  471. package/src/codex-protocol/v2/ThreadArchivedNotification.ts +5 -0
  472. package/src/codex-protocol/v2/ThreadBackgroundTerminalsCleanParams.ts +5 -0
  473. package/src/codex-protocol/v2/ThreadBackgroundTerminalsCleanResponse.ts +5 -0
  474. package/src/codex-protocol/v2/ThreadClosedNotification.ts +5 -0
  475. package/src/codex-protocol/v2/ThreadCompactStartParams.ts +5 -0
  476. package/src/codex-protocol/v2/ThreadCompactStartResponse.ts +5 -0
  477. package/src/codex-protocol/v2/ThreadDecrementElicitationParams.ts +12 -0
  478. package/src/codex-protocol/v2/ThreadDecrementElicitationResponse.ts +16 -0
  479. package/src/codex-protocol/v2/ThreadForkParams.ts +60 -0
  480. package/src/codex-protocol/v2/ThreadForkResponse.ts +35 -0
  481. package/src/codex-protocol/v2/ThreadGoal.ts +6 -0
  482. package/src/codex-protocol/v2/ThreadGoalClearParams.ts +5 -0
  483. package/src/codex-protocol/v2/ThreadGoalClearResponse.ts +5 -0
  484. package/src/codex-protocol/v2/ThreadGoalClearedNotification.ts +5 -0
  485. package/src/codex-protocol/v2/ThreadGoalGetParams.ts +5 -0
  486. package/src/codex-protocol/v2/ThreadGoalGetResponse.ts +6 -0
  487. package/src/codex-protocol/v2/ThreadGoalSetParams.ts +6 -0
  488. package/src/codex-protocol/v2/ThreadGoalSetResponse.ts +6 -0
  489. package/src/codex-protocol/v2/ThreadGoalStatus.ts +5 -0
  490. package/src/codex-protocol/v2/ThreadGoalUpdatedNotification.ts +6 -0
  491. package/src/codex-protocol/v2/ThreadIncrementElicitationParams.ts +12 -0
  492. package/src/codex-protocol/v2/ThreadIncrementElicitationResponse.ts +16 -0
  493. package/src/codex-protocol/v2/ThreadInjectItemsParams.ts +10 -0
  494. package/src/codex-protocol/v2/ThreadInjectItemsResponse.ts +5 -0
  495. package/src/codex-protocol/v2/ThreadItem.ts +101 -0
  496. package/src/codex-protocol/v2/ThreadListParams.ts +54 -0
  497. package/src/codex-protocol/v2/ThreadListResponse.ts +18 -0
  498. package/src/codex-protocol/v2/ThreadLoadedListParams.ts +13 -0
  499. package/src/codex-protocol/v2/ThreadLoadedListResponse.ts +14 -0
  500. package/src/codex-protocol/v2/ThreadMemoryModeSetParams.ts +6 -0
  501. package/src/codex-protocol/v2/ThreadMemoryModeSetResponse.ts +5 -0
  502. package/src/codex-protocol/v2/ThreadMetadataGitInfoUpdateParams.ts +20 -0
  503. package/src/codex-protocol/v2/ThreadMetadataUpdateParams.ts +12 -0
  504. package/src/codex-protocol/v2/ThreadMetadataUpdateResponse.ts +6 -0
  505. package/src/codex-protocol/v2/ThreadNameUpdatedNotification.ts +5 -0
  506. package/src/codex-protocol/v2/ThreadReadParams.ts +9 -0
  507. package/src/codex-protocol/v2/ThreadReadResponse.ts +6 -0
  508. package/src/codex-protocol/v2/ThreadRealtimeAppendAudioParams.ts +9 -0
  509. package/src/codex-protocol/v2/ThreadRealtimeAppendAudioResponse.ts +8 -0
  510. package/src/codex-protocol/v2/ThreadRealtimeAppendTextParams.ts +8 -0
  511. package/src/codex-protocol/v2/ThreadRealtimeAppendTextResponse.ts +8 -0
  512. package/src/codex-protocol/v2/ThreadRealtimeAudioChunk.ts +8 -0
  513. package/src/codex-protocol/v2/ThreadRealtimeClosedNotification.ts +8 -0
  514. package/src/codex-protocol/v2/ThreadRealtimeErrorNotification.ts +8 -0
  515. package/src/codex-protocol/v2/ThreadRealtimeItemAddedNotification.ts +9 -0
  516. package/src/codex-protocol/v2/ThreadRealtimeListVoicesParams.ts +8 -0
  517. package/src/codex-protocol/v2/ThreadRealtimeListVoicesResponse.ts +9 -0
  518. package/src/codex-protocol/v2/ThreadRealtimeOutputAudioDeltaNotification.ts +9 -0
  519. package/src/codex-protocol/v2/ThreadRealtimeSdpNotification.ts +8 -0
  520. package/src/codex-protocol/v2/ThreadRealtimeStartParams.ts +16 -0
  521. package/src/codex-protocol/v2/ThreadRealtimeStartResponse.ts +8 -0
  522. package/src/codex-protocol/v2/ThreadRealtimeStartTransport.ts +13 -0
  523. package/src/codex-protocol/v2/ThreadRealtimeStartedNotification.ts +9 -0
  524. package/src/codex-protocol/v2/ThreadRealtimeStopParams.ts +8 -0
  525. package/src/codex-protocol/v2/ThreadRealtimeStopResponse.ts +8 -0
  526. package/src/codex-protocol/v2/ThreadRealtimeTranscriptDeltaNotification.ts +13 -0
  527. package/src/codex-protocol/v2/ThreadRealtimeTranscriptDoneNotification.ts +13 -0
  528. package/src/codex-protocol/v2/ThreadResumeParams.ts +71 -0
  529. package/src/codex-protocol/v2/ThreadResumeResponse.ts +35 -0
  530. package/src/codex-protocol/v2/ThreadRollbackParams.ts +12 -0
  531. package/src/codex-protocol/v2/ThreadRollbackResponse.ts +14 -0
  532. package/src/codex-protocol/v2/ThreadSetNameParams.ts +5 -0
  533. package/src/codex-protocol/v2/ThreadSetNameResponse.ts +5 -0
  534. package/src/codex-protocol/v2/ThreadSettings.ts +14 -0
  535. package/src/codex-protocol/v2/ThreadSettingsUpdateParams.ts +61 -0
  536. package/src/codex-protocol/v2/ThreadSettingsUpdateResponse.ts +5 -0
  537. package/src/codex-protocol/v2/ThreadSettingsUpdatedNotification.ts +6 -0
  538. package/src/codex-protocol/v2/ThreadShellCommandParams.ts +12 -0
  539. package/src/codex-protocol/v2/ThreadShellCommandResponse.ts +5 -0
  540. package/src/codex-protocol/v2/ThreadSortKey.ts +5 -0
  541. package/src/codex-protocol/v2/ThreadSource.ts +5 -0
  542. package/src/codex-protocol/v2/ThreadSourceKind.ts +5 -0
  543. package/src/codex-protocol/v2/ThreadStartParams.ts +57 -0
  544. package/src/codex-protocol/v2/ThreadStartResponse.ts +35 -0
  545. package/src/codex-protocol/v2/ThreadStartSource.ts +5 -0
  546. package/src/codex-protocol/v2/ThreadStartedNotification.ts +6 -0
  547. package/src/codex-protocol/v2/ThreadStatus.ts +6 -0
  548. package/src/codex-protocol/v2/ThreadStatusChangedNotification.ts +6 -0
  549. package/src/codex-protocol/v2/ThreadTokenUsage.ts +6 -0
  550. package/src/codex-protocol/v2/ThreadTokenUsageUpdatedNotification.ts +6 -0
  551. package/src/codex-protocol/v2/ThreadTurnsItemsListParams.ts +18 -0
  552. package/src/codex-protocol/v2/ThreadTurnsItemsListResponse.ts +16 -0
  553. package/src/codex-protocol/v2/ThreadTurnsListParams.ts +23 -0
  554. package/src/codex-protocol/v2/ThreadTurnsListResponse.ts +18 -0
  555. package/src/codex-protocol/v2/ThreadUnarchiveParams.ts +5 -0
  556. package/src/codex-protocol/v2/ThreadUnarchiveResponse.ts +6 -0
  557. package/src/codex-protocol/v2/ThreadUnarchivedNotification.ts +5 -0
  558. package/src/codex-protocol/v2/ThreadUnsubscribeParams.ts +5 -0
  559. package/src/codex-protocol/v2/ThreadUnsubscribeResponse.ts +6 -0
  560. package/src/codex-protocol/v2/ThreadUnsubscribeStatus.ts +5 -0
  561. package/src/codex-protocol/v2/TokenUsageBreakdown.ts +5 -0
  562. package/src/codex-protocol/v2/ToolRequestUserInputAnswer.ts +8 -0
  563. package/src/codex-protocol/v2/ToolRequestUserInputOption.ts +8 -0
  564. package/src/codex-protocol/v2/ToolRequestUserInputParams.ts +9 -0
  565. package/src/codex-protocol/v2/ToolRequestUserInputQuestion.ts +9 -0
  566. package/src/codex-protocol/v2/ToolRequestUserInputResponse.ts +9 -0
  567. package/src/codex-protocol/v2/ToolsV2.ts +6 -0
  568. package/src/codex-protocol/v2/Turn.ts +33 -0
  569. package/src/codex-protocol/v2/TurnCompletedNotification.ts +6 -0
  570. package/src/codex-protocol/v2/TurnDiffUpdatedNotification.ts +9 -0
  571. package/src/codex-protocol/v2/TurnEnvironmentParams.ts +6 -0
  572. package/src/codex-protocol/v2/TurnError.ts +6 -0
  573. package/src/codex-protocol/v2/TurnInterruptParams.ts +5 -0
  574. package/src/codex-protocol/v2/TurnInterruptResponse.ts +5 -0
  575. package/src/codex-protocol/v2/TurnItemsView.ts +5 -0
  576. package/src/codex-protocol/v2/TurnPlanStep.ts +6 -0
  577. package/src/codex-protocol/v2/TurnPlanStepStatus.ts +5 -0
  578. package/src/codex-protocol/v2/TurnPlanUpdatedNotification.ts +6 -0
  579. package/src/codex-protocol/v2/TurnStartParams.ts +88 -0
  580. package/src/codex-protocol/v2/TurnStartResponse.ts +6 -0
  581. package/src/codex-protocol/v2/TurnStartedNotification.ts +6 -0
  582. package/src/codex-protocol/v2/TurnStatus.ts +5 -0
  583. package/src/codex-protocol/v2/TurnSteerParams.ts +15 -0
  584. package/src/codex-protocol/v2/TurnSteerResponse.ts +5 -0
  585. package/src/codex-protocol/v2/UserInput.ts +11 -0
  586. package/src/codex-protocol/v2/WarningNotification.ts +13 -0
  587. package/src/codex-protocol/v2/WebSearchAction.ts +5 -0
  588. package/src/codex-protocol/v2/WindowsSandboxReadiness.ts +5 -0
  589. package/src/codex-protocol/v2/WindowsSandboxReadinessResponse.ts +6 -0
  590. package/src/codex-protocol/v2/WindowsSandboxSetupCompletedNotification.ts +6 -0
  591. package/src/codex-protocol/v2/WindowsSandboxSetupMode.ts +5 -0
  592. package/src/codex-protocol/v2/WindowsSandboxSetupStartParams.ts +7 -0
  593. package/src/codex-protocol/v2/WindowsSandboxSetupStartResponse.ts +5 -0
  594. package/src/codex-protocol/v2/WindowsWorldWritableWarningNotification.ts +5 -0
  595. package/src/codex-protocol/v2/WriteStatus.ts +5 -0
  596. package/src/codex-protocol/v2/index.ts +503 -0
  597. package/src/column.ts +44 -0
  598. package/src/engines/claude/claude-engine.ts +769 -0
  599. package/src/engines/claude/clock.ts +48 -0
  600. package/src/engines/claude/compact.ts +107 -0
  601. package/src/engines/claude/ctx.ts +239 -0
  602. package/src/engines/claude/doctor.ts +202 -0
  603. package/src/engines/claude/env.ts +16 -0
  604. package/src/engines/claude/history.ts +504 -0
  605. package/src/engines/claude/identifiers.ts +25 -0
  606. package/src/engines/claude/identity-migration.ts +16 -0
  607. package/src/engines/claude/idle.ts +91 -0
  608. package/src/engines/claude/keys.ts +163 -0
  609. package/src/engines/claude/last.ts +52 -0
  610. package/src/engines/claude/mem.ts +124 -0
  611. package/src/engines/claude/persistence.ts +41 -0
  612. package/src/engines/claude/post-turn.ts +45 -0
  613. package/src/engines/claude/reload.ts +53 -0
  614. package/src/engines/claude/repo-fs.ts +63 -0
  615. package/src/engines/claude/resume.ts +145 -0
  616. package/src/engines/claude/send.ts +86 -0
  617. package/src/engines/claude/spawn.ts +435 -0
  618. package/src/engines/claude/state.ts +124 -0
  619. package/src/engines/claude/tmux.ts +99 -0
  620. package/src/engines/claude/wait-signals.ts +128 -0
  621. package/src/engines/claude/wait.ts +59 -0
  622. package/src/engines/codex/ask.ts +69 -0
  623. package/src/engines/codex/engine.ts +1261 -0
  624. package/src/engines/codex/events.ts +106 -0
  625. package/src/engines/codex/history.ts +385 -0
  626. package/src/engines/codex/identity-migration.ts +14 -0
  627. package/src/engines/codex/ipc-bridge-process.ts +14 -0
  628. package/src/engines/codex/ipc-bridge.ts +844 -0
  629. package/src/engines/codex/persistence.ts +236 -0
  630. package/src/engines/codex/rollout.ts +384 -0
  631. package/src/engines/codex/rpc.ts +311 -0
  632. package/src/engines/codex/supervisor.ts +648 -0
  633. package/src/engines/codex/ui-ipc.ts +374 -0
  634. package/src/engines/codex/verb-common.ts +34 -0
  635. package/src/engines/codex/verb-lifecycle.ts +94 -0
  636. package/src/engines/codex/verb-state.ts +19 -0
  637. package/src/engines/codex/verb-turns.ts +49 -0
  638. package/src/engines/codex/verbs.ts +15 -0
  639. package/src/engines/engine.ts +91 -0
  640. package/src/engines/git-worktree.ts +137 -0
  641. package/src/engines/production.ts +19 -0
  642. package/src/engines/registry.ts +70 -0
  643. package/src/engines/teammate-record.ts +113 -0
  644. package/src/engines/types.ts +334 -0
  645. package/src/env.ts +29 -0
  646. package/src/grep.ts +39 -0
  647. package/src/help.ts +433 -0
  648. package/src/identity/name.ts +58 -0
  649. package/src/identity/router.ts +80 -0
  650. package/src/identity/uuid-prefix.ts +40 -0
  651. package/src/main.ts +39 -0
  652. package/src/persistence/atomic-file.ts +74 -0
  653. package/src/persistence/identity-store.ts +294 -0
  654. package/src/persistence/identity-writer.ts +28 -0
  655. package/src/persistence/paths.ts +138 -0
  656. package/src/plugin-root.ts +26 -0
  657. package/src/proc.ts +66 -0
  658. package/src/shared/verb-args.ts +331 -0
  659. package/src/tm.ts +54 -0
  660. package/src/tmux.ts +57 -0
  661. package/src/verbs/archive.ts +211 -0
  662. package/src/verbs/ask.ts +29 -0
  663. package/src/verbs/compact.ts +25 -0
  664. package/src/verbs/context.ts +68 -0
  665. package/src/verbs/ctx.ts +21 -0
  666. package/src/verbs/format.ts +213 -0
  667. package/src/verbs/history.ts +190 -0
  668. package/src/verbs/kill.ts +61 -0
  669. package/src/verbs/last.ts +34 -0
  670. package/src/verbs/ls.ts +27 -0
  671. package/src/verbs/mem.ts +40 -0
  672. package/src/verbs/poll.ts +61 -0
  673. package/src/verbs/reload.ts +17 -0
  674. package/src/verbs/resolve.ts +14 -0
  675. package/src/verbs/resume.ts +170 -0
  676. package/src/verbs/send.ts +36 -0
  677. package/src/verbs/spawn.ts +81 -0
  678. package/src/verbs/states.ts +74 -0
  679. package/src/verbs/status.ts +26 -0
  680. package/src/verbs/wait.ts +40 -0
  681. package/src/verbs.ts +56 -0
  682. package/src/ws-types.d.ts +9 -0
  683. package/third_party/ws/LICENSE +20 -0
  684. package/third_party/ws/README.md +548 -0
  685. package/third_party/ws/UPSTREAM.md +55 -0
  686. package/third_party/ws/browser.js +8 -0
  687. package/third_party/ws/index.js +22 -0
  688. package/third_party/ws/lib/buffer-util.js +131 -0
  689. package/third_party/ws/lib/constants.js +19 -0
  690. package/third_party/ws/lib/event-target.js +292 -0
  691. package/third_party/ws/lib/extension.js +203 -0
  692. package/third_party/ws/lib/limiter.js +55 -0
  693. package/third_party/ws/lib/permessage-deflate.js +528 -0
  694. package/third_party/ws/lib/receiver.js +760 -0
  695. package/third_party/ws/lib/sender.js +607 -0
  696. package/third_party/ws/lib/stream.js +161 -0
  697. package/third_party/ws/lib/subprotocol.js +62 -0
  698. package/third_party/ws/lib/validation.js +152 -0
  699. package/third_party/ws/lib/websocket-server.js +562 -0
  700. package/third_party/ws/lib/websocket.js +1407 -0
  701. package/third_party/ws/package.json +13 -0
  702. package/third_party/ws/wrapper.mjs +21 -0
@@ -0,0 +1,190 @@
1
+ /**
2
+ * `tm history <name> [index]` — turn-by-turn history. Decision multi-engine-tui-architecture
3
+ * §"`history` and `mem` stay" keeps the verb alive on both engines.
4
+ * The Claude engine reads `~/.claude/projects/<encoded>/*.jsonl`;
5
+ * the Codex engine reads rollout JSONL files from `~/.codex/sessions`.
6
+ * List mode merges both engines by mtime; detail mode accepts either a
7
+ * Claude sid prefix or a Codex thread-id prefix.
8
+ */
9
+
10
+ import { formatHistory } from './format'
11
+ import type { Engine } from '../engines/engine'
12
+ import type {
13
+ EngineKind,
14
+ HistoryListEntry,
15
+ HistoryRequest,
16
+ HistoryResult,
17
+ TeammateName,
18
+ } from '../engines/types'
19
+ import type { TmResult } from '../tm'
20
+ import type { VerbContext } from './context'
21
+ import { resolveTargetEngine } from './resolve'
22
+ import { hasCodexHistoryForCwd } from '../engines/codex/history'
23
+ import { fmtAge } from '../engines/claude/clock'
24
+
25
+ export interface HistoryArgs {
26
+ readonly name: TeammateName
27
+ readonly cwd: string | null
28
+ /** `null` = list view; non-null = engine-specific detail selector. */
29
+ readonly index: string | null
30
+ }
31
+
32
+ interface HistoryTarget {
33
+ readonly engine: Engine
34
+ readonly resolved: boolean
35
+ readonly codexFromHistory: boolean
36
+ }
37
+
38
+ async function resolveHistoryTarget(args: HistoryArgs, ctx: VerbContext): Promise<HistoryTarget | TmResult> {
39
+ const resolved = await ctx.router.resolve(args.name)
40
+ const codexFromHistory =
41
+ resolved === null &&
42
+ args.cwd !== null &&
43
+ ctx.engines.get('codex') !== undefined &&
44
+ hasCodexHistoryForCwd(args.cwd, ctx.engineContext.env)
45
+ const engine = codexFromHistory
46
+ ? ctx.engines.get('codex')!
47
+ : resolved?.engine ?? await resolveTargetEngine(args.name, ctx)
48
+ if ('code' in engine) return engine
49
+ return { engine, resolved: resolved !== null, codexFromHistory }
50
+ }
51
+
52
+ function historyCandidateEngines(target: HistoryTarget, ctx: VerbContext): readonly Engine[] {
53
+ const engines: Engine[] = []
54
+ const add = (engine: Engine | undefined): void => {
55
+ if (engine === undefined) return
56
+ if (!engines.some((candidate) => candidate.kind === engine.kind)) engines.push(engine)
57
+ }
58
+
59
+ if (target.engine.kind === 'codex' && !target.codexFromHistory && !target.resolved) {
60
+ add(target.engine)
61
+ return engines
62
+ }
63
+
64
+ add(ctx.engines.get('claude'))
65
+ add(ctx.engines.get('codex'))
66
+ add(target.engine)
67
+ return engines
68
+ }
69
+
70
+ /**
71
+ * Detail-mode prefix → engine, when the UUID version digit is reachable
72
+ * inside the prefix. Claude sids are random UUIDv4 (`xxxxxxxx-xxxx-4xxx-...`);
73
+ * Codex thread ids are UUIDv7 (`xxxxxxxx-xxxx-7xxx-...`). Stripping `-` and
74
+ * inspecting the 13th hex char (index 12) gives the version regardless of
75
+ * whether the caller pasted the canonical dashed form or a raw hex run.
76
+ * Returns `null` when the prefix is too short to reach the version digit,
77
+ * or when the version digit is neither `4` nor `7` — both cases fall back
78
+ * to the existing dual-engine probe rather than silently misroute.
79
+ */
80
+ function detailEngineFromPrefix(prefix: string): EngineKind | null {
81
+ const stripped = prefix.replace(/-/g, '')
82
+ if (stripped.length < 13) return null
83
+ const versionChar = stripped[12]
84
+ if (versionChar === '4') return 'claude'
85
+ if (versionChar === '7') return 'codex'
86
+ return null
87
+ }
88
+
89
+ function fmtSize(bytes: number): string {
90
+ if (bytes < 1024) return `${bytes}B`
91
+ if (bytes < 1048576) return `${Math.trunc(bytes / 1024)}K`
92
+ if (bytes < 1073741824) return `${toFixed1HalfEven(bytes / 1048576)}M`
93
+ return `${toFixed1HalfEven(bytes / 1073741824)}G`
94
+ }
95
+
96
+ function toFixed1HalfEven(value: number): string {
97
+ const tenths = value * 10
98
+ const floor = Math.floor(tenths)
99
+ const frac = tenths - floor
100
+ let rounded: number
101
+ if (frac < 0.5) rounded = floor
102
+ else if (frac > 0.5) rounded = floor + 1
103
+ else rounded = floor % 2 === 0 ? floor : floor + 1
104
+ return (rounded / 10).toFixed(1)
105
+ }
106
+
107
+ function sortedHistoryEntries(entries: readonly HistoryListEntry[]): readonly HistoryListEntry[] {
108
+ return [...entries].sort((a, b) =>
109
+ b.mtimeMs - a.mtimeMs ||
110
+ (a.engine < b.engine ? -1 : a.engine > b.engine ? 1 : 0) ||
111
+ (a.id < b.id ? -1 : a.id > b.id ? 1 : 0),
112
+ )
113
+ }
114
+
115
+ async function formatHistoryEntries(
116
+ entries: readonly HistoryListEntry[],
117
+ ctx: VerbContext,
118
+ ): Promise<TmResult> {
119
+ const nowMs = ctx.engineContext.now()
120
+ const rows: string[][] = [[' ', 'ENGINE', 'ID', 'AGE', 'SIZE', 'TOPIC']]
121
+ // Full id, not an 8-char prefix: `tm resume` requires the canonical UUID
122
+ // and silently rejects a prefix with a misleading "wrong repo" error.
123
+ // Listing the full id keeps history → resume copy-paste lossless.
124
+ for (const entry of sortedHistoryEntries(entries)) {
125
+ rows.push([
126
+ entry.active ? '*' : ' ',
127
+ entry.engine,
128
+ entry.id,
129
+ fmtAge(Math.max(0, Math.floor((nowMs - entry.mtimeMs) / 1000))),
130
+ fmtSize(entry.size),
131
+ entry.topic,
132
+ ])
133
+ }
134
+ return ctx.runColumn(`${rows.map((row) => row.join('\t')).join('\n')}\n`)
135
+ }
136
+
137
+ function raw(result: HistoryResult): TmResult {
138
+ return formatHistory(result)
139
+ }
140
+
141
+ export async function historyVerb(args: HistoryArgs, ctx: VerbContext): Promise<TmResult> {
142
+ const target = await resolveHistoryTarget(args, ctx)
143
+ if ('code' in target) return target
144
+ const req: HistoryRequest = { name: args.name, cwd: args.cwd, index: args.index }
145
+
146
+ if (args.index !== null) {
147
+ // UUID-version short-circuit: when the prefix is long enough to expose
148
+ // the version digit (claude=v4, codex=v7), route to that one engine and
149
+ // skip the cross-engine probe. The other engine cannot hold a session
150
+ // whose id begins with the wrong version digit, so probing it would only
151
+ // walk a rollout tree that is guaranteed to miss.
152
+ const shortCircuit = detailEngineFromPrefix(args.index)
153
+ const shortCircuitEngine = shortCircuit !== null ? ctx.engines.get(shortCircuit) : undefined
154
+ if (shortCircuitEngine !== undefined) {
155
+ return raw(await shortCircuitEngine.history(req, ctx.engineContext))
156
+ }
157
+
158
+ const engines = historyCandidateEngines(target, ctx)
159
+ const results = await Promise.all(
160
+ engines.map(async (engine) => ({ engine, result: await engine.history(req, ctx.engineContext) })),
161
+ )
162
+ const successes = results
163
+ .map(({ result }) => raw(result))
164
+ .filter((result) => result.code === 0)
165
+ if (successes.length === 1) return successes[0]!
166
+ if (successes.length > 1) {
167
+ return {
168
+ code: 1,
169
+ stdout: '',
170
+ stderr: `tm: history: prefix '${args.index}' matches entries in multiple engines - be more specific\n`,
171
+ }
172
+ }
173
+ const targetResult = results.find(({ engine }) => engine.kind === target.engine.kind)?.result ??
174
+ await target.engine.history(req, ctx.engineContext)
175
+ return raw(targetResult)
176
+ }
177
+
178
+ const engines = historyCandidateEngines(target, ctx)
179
+ const results = await Promise.all(
180
+ engines.map(async (engine) => ({ engine, result: await engine.history(req, ctx.engineContext) })),
181
+ )
182
+ const entries = results.flatMap(({ result }) =>
183
+ result.kind === 'list' && result.entries !== undefined ? [...result.entries] : [],
184
+ )
185
+ if (entries.length > 0) return formatHistoryEntries(entries, ctx)
186
+
187
+ const targetResult = results.find(({ engine }) => engine.kind === target.engine.kind)?.result ??
188
+ await target.engine.history(req, ctx.engineContext)
189
+ return raw(targetResult)
190
+ }
@@ -0,0 +1,61 @@
1
+ /**
2
+ * `tm kill <name>` — release the teammate. Decision multi-engine-tui-architecture amend lines
3
+ * 163-169 fix the default impl: resolve through the router, ask the
4
+ * engine to kill, remove the identity JSON on success. The "remove
5
+ * identity" step is what frees the name for a subsequent `tm spawn`.
6
+ *
7
+ * The engine's `kill` is the single place that decides what "stop the
8
+ * teammate" means for that engine (tmux session kill / Codex daemon
9
+ * SIGTERM / etc); the verb owns identity bookkeeping and exit code.
10
+ */
11
+
12
+ import { existsSync } from 'node:fs'
13
+
14
+ import { formatKill } from './format'
15
+ import { identityFile } from '../persistence/identity-store'
16
+ import type { TeammateName } from '../engines/types'
17
+ import type { TmResult } from '../tm'
18
+ import type { VerbContext } from './context'
19
+
20
+ /**
21
+ * `tm kill` is idempotent: a missing teammate still has to clear stale
22
+ * markers and return "not running" with exit 0. When the router cannot
23
+ * resolve a name, the verb falls through to the Claude engine — its
24
+ * `kill` is the only one that knows the tmux + on-disk marker layout the
25
+ * legacy `cmd_kill` cleaned up unconditionally. A registered Codex
26
+ * teammate would have been resolved by the router on the JSON path; if
27
+ * neither router resolves a name, it cannot be a live Codex daemon.
28
+ *
29
+ * Schema-1 record recovery: a legacy identity JSON whose engine has
30
+ * long-since died (no tmux session, no Codex daemon) leaves
31
+ * `engine.kill()` returning `not-found`. The verb still has to clear
32
+ * the stale `/tmp/teammate-<name>.json` so the next `tm spawn` is not
33
+ * blocked by an `O_EXCL` collision — `tm kill` is the documented
34
+ * recovery action for the schema-1 → schema-2 migration. The
35
+ * existence probe runs against the raw on-disk file (independent of
36
+ * schema parse), so a record this build cannot parse still gets
37
+ * swept.
38
+ */
39
+ export async function killVerb(name: TeammateName, ctx: VerbContext): Promise<TmResult> {
40
+ const resolved = await ctx.router.resolve(name)
41
+ const engine = resolved?.engine ?? ctx.engines.get('claude')
42
+ if (engine === undefined) return formatKill(name, { kind: 'not-found' })
43
+ const hadIdentityFile = existsSync(identityFile(name))
44
+ const result = await engine.kill({ name }, ctx.engineContext)
45
+ // Archive before remove: a later `tm resume <name> <sid>` /
46
+ // `tm history <name>` reads the snapshot to recover the killed
47
+ // teammate's cwd / repo / worktreeSlug / displayName, so the agent
48
+ // never has to scrape `/tmp` directly.
49
+ if (result.kind === 'killed' || (result.kind === 'not-found' && hadIdentityFile)) {
50
+ await ctx.identity.archive(name)
51
+ await ctx.identity.remove(name)
52
+ }
53
+ if (result.kind === 'not-found' && hadIdentityFile) {
54
+ return {
55
+ code: 0,
56
+ stdout: `killed: ${name}\n`,
57
+ stderr: `tm kill: ${name}: cleared stale identity record (engine had no live process)\n`,
58
+ }
59
+ }
60
+ return formatKill(name, result)
61
+ }
@@ -0,0 +1,34 @@
1
+ /**
2
+ * `tm last <name>` — reprint the last completed assistant reply.
3
+ */
4
+
5
+ import type { LastRequest, TeammateName, TextResult } from '../engines/types'
6
+ import type { TmResult } from '../tm'
7
+ import type { VerbContext } from './context'
8
+ import { resolveTargetEngine } from './resolve'
9
+
10
+ function formatLast(result: TextResult): TmResult {
11
+ if (result.tmResult !== undefined) return result.tmResult
12
+ switch (result.kind) {
13
+ case 'text':
14
+ return { code: 0, stdout: result.text, stderr: '' }
15
+ case 'not-found':
16
+ return { code: 1, stdout: '', stderr: `tm: last: ${result.reason}\n` }
17
+ case 'not-supported':
18
+ return { code: 0, stdout: '', stderr: ` not supported: ${result.reason}\n` }
19
+ case 'failed':
20
+ return { code: 1, stdout: '', stderr: `tm: ${result.message}\n` }
21
+ }
22
+ }
23
+
24
+ export async function lastVerb(
25
+ name: TeammateName,
26
+ ctx: VerbContext,
27
+ options: { readonly verbose?: boolean } = {},
28
+ ): Promise<TmResult> {
29
+ const engine = await resolveTargetEngine(name, ctx)
30
+ if ('code' in engine) return engine
31
+
32
+ const req: LastRequest = { name, verbose: options.verbose === true }
33
+ return formatLast(await engine.last(req, ctx.engineContext))
34
+ }
@@ -0,0 +1,27 @@
1
+ /**
2
+ * `tm ls` — fleet-wide teammate listing. Decision multi-engine-tui-architecture amend
3
+ * §"Fleet-visibility verbs" makes this verb engine-agnostic: it
4
+ * iterates every registered engine, calls `Engine.list()` in parallel,
5
+ * and concatenates the rows. A Codex daemon teammate with no tmux
6
+ * session is therefore visible to `tm ls` for the first time.
7
+ *
8
+ * The default impl below is the one decision multi-engine-tui-architecture amend lines 150-155
9
+ * lock in. Engines do not override `tm ls` unless their listing output
10
+ * needs to differ from the shared format — and even then they extend
11
+ * the row shape, not the verb.
12
+ */
13
+
14
+ import { formatListing, noEngineRegistered } from './format'
15
+ import type { VerbContext } from './context'
16
+ import type { TmResult } from '../tm'
17
+
18
+ export async function lsVerb(ctx: VerbContext): Promise<TmResult> {
19
+ // An empty registry means production wiring is incomplete — the verb must
20
+ // surface that loudly, not silently report "no teammates". A zero-engine
21
+ // process is a misconfiguration, not a fleet state.
22
+ const engines = ctx.engines.registered()
23
+ if (engines.length === 0) return noEngineRegistered()
24
+
25
+ const listings = await Promise.all(engines.map((engine) => engine.list(ctx.engineContext)))
26
+ return formatListing(listings.flat())
27
+ }
@@ -0,0 +1,40 @@
1
+ /**
2
+ * `tm mem <name>` — project memory dump. Decision multi-engine-tui-architecture §"`history`
3
+ * and `mem` stay" keeps the verb alive across engines. The Claude
4
+ * engine reads `~/.claude/projects/<encoded>/memory/`; the Codex
5
+ * engine returns `not-supported`.
6
+ */
7
+
8
+ import type { MemoryRequest, TeammateName, TextResult } from '../engines/types'
9
+ import type { TmResult } from '../tm'
10
+ import type { VerbContext } from './context'
11
+ import { resolveTargetEngine } from './resolve'
12
+
13
+ function formatMem(engineKind: string, result: TextResult): TmResult {
14
+ if (result.tmResult !== undefined) return result.tmResult
15
+ switch (result.kind) {
16
+ case 'text':
17
+ return { code: 0, stdout: result.text, stderr: '' }
18
+ case 'not-supported':
19
+ return {
20
+ code: 0,
21
+ stdout: '',
22
+ stderr:
23
+ engineKind === 'claude'
24
+ ? `${result.reason}\n`
25
+ : ` not supported: ${result.reason}\n`,
26
+ }
27
+ case 'not-found':
28
+ return { code: 1, stdout: '', stderr: `tm: mem: ${result.reason}\n` }
29
+ case 'failed':
30
+ return { code: 1, stdout: '', stderr: `tm: ${result.message}\n` }
31
+ }
32
+ }
33
+
34
+ export async function memVerb(name: TeammateName, ctx: VerbContext): Promise<TmResult> {
35
+ const engine = await resolveTargetEngine(name, ctx)
36
+ if ('code' in engine) return engine
37
+
38
+ const req: MemoryRequest = { name }
39
+ return formatMem(engine.kind, await engine.mem(req, ctx.engineContext))
40
+ }
@@ -0,0 +1,61 @@
1
+ /**
2
+ * `tm poll <repo> <regex> [timeout]` — block until a teammate's pane
3
+ * matches a regex, or a timeout elapses (a diagnostic verb).
4
+ *
5
+ * The poll loop is native; the match itself delegates to the real
6
+ * `grep -E`, the way `states` delegates alignment to `column`. `tm`'s
7
+ * `capture-pane | grep -qE` runs under `set -o pipefail`, so a match
8
+ * needs both the capture to succeed and `grep` to exit 0.
9
+ *
10
+ * Claude-only at the verb level: the codex driver does not run inside
11
+ * tmux, so a `tm poll codex-1 ...` falls through to the no-session
12
+ * error (which is the same shape tmux would emit anyway).
13
+ */
14
+
15
+ import { requireSession, resolvePaneTarget } from '../engines/claude/tmux'
16
+ import { isNonNegativeInteger, sleepMs } from '../engines/claude/clock'
17
+ import type { TmResult } from '../tm'
18
+ import type { GrepRunner } from '../grep'
19
+ import type { TmuxRunner } from '../tmux'
20
+
21
+ export interface PollEnv {
22
+ readonly runTmux: TmuxRunner
23
+ readonly runGrep: GrepRunner
24
+ }
25
+
26
+ export async function pollVerb(args: readonly string[], env: PollEnv): Promise<TmResult> {
27
+ const repo = args[0] ?? ''
28
+ const pattern = args[1] ?? ''
29
+ if (repo === '' || pattern === '') {
30
+ return die('usage: tm poll <repo> <regex> [timeout=180]')
31
+ }
32
+ // `||`, not `??`: `tm`'s `${3:-180}` also defaults on an empty-string arg.
33
+ const timeoutArg = args[2] || '180'
34
+
35
+ const sessionMissing = await requireSession(repo, env.runTmux)
36
+ if (sessionMissing !== null) return sessionMissing
37
+
38
+ const pane = await resolvePaneTarget(repo, env.runTmux)
39
+ if (pane === '') return die(`could not resolve pane target for ${repo}`)
40
+
41
+ // Same `[[ ^[0-9]+$ ]]` guard `send` / `wait` / `compact` use for their
42
+ // `--timeout` — a malformed value would otherwise become a NaN loop.
43
+ if (!isNonNegativeInteger(timeoutArg)) return { code: 1, stdout: '', stderr: '' }
44
+ const end = Math.floor(Date.now() / 1000) + Number(timeoutArg)
45
+ while (Math.floor(Date.now() / 1000) < end) {
46
+ const capture = await env.runTmux(['capture-pane', '-t', pane, '-p', '-S', '-300'])
47
+ if (capture.code === 0 && (await env.runGrep(pattern, capture.stdout)) === 0) {
48
+ return { code: 0, stdout: `matched: ${pattern}\n`, stderr: '' }
49
+ }
50
+ await sleepMs(3000)
51
+ }
52
+ return {
53
+ code: 1,
54
+ stdout: '',
55
+ stderr: `tm: timeout after ${timeoutArg}s waiting for /${pattern}/ in ${repo}\n`,
56
+ }
57
+ }
58
+
59
+ function die(message: string): TmResult {
60
+ return { code: 1, stdout: '', stderr: `tm: ${message}\n` }
61
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * `tm reload <name>` — ask one teammate to reload its plugin set.
3
+ */
4
+
5
+ import { formatReload } from './format'
6
+ import type { ReloadRequest, TeammateName } from '../engines/types'
7
+ import type { TmResult } from '../tm'
8
+ import type { VerbContext } from './context'
9
+ import { resolveTargetEngine } from './resolve'
10
+
11
+ export async function reloadVerb(name: TeammateName, ctx: VerbContext): Promise<TmResult> {
12
+ const engine = await resolveTargetEngine(name, ctx)
13
+ if ('code' in engine) return engine
14
+
15
+ const req: ReloadRequest = { name }
16
+ return formatReload(await engine.reload(req, ctx.engineContext))
17
+ }
@@ -0,0 +1,14 @@
1
+ import type { Engine } from '../engines/engine'
2
+ import type { TeammateName } from '../engines/types'
3
+ import type { TmResult } from '../tm'
4
+ import type { VerbContext } from './context'
5
+ import { noEngineRegistered } from './format'
6
+
7
+ export async function resolveTargetEngine(
8
+ name: TeammateName,
9
+ ctx: VerbContext,
10
+ ): Promise<Engine | TmResult> {
11
+ const resolved = await ctx.router.resolve(name)
12
+ if (resolved !== null) return resolved.engine
13
+ return ctx.engines.get('claude') ?? noEngineRegistered()
14
+ }
@@ -0,0 +1,170 @@
1
+ /**
2
+ * `tm resume <name> [checkpoint]` — relaunch a previous teammate session.
3
+ *
4
+ * Engine selection priority (literal per the resume-probing design):
5
+ * 1. explicit `--engine` flag — caller's override, wins unconditionally
6
+ * 2. checkpoint-from-rollout — a Codex thread-id maps to a rollout
7
+ * (existing `codexFromRollout` logic — preserves `tm resume <name> <thread-id>`
8
+ * after `tm kill` has removed the base record)
9
+ * 3. router resolution — an existing teammate's recorded engine
10
+ * 4. cwd probing — both engines are asked whether they
11
+ * hold history for the teammate's cwd; single candidate auto-routes,
12
+ * double candidate is an ambiguity error, no candidate is "no resumable
13
+ * session" — see decision context in the PR.
14
+ * 5. not-found — when probing cannot run (cwd unknown)
15
+ * and the identity router cannot resolve the name.
16
+ */
17
+
18
+ import { hasClaudeHistoryForCwd } from '../engines/claude/history'
19
+ import { hasCodexHistoryForCwd } from '../engines/codex/history'
20
+ import { formatResume } from './format'
21
+ import { findCodexRolloutFile, readRolloutSessionCwd } from '../engines/codex/rollout'
22
+ import { resolveTargetEngine } from './resolve'
23
+ import type { Engine } from '../engines/engine'
24
+ import type { EngineKind, ResumeRequest, TeammateName } from '../engines/types'
25
+ import type { TmResult } from '../tm'
26
+ import type { VerbContext } from './context'
27
+
28
+ /**
29
+ * Recognise a worktree-shaped cwd
30
+ * (`<repo>/.claude/worktrees/<slug>`). The shape is the contract
31
+ * both engines launch worktree teammates under, so the same parser
32
+ * works whether the rollout was written by a Claude or a Codex
33
+ * teammate. Returns `null` when `cwd` does not have the suffix —
34
+ * the caller then falls back to "treat cwd as the repo itself"
35
+ * (`--no-worktree` mode).
36
+ *
37
+ * Exported so the unit test pinning the resume-after-clean-kill
38
+ * recovery shape can target this directly without standing up
39
+ * a real Codex daemon.
40
+ */
41
+ export function parseWorktreeCwd(cwd: string): { repo: string; slug: string } | null {
42
+ const m = cwd.match(/^(.*?)\/\.claude\/worktrees\/([^/]+)\/?$/)
43
+ if (m === null) return null
44
+ const repo = m[1] ?? ''
45
+ const slug = m[2] ?? ''
46
+ if (repo.length === 0 || slug.length === 0) return null
47
+ return { repo, slug }
48
+ }
49
+
50
+ export interface ResumeArgs {
51
+ readonly name: TeammateName
52
+ readonly repo: string | null
53
+ readonly cwd: string | null
54
+ readonly worktreeSlug: string | null
55
+ readonly checkpoint: string | null
56
+ readonly prompt: string | null
57
+ readonly displayName: string | null
58
+ /** `tm resume --engine claude|codex` — overrides every other selector. */
59
+ readonly engineHint: EngineKind | null
60
+ /** `~/.claude/projects` (or test override) — needed for Claude-side probing. */
61
+ readonly projectsDir: string
62
+ /**
63
+ * Whether `cwd` was derived from a real source (an existing identity
64
+ * record, a Codex base record/meta, or a dispatcher subdirectory)
65
+ * rather than the last-resort fallback. Probing must skip itself
66
+ * when this is `false`, or it would match the dispatcher's own
67
+ * transcripts and false-route.
68
+ */
69
+ readonly cwdProbeable: boolean
70
+ }
71
+
72
+ function die(message: string): TmResult {
73
+ return { code: 1, stdout: '', stderr: `tm: ${message}\n` }
74
+ }
75
+
76
+ async function dispatchResume(engine: Engine, args: ResumeArgs, ctx: VerbContext): Promise<TmResult> {
77
+ const req: ResumeRequest = {
78
+ name: args.name,
79
+ repo: args.repo,
80
+ cwd: args.cwd,
81
+ worktreeSlug: args.worktreeSlug,
82
+ checkpoint: args.checkpoint,
83
+ prompt: args.prompt,
84
+ displayName: args.displayName,
85
+ }
86
+ return formatResume(await engine.resume(req, ctx.engineContext))
87
+ }
88
+
89
+ export async function resumeVerb(args: ResumeArgs, ctx: VerbContext): Promise<TmResult> {
90
+ // 1. Explicit --engine wins unconditionally — caller's override.
91
+ if (args.engineHint !== null) {
92
+ const engine = ctx.engines.get(args.engineHint)
93
+ if (engine === undefined) {
94
+ return die(`resume: --engine ${args.engineHint} is not registered in this process`)
95
+ }
96
+ return dispatchResume(engine, args, ctx)
97
+ }
98
+
99
+ // 2. Checkpoint reverse-lookup — a passed thread-id that maps to a
100
+ // Codex rollout. Preserves `tm resume <name> <thread-id>` after
101
+ // `tm kill` has removed the live identity + Codex meta records.
102
+ //
103
+ // After a clean kill, `args.cwd` came from `cwdForName`'s last-resort
104
+ // fallback (no identity → no Codex meta → no `<dispatcherDir>/<name>`
105
+ // dir → dispatcher dir). Spawning the resumed daemon at the
106
+ // dispatcher dir would silently launch follow-up turns in the wrong
107
+ // workspace. The rollout's `session_meta.cwd` header records the
108
+ // daemon's original launch cwd verbatim; use it to override the
109
+ // fallback when the dispatcher would otherwise route blind. When
110
+ // the rollout cwd has the worktree shape
111
+ // (`.../.claude/worktrees/<slug>`), split out `repo` and
112
+ // `worktreeSlug` so the engine re-provisions the worktree if a
113
+ // prior `tm kill` removed it. The identity-known path (no kill, or
114
+ // `--name` matches a live record) already has the right cwd in
115
+ // `args.cwd`, so the override only fires when `cwdForName` could
116
+ // not produce a teammate-specific cwd.
117
+ const codex = ctx.engines.get('codex')
118
+ if (args.checkpoint !== null && codex !== undefined) {
119
+ const rollout = findCodexRolloutFile(args.checkpoint, ctx.engineContext.env)
120
+ if (rollout !== null) {
121
+ const rolloutCwd = readRolloutSessionCwd(rollout.path)
122
+ const shouldRecover = rolloutCwd !== null && (args.cwd === null || !args.cwdProbeable)
123
+ let recovered = args
124
+ if (shouldRecover && rolloutCwd !== null) {
125
+ const parts = parseWorktreeCwd(rolloutCwd)
126
+ recovered = parts === null
127
+ ? { ...args, cwd: rolloutCwd, repo: rolloutCwd, worktreeSlug: null }
128
+ : { ...args, cwd: rolloutCwd, repo: parts.repo, worktreeSlug: parts.slug }
129
+ }
130
+ return dispatchResume(codex, recovered, ctx)
131
+ }
132
+ }
133
+
134
+ // 3. Router — an existing teammate's recorded engine.
135
+ const resolved = await ctx.router.resolve(args.name)
136
+ if (resolved !== null) {
137
+ return dispatchResume(resolved.engine, args, ctx)
138
+ }
139
+
140
+ // 4. cwd probing — single candidate auto-routes; double = ambiguity error.
141
+ // Probing is only meaningful when there is no checkpoint to disambiguate,
142
+ // and only safe when the cwd actually points at the teammate's repo.
143
+ if (args.checkpoint === null && args.cwd !== null && args.cwdProbeable) {
144
+ const claude = ctx.engines.get('claude')
145
+ const codexHas = codex !== undefined && hasCodexHistoryForCwd(args.cwd, ctx.engineContext.env)
146
+ const claudeHas = claude !== undefined && hasClaudeHistoryForCwd(args.cwd, args.projectsDir)
147
+
148
+ if (codexHas && claudeHas) {
149
+ return die(
150
+ `resume: ambiguous — both codex and claude have resumable history for ` +
151
+ `cwd ${args.cwd}. Pass --engine codex|claude, or give an explicit ` +
152
+ `<sid> (claude) / <thread-id> (codex).`,
153
+ )
154
+ }
155
+ if (codexHas) return dispatchResume(codex!, args, ctx)
156
+ if (claudeHas) return dispatchResume(claude!, args, ctx)
157
+ return die(
158
+ `resume: no resumable session for ${args.name} — no Claude transcript ` +
159
+ `under projectsDir and no Codex rollout for cwd ${args.cwd}. ` +
160
+ `To start a new session, use 'tm spawn ${args.name} [--engine codex|claude]'.`,
161
+ )
162
+ }
163
+
164
+ // 5. Not found — cwd is unknown (or checkpoint passed but unmatched). The
165
+ // production router may have migrated a live pre-identity teammate above;
166
+ // if resolution is still empty, there is no engine-safe target.
167
+ const engine = await resolveTargetEngine(args.name, ctx)
168
+ if ('code' in engine) return engine
169
+ return dispatchResume(engine, args, ctx)
170
+ }
@@ -0,0 +1,36 @@
1
+ /**
2
+ * `tm send <name> --prompt p` — atomic round-trip. Decision multi-engine-tui-architecture
3
+ * §"Round-trips are atomic by default" makes wait the only path;
4
+ * `--no-wait` is removed. The verb resolves the teammate through the
5
+ * router and dispatches to `Engine.send`; the engine owns the
6
+ * transport.
7
+ */
8
+
9
+ import { formatTurn } from './format'
10
+ import type { SendRequest, TeammateName } from '../engines/types'
11
+ import type { TmResult } from '../tm'
12
+ import type { VerbContext } from './context'
13
+ import { resolveTargetEngine } from './resolve'
14
+
15
+ export interface SendArgs {
16
+ readonly name: TeammateName
17
+ readonly prompt: string
18
+ readonly timeoutMs: number | null
19
+ readonly paneQuiet: boolean
20
+ }
21
+
22
+ export async function sendVerb(args: SendArgs, ctx: VerbContext): Promise<TmResult> {
23
+ const engine = await resolveTargetEngine(args.name, ctx)
24
+ if ('code' in engine) return engine
25
+ if (args.paneQuiet && engine.kind !== 'claude') {
26
+ return { code: 1, stdout: '', stderr: 'tm: tm send: --pane-quiet is not supported for codex teammates\n' }
27
+ }
28
+
29
+ const req: SendRequest = {
30
+ name: args.name,
31
+ prompt: args.prompt,
32
+ timeoutMs: args.timeoutMs,
33
+ paneQuiet: args.paneQuiet,
34
+ }
35
+ return formatTurn(await engine.send(req, ctx.engineContext))
36
+ }