@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,48 @@
1
+ /**
2
+ * Wall-clock + timing utilities shared by the hot-path verbs. Pulled
3
+ * out so a future `EngineContext.now()` plumb-through has a single
4
+ * adapter point (Phase 2a-2 keeps the direct `Date.now()`).
5
+ */
6
+
7
+ /** Resolve after `ms` milliseconds — `tm`'s `sleep` analog. */
8
+ export function sleepMs(ms: number): Promise<void> {
9
+ return new Promise((resolve) => setTimeout(resolve, ms))
10
+ }
11
+
12
+ /** Epoch seconds, sampled once — `tm`'s `$(date +%s)`. */
13
+ export function nowSec(): number {
14
+ return Math.floor(Date.now() / 1000)
15
+ }
16
+
17
+ /**
18
+ * Whether `value` is a valid non-negative integer string (the shape
19
+ * `tm`'s `[[ "$timeout" =~ ^[0-9]+$ ]]` accepts). The native verbs guard
20
+ * `--timeout` with this so a malformed value does not become a NaN loop.
21
+ */
22
+ export function isNonNegativeInteger(value: string): boolean {
23
+ return /^[0-9]+$/.test(value)
24
+ }
25
+
26
+ /**
27
+ * Format an epoch-seconds value as `YYYY-MM-DD HH:MM:SS` in local time
28
+ * — the `tm` `history_detail` `last_seen` field. `tm` does this with
29
+ * BSD `date -r`, so this rendering matches `tm` on macOS; `date -r
30
+ * <epoch>` is not portable to GNU, which is why `history`'s detail-
31
+ * mode conformance is macOS-gated.
32
+ */
33
+ export function fmtLocalDateTime(epochSec: number): string {
34
+ const d = new Date(epochSec * 1000)
35
+ const p = (n: number): string => String(n).padStart(2, '0')
36
+ return (
37
+ `${d.getFullYear()}-${p(d.getMonth() + 1)}-${p(d.getDate())} ` +
38
+ `${p(d.getHours())}:${p(d.getMinutes())}:${p(d.getSeconds())}`
39
+ )
40
+ }
41
+
42
+ /** Format a second-count as a short relative age — `tm`'s `fmt_age`. */
43
+ export function fmtAge(age: number): string {
44
+ if (age < 60) return `${age}s`
45
+ if (age < 3600) return `${Math.floor(age / 60)}m`
46
+ if (age < 86400) return `${Math.floor(age / 3600)}h`
47
+ return `${Math.floor(age / 86400)}d`
48
+ }
@@ -0,0 +1,107 @@
1
+ /**
2
+ * `tm compact` — send `/compact` and verify PostCompact fired. Reports
3
+ * the one-line `compacted` on stdout when it did. Two non-success modes
4
+ * with different exit codes:
5
+ *
6
+ * - Claude Code refuses with the "Not enough messages to compact"
7
+ * tool-result block. That path fires no Stop/PostCompact hook, so
8
+ * the visible pane is scanned alongside the idle-marker poll to
9
+ * detect it. Exit 1 — `/compact` rejected and won't proceed.
10
+ * - PostCompact never fires within `--timeout` — compaction may still
11
+ * be running. Exit `EXIT_SYNC_WAIT_EXPIRED` (124) to mark this as
12
+ * "sync wait expired, teammate still running", distinct from a true
13
+ * failure (no session, sid missing) which keeps exit 1.
14
+ */
15
+
16
+ import { existsSync } from 'node:fs'
17
+
18
+ import { sendKeys } from './keys'
19
+ import { resolveSidOrDie } from './idle'
20
+ import { idleMarkerFor } from '../../persistence/paths'
21
+ import { die, requireSession, resolvePaneTarget } from './tmux'
22
+ import { isNonNegativeInteger, nowSec, sleepMs } from './clock'
23
+ import { probeStillAlive } from './wait-signals'
24
+ import { parseCompactArgs } from '../../shared/verb-args'
25
+ import type { ClaudeVerbEnv } from './env'
26
+ import { EXIT_SYNC_WAIT_EXPIRED, type TmResult } from '../../tm'
27
+
28
+ /** The bracketed-paste refusal `Claude Code` emits for a too-short transcript. */
29
+ export const COMPACT_REFUSAL_MARK = '⎿ Error: Not enough messages to compact'
30
+
31
+ export async function claudeCompact(args: readonly string[], env: ClaudeVerbEnv): Promise<TmResult> {
32
+ const parsed = parseCompactArgs(args)
33
+ if ('error' in parsed) return parsed.error
34
+ const { name, timeout } = parsed
35
+ if (name === '') return die('usage: tm compact <name> [timeout=1800] [--timeout N]')
36
+ if (!isNonNegativeInteger(timeout)) {
37
+ return die(`tm compact: --timeout must be a non-negative integer (got: '${timeout}')`)
38
+ }
39
+
40
+ const sessionMissing = await requireSession(name, env.runTmux)
41
+ if (sessionMissing !== null) return sessionMissing
42
+ const sidR = resolveSidOrDie(name)
43
+ if ('error' in sidR) return sidR.error
44
+ const sid = sidR.sid
45
+ const pane = await resolvePaneTarget(name, env.runTmux)
46
+ if (pane === '') return die(`could not resolve pane target for ${name}`)
47
+
48
+ let stderr = `tm compact: sending /compact to ${name} (sid=${sid}, timeout=${timeout}s)\n`
49
+
50
+ const sent = await sendKeys(name, '/compact', env.runTmux, process.env)
51
+ // `bin/tm:1139` runs `_send_keys >/dev/null`, redirecting *stdout* only;
52
+ // the `sent to ...` / `sid=...` lines `_send_keys` writes to stderr reach
53
+ // the user. Preserve them by carrying `sent.stderr` on every return path.
54
+ stderr += sent.stderr
55
+ if (sent.code !== 0) {
56
+ return { code: sent.code, stdout: sent.stdout, stderr }
57
+ }
58
+
59
+ const timeoutSec = Number(timeout)
60
+ const end = nowSec() + timeoutSec
61
+ const marker = idleMarkerFor(sid)
62
+ while (nowSec() < end) {
63
+ if (existsSync(marker)) {
64
+ return { code: 0, stdout: 'compacted\n', stderr }
65
+ }
66
+ // `bin/tm`'s refusal scan is `[[ -n "$pane" ]] && tmux capture-pane ...`
67
+ // — if the pane is gone the verb silently disables refusal detection
68
+ // and keeps polling the idle marker. Mirror that.
69
+ if (pane.length > 0) {
70
+ try {
71
+ const captured = await env.runTmux(['capture-pane', '-t', pane, '-p'])
72
+ if (captured.code === 0 && captured.stdout.includes(COMPACT_REFUSAL_MARK)) {
73
+ return {
74
+ code: 1,
75
+ stdout: '',
76
+ stderr:
77
+ stderr +
78
+ `tm compact: ${name} refused /compact — Claude Code reported ` +
79
+ "'Not enough messages to compact' (transcript too short).\n",
80
+ }
81
+ }
82
+ } catch {
83
+ // A capture failure is a transient tmux error; the idle marker is
84
+ // the primary signal — keep polling.
85
+ }
86
+ }
87
+ await sleepMs(3000)
88
+ }
89
+ // Same re-probe pattern as `send.ts` / `wait.ts`: 124 means "still
90
+ // running, compact may yet finish — re-collect with `tm wait`." If the
91
+ // tmux session or sid file vanished mid-wait, that promise is false and
92
+ // returning 124 would deadlock the dispatcher into never respawning.
93
+ const dead = await probeStillAlive(name, env.runTmux)
94
+ if (dead !== null) {
95
+ return { ...dead, stderr: stderr + dead.stderr }
96
+ }
97
+ return {
98
+ code: EXIT_SYNC_WAIT_EXPIRED,
99
+ stdout: '',
100
+ stderr:
101
+ stderr +
102
+ `tm compact: sync wait expired after ${timeout}s on ${name} ` +
103
+ '(PostCompact never fired; compaction may still be running, or the ' +
104
+ `Stop hook is misconfigured). Check 'tm status ${name}' and ${marker}. ` +
105
+ `exit ${EXIT_SYNC_WAIT_EXPIRED}.\n`,
106
+ }
107
+ }
@@ -0,0 +1,239 @@
1
+ /**
2
+ * Claude-engine `tm ctx` body — report a teammate's transcript context
3
+ * window usage.
4
+ *
5
+ * Two entry points keep the strangler clean:
6
+ *
7
+ * - `claudeCtxLine(name, windowOverride, env)` is the byte-exact text
8
+ * the legacy `tm ctx` printed per teammate (including the
9
+ * `? (no sid / no transcript / no usage)` soft-fails so a `--all`
10
+ * fan-out keeps going across teammates with no readable transcript).
11
+ * The CLI fan-out wrapper still emits this verbatim.
12
+ * - `claudeCtxUsage(name, env)` is the structured `ContextResult` the
13
+ * Engine interface speaks in — same numbers, no formatting.
14
+ */
15
+
16
+ import { readFileSync, statSync } from 'node:fs'
17
+ import { join } from 'node:path'
18
+
19
+ import { encodeProjectDir } from '../../persistence/paths'
20
+ import { cwdFile } from '../../persistence/paths'
21
+ import { readSid } from './state'
22
+ import type { ContextResult, TeammateName } from '../types'
23
+
24
+ export interface ClaudeCtxEnv {
25
+ readonly dispatcherDir: string
26
+ readonly projectsDir: string
27
+ }
28
+
29
+ /** A teammate's context-window usage, summed from its transcript. */
30
+ export interface CtxUsage {
31
+ /** Tokens in the last assistant turn — input plus both cache reads. */
32
+ used: number
33
+ /** Output tokens of the last assistant turn. */
34
+ out: number
35
+ /** The largest `used`-style total across every assistant turn. */
36
+ peak: number
37
+ }
38
+
39
+ function isPlainObject(value: unknown): value is Record<string, unknown> {
40
+ return typeof value === 'object' && value !== null && !Array.isArray(value)
41
+ }
42
+
43
+ /** Sum the cache-inclusive input tokens of one `message.usage` object. */
44
+ function usageInput(usage: Record<string, unknown>): number {
45
+ const num = (v: unknown): number => (typeof v === 'number' ? v : 0)
46
+ return (
47
+ num(usage['input_tokens']) +
48
+ num(usage['cache_creation_input_tokens']) +
49
+ num(usage['cache_read_input_tokens'])
50
+ )
51
+ }
52
+
53
+ function readIfNonEmpty(file: string): string | null {
54
+ try {
55
+ if (statSync(file).size === 0) return null
56
+ return readFileSync(file, 'utf8')
57
+ } catch {
58
+ return null
59
+ }
60
+ }
61
+
62
+ function isRegularFile(path: string): boolean {
63
+ try {
64
+ return statSync(path).isFile()
65
+ } catch {
66
+ return false
67
+ }
68
+ }
69
+
70
+ /** The Claude Code transcript file for a teammate session under `projectsDir`. */
71
+ export function transcriptFile(projectsDir: string, cwd: string, sid: string): string {
72
+ return join(projectsDir, encodeProjectDir(cwd), `${sid}.jsonl`)
73
+ }
74
+
75
+ /**
76
+ * The most recent assistant turn's joined text from a Claude Code
77
+ * transcript jsonl, or `''` when no text-bearing assistant entry exists
78
+ * (unreadable file, malformed entries, tool-only/thinking-only turns).
79
+ *
80
+ * Walks the parsed entries from end to start, picks the first assistant
81
+ * entry whose `message.content` carries at least one non-empty `text`
82
+ * block, and returns those text blocks joined with `''` — the on-stop
83
+ * hook's `extract_last_turn` shape for a single assistant entry.
84
+ *
85
+ * Used by `tm spawn --resume` to seed `<sid>.last` with the prior turn's
86
+ * deliverable so the dispatcher has something to re-read after the
87
+ * relaunch, even before the next turn fires.
88
+ */
89
+ export function readLastAssistantText(jsonlPath: string): string {
90
+ let content: string
91
+ try {
92
+ content = readFileSync(jsonlPath, 'utf8')
93
+ } catch {
94
+ return ''
95
+ }
96
+ const lines = content.split('\n')
97
+ for (let i = lines.length - 1; i >= 0; i--) {
98
+ const line = lines[i]!
99
+ if (line.trim() === '') continue
100
+ let entry: unknown
101
+ try {
102
+ entry = JSON.parse(line)
103
+ } catch {
104
+ continue
105
+ }
106
+ if (!isPlainObject(entry)) continue
107
+ if (entry['type'] !== 'assistant') continue
108
+ const message = entry['message']
109
+ if (!isPlainObject(message)) continue
110
+ const arr = message['content']
111
+ if (!Array.isArray(arr)) continue
112
+ const texts: string[] = []
113
+ for (const item of arr) {
114
+ if (!isPlainObject(item)) continue
115
+ if (item['type'] !== 'text') continue
116
+ const t = item['text']
117
+ if (typeof t === 'string') texts.push(t)
118
+ }
119
+ const joined = texts.join('')
120
+ if (joined.length > 0) return joined
121
+ }
122
+ return ''
123
+ }
124
+
125
+ /**
126
+ * Read a teammate's ctx usage from its transcript jsonl — the native
127
+ * form of the `jq -s` pass `tm`'s `_ctx_format_line` ran. Collects
128
+ * every assistant entry's `message.usage`: `used` / `out` come from the
129
+ * last one, `peak` is the max input across all. Returns `null` when
130
+ * there is no usable usage; that includes the cases where `jq -s`
131
+ * itself would have failed (a non-object entry, a non-object
132
+ * `.message` / `.message.usage`).
133
+ */
134
+ export function readCtxUsage(jsonl: string): CtxUsage | null {
135
+ let content: string
136
+ try {
137
+ content = readFileSync(jsonl, 'utf8')
138
+ } catch {
139
+ return null
140
+ }
141
+ const inputs: number[] = []
142
+ let lastOut = 0
143
+ for (const line of content.split('\n')) {
144
+ if (line.trim() === '') continue
145
+ let entry: unknown
146
+ try {
147
+ entry = JSON.parse(line)
148
+ } catch {
149
+ return null
150
+ }
151
+ if (entry === null) continue
152
+ if (!isPlainObject(entry)) return null
153
+ if (entry['type'] !== 'assistant') continue
154
+ const message = entry['message']
155
+ if (message === null || message === undefined) continue
156
+ if (!isPlainObject(message)) return null
157
+ const usage = message['usage']
158
+ if (usage === null || usage === undefined) continue
159
+ if (!isPlainObject(usage)) return null
160
+ inputs.push(usageInput(usage))
161
+ lastOut = typeof usage['output_tokens'] === 'number' ? usage['output_tokens'] : 0
162
+ }
163
+ if (inputs.length === 0) return null
164
+ let peak = inputs[0]!
165
+ for (const value of inputs) if (value > peak) peak = value
166
+ return { used: inputs[inputs.length - 1]!, out: lastOut, peak }
167
+ }
168
+
169
+ /**
170
+ * The byte-exact per-teammate `tm ctx` line. `windowOverride` is `''`,
171
+ * `'200k'`, or `'1m'`. Soft-fails to a `? (...)` diagnostic so a
172
+ * `--all` fan-out keeps going.
173
+ */
174
+ export function claudeCtxLine(
175
+ name: TeammateName,
176
+ windowOverride: string,
177
+ env: ClaudeCtxEnv,
178
+ ): string {
179
+ const sid = readSid(name)
180
+ if (sid === null) return `${name}: ? (no sid file)`
181
+
182
+ const recordedCwd = readIfNonEmpty(cwdFile(name))
183
+ const cwd =
184
+ recordedCwd !== null ? recordedCwd.replace(/\n+$/, '') : `${env.dispatcherDir}/${name}`
185
+ const jsonl = transcriptFile(env.projectsDir, cwd, sid)
186
+ if (!isRegularFile(jsonl)) return `${name}: ? (no transcript at ${jsonl})`
187
+
188
+ const usage = readCtxUsage(jsonl)
189
+ if (usage === null) return `${name}: ? (no assistant usage in transcript)`
190
+
191
+ const next = usage.used + usage.out
192
+ let window: number
193
+ let note: string
194
+ if (windowOverride === '1m') {
195
+ window = 1000000
196
+ note = 'flag'
197
+ } else if (windowOverride === '200k') {
198
+ window = 200000
199
+ note = 'flag'
200
+ } else if (usage.peak > 210000) {
201
+ window = 1000000
202
+ note = 'detected 1M'
203
+ } else {
204
+ window = 200000
205
+ note = 'assumed 200k'
206
+ }
207
+ const pct = Math.floor((usage.used * 100) / window)
208
+ const wlabel = window >= 1000000 ? '1M' : '200k'
209
+ return `${name}: ${usage.used} tokens · ~${next} next turn · ${pct}% of ${wlabel} (${note})`
210
+ }
211
+
212
+ /**
213
+ * Structured `ContextResult` for `ClaudeEngine.ctx`. Returns `kind:
214
+ * 'not-supported'` when the transcript or usage is unreadable — the
215
+ * verb-layer formatter renders the same `? (...)` line a future
216
+ * EngineRegistry dispatch would emit.
217
+ */
218
+ export function claudeCtxUsage(name: TeammateName, env: ClaudeCtxEnv): ContextResult {
219
+ const sid = readSid(name)
220
+ if (sid === null) return { kind: 'not-supported', reason: `no sid file for ${name}` }
221
+ const recordedCwd = readIfNonEmpty(cwdFile(name))
222
+ const cwd =
223
+ recordedCwd !== null ? recordedCwd.replace(/\n+$/, '') : `${env.dispatcherDir}/${name}`
224
+ const jsonl = transcriptFile(env.projectsDir, cwd, sid)
225
+ if (!isRegularFile(jsonl)) {
226
+ return { kind: 'not-supported', reason: `no transcript at ${jsonl}` }
227
+ }
228
+ const usage = readCtxUsage(jsonl)
229
+ if (usage === null) {
230
+ return { kind: 'not-supported', reason: `no assistant usage in transcript for ${name}` }
231
+ }
232
+ const window = usage.peak > 210000 ? 1000000 : 200000
233
+ return {
234
+ kind: 'usage',
235
+ tokensUsed: usage.used,
236
+ tokensTotal: window,
237
+ pct: Math.floor((usage.used * 100) / window),
238
+ }
239
+ }
@@ -0,0 +1,202 @@
1
+ /**
2
+ * `tm doctor` — a read-only environment self-check. Sections fire
3
+ * top-down: the `tm` executable, the dispatcher dir, tmux, the idle
4
+ * dir, the active teammate list, and the codex teammates. Soft-fails
5
+ * throughout (every probe is guarded) and always exits 0; output is
6
+ * meant to be eyeballed, not parsed.
7
+ *
8
+ * The path the "tm executable" section reports is the
9
+ * `<plugin-root>/bin/tm` launcher. The caller passes the resolved
10
+ * paths in (`tmWrapper`, `pluginJson`) because the relative-`../..`
11
+ * computation has to be done from a `src/*.ts` file at depth one
12
+ * inside the plugin root — engines/claude/doctor.ts sits three
13
+ * directories deeper, so the math does not work from here.
14
+ */
15
+
16
+ import { readdirSync, readFileSync, statSync } from 'node:fs'
17
+
18
+ import { isDirectory } from './idle'
19
+ import { iterTeammates } from './tmux'
20
+ import { die } from './tmux'
21
+ import { fmtLocalDateTime } from './clock'
22
+ import { idleDir, TMUX_SESSION_PREFIX } from '../../persistence/paths'
23
+ import {
24
+ isProcessAlive as codexProcessAlive,
25
+ listDaemons as listCodexDaemons,
26
+ readDaemonState as readCodexState,
27
+ reapDaemon as reapCodexDaemon,
28
+ } from '../codex/supervisor'
29
+ import { removeBaseRecord as removeCodexBaseRecord } from '../codex/persistence'
30
+ import type { ClaudeVerbEnv } from './env'
31
+ import type { TmResult } from '../../tm'
32
+
33
+ export interface DoctorPaths {
34
+ /** Absolute path to the `<plugin-root>/bin/tm` launcher. */
35
+ tmWrapper: string
36
+ /** Absolute path to `<plugin-root>/.claude-plugin/plugin.json`. */
37
+ pluginJson: string
38
+ }
39
+
40
+ export async function claudeDoctor(
41
+ args: readonly string[],
42
+ env: ClaudeVerbEnv,
43
+ paths: DoctorPaths,
44
+ ): Promise<TmResult> {
45
+ if (args.length > 0) {
46
+ return die(`tm doctor: takes no arguments (got: ${args.join(' ')})`)
47
+ }
48
+
49
+ // The kv row: a 20-character padded label, then the value — matches
50
+ // `cmd_doctor`'s `printf ' %-20s%s\n'`. One source of truth here
51
+ // keeps alignment immune to label renames.
52
+ const kv = (label: string, value: string): string => {
53
+ const padded = `${label}:`.padEnd(20, ' ')
54
+ return ` ${padded}${value}\n`
55
+ }
56
+
57
+ let out = ''
58
+
59
+ // --- tm executable ---
60
+ const { tmWrapper, pluginJson } = paths
61
+ let version = 'unknown'
62
+ let pluginJsonPresent = false
63
+ try {
64
+ if (statSync(pluginJson).isFile()) {
65
+ pluginJsonPresent = true
66
+ const parsed = JSON.parse(readFileSync(pluginJson, 'utf8')) as { version?: unknown }
67
+ if (typeof parsed.version === 'string' && parsed.version.length > 0) {
68
+ version = parsed.version
69
+ }
70
+ }
71
+ } catch {
72
+ pluginJsonPresent = false
73
+ }
74
+ out += 'tm executable:\n'
75
+ out += kv('path', tmWrapper)
76
+ out += kv('version', version)
77
+ if (!pluginJsonPresent) out += kv('note', `plugin.json not found at ${pluginJson}`)
78
+ out += '\n'
79
+
80
+ // --- dispatcher dir ---
81
+ out += 'dispatcher dir:\n'
82
+ out += kv('resolved', env.dispatcherDir)
83
+ const envSet = process.env.TM_DISPATCHER_DIR
84
+ if (envSet !== undefined && envSet.length > 0) {
85
+ out += kv('TM_DISPATCHER_DIR', `set (= ${envSet})`)
86
+ } else {
87
+ out += kv(
88
+ 'TM_DISPATCHER_DIR',
89
+ 'unset — falling back to $PWD (run /claudemux:setup to inoculate against cwd drift)',
90
+ )
91
+ }
92
+ const pwd = process.cwd()
93
+ out += kv('$PWD', pwd)
94
+ if (env.dispatcherDir !== pwd) {
95
+ out += kv(
96
+ 'status',
97
+ 'DIVERGED — dispatcher dir != $PWD; env override is currently keeping tm correct despite the drifted PWD',
98
+ )
99
+ } else {
100
+ out += kv('status', 'matched')
101
+ }
102
+ if (!isDirectory(env.dispatcherDir)) {
103
+ out += kv('warning', `${env.dispatcherDir} does not exist as a directory`)
104
+ }
105
+ out += '\n'
106
+
107
+ // --- tmux ---
108
+ out += 'tmux:\n'
109
+ let tmuxVersionOk = false
110
+ let tmuxVersionLine = ''
111
+ try {
112
+ const versionResult = await env.runTmux(['-V'])
113
+ if (versionResult.code === 0) {
114
+ tmuxVersionOk = true
115
+ tmuxVersionLine = versionResult.stdout.split('\n')[0] ?? '?'
116
+ }
117
+ } catch {
118
+ tmuxVersionOk = false
119
+ }
120
+ if (!tmuxVersionOk) {
121
+ out += kv('installed', 'no (tmux not on PATH — claudemux teammate workflow needs it)')
122
+ } else {
123
+ out += kv('installed', `yes (${tmuxVersionLine})`)
124
+ let serverRunning = false
125
+ try {
126
+ serverRunning = (await env.runTmux(['info'])).code === 0
127
+ } catch {
128
+ serverRunning = false
129
+ }
130
+ if (serverRunning) out += kv('server', 'running')
131
+ else out += kv('server', "not running (no sessions exist yet — that's fine pre-spawn)")
132
+ const insideTmux = process.env.TMUX ?? ''
133
+ if (insideTmux.length > 0) out += kv('in tmux', `yes (TMUX=${insideTmux})`)
134
+ else out += kv('in tmux', 'no — tm is being run from outside a tmux session')
135
+ }
136
+ out += '\n'
137
+
138
+ // --- idle dir ---
139
+ out += `idle dir (${idleDir()}):\n`
140
+ if (isDirectory(idleDir())) {
141
+ let count = 0
142
+ try {
143
+ count = readdirSync(idleDir()).length
144
+ } catch {
145
+ count = 0
146
+ }
147
+ out += kv('exists', `yes (${count} file(s))`)
148
+ } else {
149
+ out += kv('exists', 'no — gets created on first tm spawn / scripts/setup.sh')
150
+ }
151
+ out += '\n'
152
+
153
+ // --- active teammates ---
154
+ // `cmd_doctor` projects each `tmux ls` row to its session field and
155
+ // prints it with a two-space indent — bare session name, not the
156
+ // full row.
157
+ out += 'active teammates:\n'
158
+ const sessionRows = (await iterTeammates(env.runTmux)).map(
159
+ (name) => `${TMUX_SESSION_PREFIX}${name}`,
160
+ )
161
+ if (sessionRows.length === 0) {
162
+ out += " (none — use 'tm spawn <repo>' to launch one)\n"
163
+ } else {
164
+ out += kv('count', String(sessionRows.length))
165
+ for (const name of sessionRows) out += ` ${name}\n`
166
+ }
167
+ out += '\n'
168
+
169
+ // --- codex teammates ---
170
+ out += 'codex teammates:\n'
171
+ const codexNames = listCodexDaemons()
172
+ if (codexNames.length === 0) {
173
+ out += " (none — use 'tm spawn <name> --engine codex' to launch one)\n"
174
+ } else {
175
+ const reaped: string[] = []
176
+ const live: { name: string; pid: number; startedAt: number }[] = []
177
+ for (const name of codexNames) {
178
+ const state = readCodexState(name)
179
+ if (state === null) {
180
+ reaped.push(name)
181
+ await reapCodexDaemon(name)
182
+ removeCodexBaseRecord(name)
183
+ } else if (!codexProcessAlive(state.pid)) {
184
+ reaped.push(name)
185
+ await reapCodexDaemon(name)
186
+ removeCodexBaseRecord(name)
187
+ } else {
188
+ live.push({ name, pid: state.pid, startedAt: state.startedAt })
189
+ }
190
+ }
191
+ out += kv('count', String(live.length))
192
+ for (const t of live) {
193
+ out += ` ${t.name} (pid=${t.pid}, started ${fmtLocalDateTime(t.startedAt)})\n`
194
+ }
195
+ if (reaped.length > 0) {
196
+ out += kv('reaped orphans', String(reaped.length))
197
+ for (const name of reaped) out += ` ${name}\n`
198
+ }
199
+ }
200
+
201
+ return { code: 0, stdout: out, stderr: '' }
202
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * The environment a Claude-engine verb body needs at runtime. A subset
3
+ * of `NativeEnv` — only the fields the Claude bodies touch — so a
4
+ * future codex teammate registry change does not ripple through every
5
+ * verb module.
6
+ */
7
+
8
+ import type { ColumnRunner } from '../../column'
9
+ import type { TmuxRunner } from '../../tmux'
10
+
11
+ export interface ClaudeVerbEnv {
12
+ readonly runTmux: TmuxRunner
13
+ readonly runColumn: ColumnRunner
14
+ readonly dispatcherDir: string
15
+ readonly projectsDir: string
16
+ }